Это продолжение моих старых вопросов:
Я знаю, что монады не компонуемы, т. е. если M1[_]
и M2[_]
являются монадами, то M2[M1[_]]
не обязательно является монадой. Например, List[Int]
и Option[Int]
являются монадами, но Option[List[Int]]
не является автоматически монадой, и поэтому мне нужен monad transformer
, чтобы использовать его как монаду (как в здесь)
Я знаю, что аппликативные функторы составимы. Я предполагаю, что это означает, что если A1[_]
и A2[_]
являются аппликативами, то A2[A1[_]]
всегда является аппликативом. Это правильно?
Не могли бы вы привести пример такой композиции, когда A1
равно List
, а A2
равно Option
? Не могли бы вы привести пример составления других аппликативов?