do-notation相关内容

为 Monad 脱糖 do-notation

在学习 Haskell 时,我意识到 do 符号只是语法糖: a = do x 翻译成 a = [3..4] >>= (\x -> [1..2] >>= (\_ -> return (x, 42))) 我意识到我可能会使用 do-notation,但我想了解翻译中发生了什么.所以纯粹出于教学原因,ghc/ghci 有没有办法为我用 do-notation 编写的相当复杂的 monad 提 ..
发布时间:2021-12-14 12:32:58 其他开发

let 语句中的 case 语句需要什么缩进?

在 Haskell 中工作,发现奇怪的行为,将其剥离为裸露的骨头 这个作品 a :: Boola = case True of真 ->真的错误 ->错误的 但是当我尝试时 b :: IO Boolb = 做让 b' = case True of真 ->真的错误 ->错误的返回 b' 我明白 ghci>:l test.hs[1 of 1] 编译 Main ( test.hs, 解释) ..
发布时间:2021-12-14 11:42:40 其他开发

在列表 monad 中使用 return 与不使用 return

我开始了我的 Grand Haskell Crusade (GHC :) ) 并且我对 monad 和 IO 函数有点困惑.谁能简单地解释一下这两个函数之间的区别是什么? f1 = do x 结果是: *Main>f1[1,2,2,3]*主要>f2[[1,2],[2,3]] 解决方案 这里的其他答案是正确的,但我想知道它们是否不是您所需要的......我会尽量保持简单,只有两点: ..
发布时间:2021-12-14 11:37:12 其他开发

'做'在Haskell构建

我正在尝试学习Haskell,并希望编写一个小程序,将文件内容打印到屏幕上。当我将其加载到GHCi时,我收到以下错误: 'do'结构中的最后一个语句必须是表达式 我知道这个问题已在这里提出: Haskell - ”'do'结构中的最后一个语句必须是表达式“。 即使我的代码非常相似,我仍然无法弄清楚问题。如果有人能指出我的问题,我会非常感激。 模块主要(主要)其中 im ..
发布时间:2018-08-24 18:04:03 其他开发

(>> =)的执行顺序不符合我的预期

我收到了一系列网络请求,每个请求都需要超过10秒。 为了让用户知道发生了什么,我给出了更新: $ b $ “ { - 网络请求 - } putStrLn”完成“ putStr”下载第一件东西“b main =下载第二件事......“ { - 网络请求 - } putStrLn”DONE“ GHCi的工作方式和预期一样,但是编译或者使用runghc,“Do ..
发布时间:2018-06-05 10:59:51 其他开发

Haskell做符号绑定

我试图在Haskell中解除do语句。我在这里找到了一些例子,但无法将它们应用于我的案例。 只有我能想到的是一个沉重的嵌套let语句,看起来相当难看。 语句应该用bind替换: p> do num nt1 nt2 return(节点号nt1 nt2) 任何输入值得高度赞赏=) 解决方案 numberNode x>> = \ num - > num ..
发布时间:2018-06-04 15:33:57 其他开发