民间故事有IO monad吗
Does folktale have an IO monad?
我一直在探索民间故事库,发现了大量有用的结构。在通过control.async和data.task使用Tasks后,我想使用IO monad,但似乎找不到。鉴于民间故事如此丰富,我很惊讶,想知道我是否只是没有看到它。
民间传说中有IO monad吗?
在Haskell中,IO monad由运行时提供(并固有地绑定到)。Folktale没有为运行时功能提供功能等价物,但任务和IO具有相同的用途。Haskell中的IO操作可以是异步的,所以我们可以说它甚至比monet.js中的IO monad更类似于Haskell的IO
一个区别是Task
提供了错误处理,而IO monad没有。
您可以在JS中使用Tasks进行编程,就像在Haskell中使用IO操作进行编程一样。您只需要定义使用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)
相关文章:
- 在自定义mean.io包中使用angular-chart.js作为依赖项
- YUI3 IO实用程序是否可以根据给定的内容类型标头值自动序列化数据
- Webpack/Rect:遵循egghead.io教程,但出现错误:您可能需要一个合适的加载程序来处理此文件类型
- 如何使用Socket.io将命令从客户端发送到服务器
- Webdriver.io pageObject模式-通过传递参数来定义元素选择器
- Socket.IO未定义变量
- Socket.io on Mozilla Rhino
- 如何在Ionic2测试版中包含Ionic.io服务
- socket.io发射三次
- AngularJS$q承诺使用socket.io
- Atom.io中AngularJS的方法完成
- 如何知道使用socket.io订阅/取消订阅频道
- 可以't连接客户端和服务器import.io
- 通过socket.io发射给特定的人
- 通过socket.io从浏览器流式传输视频
- 通过node.js和socket.io向特定用户发送数据
- 拖动&删除Fullcalendar.io资源-更新视图
- 使用webdriver io在可滚动元素内滚动
- Trigger.io Collaboration
- 民间故事有IO monad吗