gpt4 book ai didi

haskell - 提示符下的单子(monad)?

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

是否可以在 GHCi 提示符下逐步与任意 Monad 实例交互?

您可以交互输入“do”命令:

Prelude> x <- return 5

但据我所知,一切都被迫进入 IO () Monad。如果我想与任意 Monad 交互怎么办?

我是否被迫在一个巨大的 do { ... } 中编写整个命令序列?和/或直接使用中缀运算符?没关系,但我更喜欢“输入”一个任意的单子(monad)并一次与它交互一行。

可能的?

最佳答案

就目前情况而言,IO - 特定行为依赖于 IO 的方式 Action 有点像状态和不可撤回的。所以你可以说像

s <- readFile "foo.txt"

并得到一个实际值 s :: String .

很明显,它需要的不仅仅是 Monad维持这种互动的结构。这不会那么容易
n <- [1, 2, 3]

说 n 有什么值。

人们当然可以想象调整 ghci 以打开一个提示,允许构建一元计算 do -style 在多个命令行交互中,在提示关闭时提供整个计算。目前尚不清楚检查中间值意味着什么(当然,除了为事件的单子(monad) m (IO ()) 生成类型为 m 的打印计算集合)。

但是问一下 IO 有什么特别之处会很有趣。可以隔离和概括使良好的交互式提示行为成为可能。我情不自禁地嗅到了关于提示交互的上下文值(value)故事的味道,但我还没有找到它。人们可能会想象通过考虑将光标置于可能值的空间中意味着什么来解决我的列表示例,方式为 IO。现实世界的此时此地强加了一个光标。谢谢你的思考。

关于haskell - 提示符下的单子(monad)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7024248/

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