F # Выражения вычислений позволяют скрыть сложность монадического синтаксиса за толстым слоем синтаксического сахара. Есть ли что-то подобное в Scala?
Я думаю, что это для понимания ...
Пример:
val f = for {
a <- Future(10 / 2) // 10 / 2 = 5
b <- Future(a + 1) // 5 + 1 = 6
c <- Future(a - 1) // 5 - 1 = 4
} yield b * c // 6 * 4 = 24
val result = f.get
Но на самом деле это не так. Есть ли лучший синтаксис?
Например, в Haskell у вас будет
main = do fromHandle <- getAndOpenFile "Copy from: " ReadMode
toHandle <- getAndOpenFile "Copy to: " WriteMode
contents <- hGetContents fromHandle
hPutStr toHandle contents
hClose toHandle
putStr "Done."
это в отличие от скалы не похоже на петли foreach.
Кажется, что у синтаксиса Scala слишком сильная связь с пониманием List, что является отдельной концепцией Что мешает мне писать внутренний DSL (монада), который не выглядит странно.