gpt4 book ai didi

scala - 等效于 Scala 中的 Haskell do-notation 或 F# 计算表达式?

转载 作者:行者123 更新时间:2023-12-04 12:49:18 25 4
gpt4 key购买 nike

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 "复制自:"ReadMode
toHandle <- getAndOpenFile "复制到:"WriteMode
内容 <- hGetContents fromHandle
hPutStr toHandle 内容
h关闭 handle
putStr "完成。"

这与 scala 不同,它看起来不像 foreach 循环。
Scala 语法似乎与列表理解有很强的耦合,这是一个独特的概念。这使我无法编写看起来并不奇怪的内部 DSL (monad)。

最佳答案

缺少的部分可能是 = 的使用是 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
d = b * c // 6 * 4 = 24
} yield d


val result = f.get

将两者巧妙地混合在一起 <-= ,您应该拥有所需的所有灵 active 。

关于scala - 等效于 Scala 中的 Haskell do-notation 或 F# 计算表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7479948/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com