Здравствуйте, Lazy Cjow Rhrr, Вы писали:
LCR>К сожалению, крупные примеры в функциональном стиле будут вряд ли интересны читателю, поэтому и ограничиваются примерами типа =take k . quicksort=.
А можно с этого места по подробнее. Мне почему-то все больше и больше кажется, что дело тут не в неинтересности "читателю", а в банальном отсуствии чего показать.
Стается мне, что эта отмазка (которую я слушу постоянно) такое же мошейничество как присловутый quicksort который может и красив, но никак не хочет работать с той же скоростью (даже близко), что императивный.
Другими словами — ФП отлично на микроуровне, когда нужно написать некий алгоритм, но вот средств композиции вепрхнего уровне у него нет. Модули не канают по сравненению с классами. Отсюда и появление такого количества гибридов ОО/Ф-языков.
LCR>Да, это закономерное впечатление. Более того сам Мартин утверждает, что в Скале лучше всего делать высокоуровневые объекты в соответствии с декомпозицией на объекты и обобщая классы до трейтов и миксинов, а их реализацию делать преимущественно в функциональном стиле. Примерно так и написан сам компилятор и стандартная библиотека — можешь глянуть исходники.
И что характерно — он не одинк. Эту точку зрения разделяет все больше и больше народу. Немерловцы тоже именно по такому пути проектировали свой компилятор. Интеграция тоже имеет такой же дизайн. Похоже это и есть сочетание лучших качеств двух миров.
LCR>Очень скользкая фраза... По причине выше, скорее всего на Скале будет мало чистых функциональных программ и всё ФП там представляет собой просто "сахарницу" средних размеров.
А кому нужны чистые фунциональные? Людям нужно писать программы проще, быстрее и удобнее.
LCR>В ФП паттерны часто являются просто ФВП. Ну вот fold — чем не паттерн? Или map-reduce? Или класс типов Monad?
Да, ничем не паттерны. Это библиотечные функции. Паттерн все же подразумевает не что больеше чем просто вызов фунции.
... << RSDN@Home 1.2.0 alpha rev. 637>>