В Java-команду приходит программист и предлагает переписать все на Scala. Команда посовещавшись отвечает: “забирай свои монадки и проваливай отсюда…”
- Материалы лекции
- Сила композиции (монады)
- Функторы, аппликативные функторы и монады в картинках, без картинок
- Understanding map and apply, Understanding bind, Using the core functions in practice
- Composition with an Either computation expression
- Железнодорожно-ориентированное программирование (расширенная версия с >=>)
- Выберите одно слово, заканчивающиеся на -able или -емый/емая, чтобы описать сущность монад
- Что общего у монадических типов Option, Seq, Task? Чем они отличаются?
- С помощью какой функции может быть выражена функциональная композиция для монадических типов?
- Как с помощью bind и return получить map?
- Как с помощью map и return получить bind?
- Как связаны побочные эффекты, ссылочная прозрачность и чистота функций? Почему в Haskell функции по-умолчанию чистые?
- Как сделать ранний возврат из функции в F# без использования исключений?
- Использовать Result Computation Expression для обработки ошибок калькулятора на F#. Программа не должна выбрасывать исключения.
- Добавить тесты на операции с типами int, float, double, decimal). Допустимо использовать несколько билдеров, inline-функций, дженерики вида ’ или ^ и другие возможности F#. Предпочтение следует отдать решениям с минимальным дублированием кода.