Вопрос

У меня был некоторый опыт работы с Haskell, а сейчас я изучаю Scala.Мне интересно, есть ли что-то эквивалентное монадам в Scala?

Это было полезно?

Решение

Вы, вероятно, захотите проверить Скалаз;на него сильно повлиял Haskell.Действительно, одного из основных участников часто спрашивали, почему они не только используя Haskell, поскольку им он, кажется, очень нравится!

Скалаз активно использует неявные выражения, чтобы украсить структуры их монадами.Например:

val fibs = (0, 1).iterate[Stream]( i => i._2 -> (i._2 + i._1) ).map(_._1)
println( fibs.take(10) )

Другие советы

Я думаю, стоит отметить, что «для понимания» в Scala эквивалентно монадическому «do» в Haskell.

И Option, и List являются монадами.Я также считаю, что левая и правая проекции Либо также являются монадами.

В стандартной библиотеке Scala нет явного понятия монады (нет соответствующего типажа/класса или класса типов).

Scala решает эту проблему специальным образом, см. Скала на примерераздел на для понимания для получения подробной информации.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top