В первую очередь, генетика (расшифровка, модификации, вплоть до синтеза генома) и биоинформатика, протезирование (в т. ч. 3d-печать тканей), нейроинтерфейсы, да хоть OpenConnectome. Первая расшифровка генома заняла 13 лет и несколько лярдов долларов, а спустя всего 10 лет любой может себе на 23andme заказать. 60 лет назад от грибка вымерли почти все бананы, а сейчас можно было бы успеть оперативненько ГМОдифицировать сорта. У крыс лазером регенерируют зубы из стволовой ткани. Китайцы готовятся тестировать технологию «трёх родителей». Это ли не парадигм шифт?
Из более теоретических областей – в эволюционной биологии дофига всего открылось и перевернулось, и даже там можно практичного накопать.
Вообще, есть такая особенность, что для человека со стороны действительно важные штуки могут казаться мелочью. Как и у нас, программистов – изобретение языков высокого уровня стало вполне себе прорывом, только поди это объясни неспециалисту. «И чё, как совали компьютеру дырявые картонки, так и суёте, нет бы с ним разговаривать, как у этого, как его, Азимова».
Если, к примеру, какое-либо существо живет миллион лет, потратить пару тысяч на полет с досветовой скоростью для него не серьезнее морского путешествия для нас.
Формально, удаление яичников — это кастрация. Почему в народе сложилась традиция называть удаление гонад у самок и самцов разными терминами — непонятно.
Смотрите. Какая-нибудь randomRIO (возьму функцию с явным аргументом, чтобы не конфликтовать по поводу терминологии и отличий значения от 0-арной функции) с типом :: Random a => (a, a) -> IO a абсолютно чистая, потому что для одного и того же аргумента с типом (а, а) она вернёт одно и то же значение типа IO a. В это значение завёрнута функция, которая принимает RealWorld (как тут уже объяснили в комментариях) и возвращает пару из значения типа a и нового RealWorld'а, и она тоже чистая, потому что для одинаковых состояний мира она вернула бы одну и ту же пару. Фича реализации типа IO в том, что эту копию состояния нельзя получить (в общем-то, как и в реальном мире :). И монада IO — не единственный вариант это обеспечить. Например, в Clean тоже все функции чистые, а невозможность копировать мир достигается при помощи уникальных типов. Похожий механизм, кажется, есть в Rust. А в старых, домонадических версиях хаскеля были явные функции, обрабатывавшие мир (точнее, приходящие от него события).
Но концептуально действительно схоже, с тем отличием, что тут мы выносим семантическую разницу в компайл-тайм. У Спольски неплохая статья есть про то, как не путать строки со столбцами (с примечанием переводчика «а давайте это за нас ещё и компилятор проверит») и как венгерская нотация получила свою печальную репутацию.
Из более теоретических областей – в эволюционной биологии дофига всего открылось и перевернулось, и даже там можно практичного накопать.
Вообще, есть такая особенность, что для человека со стороны действительно важные штуки могут казаться мелочью. Как и у нас, программистов – изобретение языков высокого уровня стало вполне себе прорывом, только поди это объясни неспециалисту. «И чё, как совали компьютеру дырявые картонки, так и суёте, нет бы с ним разговаривать, как у этого, как его, Азимова».
«Алгебраист» Иэна М. Бэнкса как раз про таких.
Функциональщина этого и не утверждает. Любая функция есть значение, но не любое значение — функция (и не любая конструкция языка — значение).