Ну будем говорить, так что паттерны — это система типов базовой библиотеки. В ООП языках они одними генераторами строятся, а в FP другой — полиномиальный базис. Если кратко то есть всего две метатипа полиномиальных функторов: data и record или union и struct или деревья и их слагаемые с именоваными полями. И на этом всем уже растет FP и OOП, так как классы, структуры, интерфейсы и сигнатуры из ML — это надстройка над слагаемыми, типы классов — это тоже надстройка над рекордами, делегирование управления и уровни индирекшина, как говорят в ООП.
В некоторых языках нет слова data, например в таких как Erlang, но как мы знаем мы можем дату имитировать через кодату (это все виды кодировок, а кодировки как мы знаем всегда находятся в "дне" лямбда куба, нетипизированном исчислении) поэтому в эрланге мы свободно имитируем data (если нам нада), в основном работая с record как с базовым типом.
Лисперы убедились в свое время, что всего нужно 12 уровней индирекшина, чтобы писать софт. А сейчас тема такая, что оказывается что тректрейсы в продакшине могут ограничиваться до 5 или 4 уровней (как у меня) — и все это благодаря именно "функциональному паттерну" "композишин" и "абстракция" (как синоним функции). Конечно в ФП дофига паттернов, но так получилось, что эти паттерны все записаны в учебниках по алгебре. Так что ФП программсты просто перепечатывают запылившиеся книги :-)
Т.е. суть действительно в диком и чрезмерном упрощении. Как только базис твоих примитивов или форм языка сокращается до нужного минимум — все остальное отбрасывается или является украшениями этих двух или трех или пяти простых сущностей.
no subject
Date: 2016-04-26 03:57 pm (UTC)Тайпклассы кстати втопку.
no subject
Date: 2016-04-26 04:41 pm (UTC)а трэйты можно?
no subject
Date: 2016-04-26 04:45 pm (UTC)Чем, кстати, тайпклассы не удружили?
no subject
Date: 2016-04-26 08:44 pm (UTC)В ООП языках они одними генераторами строятся, а в FP другой — полиномиальный базис.
Если кратко то есть всего две метатипа полиномиальных функторов: data и record или union и struct или деревья и их слагаемые с именоваными полями. И на этом всем уже растет FP и OOП, так как классы, структуры, интерфейсы и сигнатуры из ML — это надстройка над слагаемыми, типы классов — это тоже надстройка над рекордами, делегирование управления и уровни индирекшина, как говорят в ООП.
В некоторых языках нет слова data, например в таких как Erlang, но как мы знаем мы можем дату имитировать через кодату (это все виды кодировок, а кодировки как мы знаем всегда находятся в "дне" лямбда куба, нетипизированном исчислении) поэтому в эрланге мы свободно имитируем data (если нам нада), в основном работая с record как с базовым типом.
Лисперы убедились в свое время, что всего нужно 12 уровней индирекшина, чтобы писать софт. А сейчас тема такая, что оказывается что тректрейсы в продакшине могут ограничиваться до 5 или 4 уровней (как у меня) — и все это благодаря именно "функциональному паттерну" "композишин" и "абстракция" (как синоним функции). Конечно в ФП дофига паттернов, но так получилось, что эти паттерны все записаны в учебниках по алгебре. Так что ФП программсты просто перепечатывают запылившиеся книги :-)
Т.е. суть действительно в диком и чрезмерном упрощении. Как только базис твоих примитивов или форм языка сокращается до нужного минимум — все остальное отбрасывается или является украшениями этих двух или трех или пяти простых сущностей.