gpt4 book ai didi

javascript - folktale 有 IO monad 吗?

转载 作者:搜寻专家 更新时间:2023-11-01 05:29:56 24 4
gpt4 key购买 nike

我一直在探索 folktale库并找到了大量有用的结构。通过 control.async 使用任务后和 data.task ,我想使用 IO monad,但似乎找不到。鉴于民间故事的丰富程度,我很惊讶并想知道我是否只是没有看到它。

民间故事中有 IO monad 吗?

最佳答案

在 Haskell 中,IO monad 由运行时提供(并且固有地绑定(bind)到)。 Folktale 不提供运行时函数的等价物,但 Task 和 IO 的作用相同。 Haskell 中的 IO 操作可以是异步的,因此我们可以说它比例如 monet.js 中的 IO monad 更类似于 Haskell 的 IO。

一个区别是 Task 提供错误处理,而 IO monad 不提供。

您可以在 JS 中使用 Tasks 进行编程,就像在 Haskell 中使用 IO 操作进行编程一样。您只需要定义所有使用任务的非纯运行时函数。

例如,函数print , (print::Show a => a -> IO ()) 由 Haskell 运行时提供,它只打印其输入并且不返回任何内容。我们可以使用 tasks 在 JS 中编写类似的功能。它可能看起来像这样。

// Definition
const print = (input) => Task.task(r => {
console.log(String(input))
r.resolve(undefined)
})

// Usage
const main = Task.of("Hello world").chain(print)

关于javascript - folktale 有 IO monad 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33596471/

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