Size: a a a

Elm Lang сообщество разработчиков

2017 October 26

Вл

В ладу in Elm Lang сообщество разработчиков
Arthur Welf
Писать на Хаскеле можно и не зная, что такое функторы, аппликативные функторы и монады. Но знание этих абстракций позволяет вам не писать множество бойлерплейт кода.
типа знание того что монада может выражать собой эффект и современное определение для слово эффект?
источник

Вл

В ладу in Elm Lang сообщество разработчиков
ну или например знание того что монада это субстанция
источник

AK

Anton Kotenko in Elm Lang сообщество разработчиков
раз так, я не понял, если в Хаскеле вводишь свой новый недетерминированный тип, ты же должен инстанс функтора и монады к нему описать в первую очередь?
источник

AK

Anton Kotenko in Elm Lang сообщество разработчиков
и проверить соответствие законам
источник

MP

Mike Potanin in Elm Lang сообщество разработчиков
Zheka Kozlov
Я могу доказать, почему Хаскель сложен:
потому что ленивость (всякие foldl' vs foldl, WHNF)
потому что HKT (новое для большинства людей)
Ленивость - это упрощение, а не усложнение (профилировать не приходится 😊). Функциональная программа, расчитанная на строгую семантику будет продолжать работать и в ленивой, но не наоборот. То есть о каких-то вещах программисту можно перестать думать.
источник

Вл

В ладу in Elm Lang сообщество разработчиков
Anton Kotenko
раз так, я не понял, если в Хаскеле вводишь свой новый недетерминированный тип, ты же должен инстанс функтора и монады к нему описать в первую очередь?
что значит недетерменированный тип?
источник

AW

Arthur Welf in Elm Lang сообщество разработчиков
Лично мне в Elm на практике пока не хватало двух вещей из Хаскеля:

1) Классов типов (чтобы сделать, например, comparable мой union type)

2) иногда ленивости, чтобы писать функции в стиле
fibonacciNumbers = 1 : 1 : zipWith (+) fibonacciNumbers (tail fibonacciNumbers)

Но, с другой стороны, отсутствие ленивости упрощало разработку в других вещах.
источник

AW

Arthur Welf in Elm Lang сообщество разработчиков
Anton Kotenko
раз так, я не понял, если в Хаскеле вводишь свой новый недетерминированный тип, ты же должен инстанс функтора и монады к нему описать в первую очередь?
1. Что такое недетерминированный тип?
2. Зачем вам нужно писать к нему инстансы функтора и монад?
источник

AK

Anton Kotenko in Elm Lang сообщество разработчиков
В ладу
что значит недетерменированный тип?
1. [], Maybe, IO, ..., всё что может не иметь значения после вычисления
источник

Вл

В ладу in Elm Lang сообщество разработчиков
сложная мысль
источник

AK

Anton Kotenko in Elm Lang сообщество разработчиков
2. Здесь так делают: http://learnyouahaskell.com/a-fistful-of-monads
источник

Вл

В ладу in Elm Lang сообщество разработчиков
а есть ли условие, что если тип детерменированный то инстансов функтора он иметь не может?
источник

AW

Arthur Welf in Elm Lang сообщество разработчиков
Ну и почему вы *обязаны* писать для них инстансы функтора и монад?
источник

AK

Anton Kotenko in Elm Lang сообщество разработчиков
вот я и спрашиваю, обязан ли я или право выбора имею? :)
источник

AW

Arthur Welf in Elm Lang сообщество разработчиков
нет, не обязаны
источник

I

Igor in Elm Lang сообщество разработчиков
Arthur Welf
Лично мне в Elm на практике пока не хватало двух вещей из Хаскеля:

1) Классов типов (чтобы сделать, например, comparable мой union type)

2) иногда ленивости, чтобы писать функции в стиле
fibonacciNumbers = 1 : 1 : zipWith (+) fibonacciNumbers (tail fibonacciNumbers)

Но, с другой стороны, отсутствие ленивости упрощало разработку в других вещах.
Часто фибочи в продакшене юзаешь, ну да ясно понятно 😒
источник

MP

Mike Potanin in Elm Lang сообщество разработчиков
Кстати, о comparable. А можно в пределах одного выражения использовать разные comparable-типы?
источник

AK

Anton Kotenko in Elm Lang сообщество разработчиков
Arthur Welf
нет, не обязаны
спасибо, это хорошо
источник

MP

Mike Potanin in Elm Lang сообщество разработчиков
Приерно так let f d1 k1 d2 k2 = (Dict.insert k1 1 d2, Dict.insert k2 1 d2) in f (Dict.insert "a" 2 Dict.empty) "b" (Dict.insert 2 3 Dict.empty) 4
источник

к

кана in Elm Lang сообщество разработчиков
Да и инстансы для функторов сами по себе выводятся автоматически
источник