Добрался до Web:) А именно до Elm, который построен на идиоме функционального реактивного программирования. Это такой подход в котором с одной стороны функциональная чистота и декларативность, а с другой удобность построения интерактивного графического интерфейса. Вещи, которые могут изменятся, представляются в виде сигналов. А вся программа представляется в виде pure functional зависимостей между сигналами.
понеділок, 24 червня 2013 р.
неділя, 16 червня 2013 р.
Erlang: Dynamic vs Static
Имел как-то я неосторожность обмолвится, что Erlang — не совсем динамически типизирован, даже немножко статически.
Но давайте смотреть.
субота, 8 червня 2013 р.
Матан для лямбда-исчисления
Интересная и очень полезная вещь мне открылась в Haskell.
Разбираясь с Cont монадой, я не мог понять, почему первое приближение оператора bind в виде простой аппликации плохое, то есть:
m >>= f = m f
В принципе оно работало хорошо для некоторых случаев, а придумать сходу пример для которого это не работало бы, было сложно. Но несмотря на все плюсы простой аппликации, тип какой то странный получался (хотел быть рекурсивным), а правильная реализация такая:
m >>= f = \k -> m (\a -> f a k)
Мне хотелось быстро сравнить два подхода и понять предельно чисто, где кроется суть. Но как? И тут пришло просветление. Нужно как в матане перебрать все варианты аргументов и посмотреть какие будут результаты.