Skip to content

Files

Homework5

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
Jul 5, 2023
Jul 5, 2023

Домашняя работа №5

Монадки

В Java-команду приходит программист и предлагает переписать все на Scala. Команда посовещавшись отвечает: “забирай свои монадки и проваливай отсюда…”

Теория

  1. Материалы лекции
  2. Сила композиции (монады)
  3. Функторы, аппликативные функторы и монады в картинках, без картинок
  4. Understanding map and apply, Understanding bind, Using the core functions in practice
  5. Composition with an Either computation expression
  6. Железнодорожно-ориентированное программирование (расширенная версия с >=>)

Вопросы к семинару

  1. Выберите одно слово, заканчивающиеся на -able или -емый/емая, чтобы описать сущность монад
  2. Что общего у монадических типов Option, Seq, Task? Чем они отличаются?
  3. С помощью какой функции может быть выражена функциональная композиция для монадических типов?
  4. Как с помощью bind и return получить map?
  5. Как с помощью map и return получить bind?
  6. Как связаны побочные эффекты, ссылочная прозрачность и чистота функций? Почему в Haskell функции по-умолчанию чистые?
  7. Как сделать ранний возврат из функции в F# без использования исключений?

Практика

  1. Использовать Result Computation Expression для обработки ошибок калькулятора на F#. Программа не должна выбрасывать исключения.
  2. Добавить тесты на операции с типами int, float, double, decimal). Допустимо использовать несколько билдеров, inline-функций, дженерики вида ’ или ^ и другие возможности F#. Предпочтение следует отдать решениям с минимальным дублированием кода.