fox*_*nut 4 javascript functional-programming folktale
我一直在探索民间故事库,并找到了大量有用的结构.通过control.async和data.task使用Tasks之后,我想使用IO monad,但似乎无法找到它.考虑到民间故事的丰富程度,我很惊讶并且想知道我是否只是没有看到它.
民间故事中是否有IO monad?
在Haskell中,IO monad由运行时提供(并且固有地绑定).Folktale不提供运行时功能的功能等价物,但是其他任务和IO用于相同的目的.Haskell中的IO操作可以是异步的,因此我们可以说它与Haskell的IO更相似,例如,monet.js中的IO monad.
一个区别是Task提供错误处理,而IO monad则没有.
您可以使用JS中的Tasks进行编程,方法与使用IO操作在Haskell中编程的方式相同.您只需要定义使用Tasks使用的所有不纯运行时函数.
例如,使用Haskell运行时提供的函数print(print :: Show a => a -> IO ()),该函数只打印其输入并且不返回任何内容.我们可以使用任务在JS中编写类似的函数.它可能看起来像这样.
// Definition
const print = (input) => Task.task(r => {
console.log(String(input))
r.resolve(undefined)
})
// Usage
const main = Task.of("Hello world").chain(print)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1077 次 |
| 最近记录: |