什么是 Eff 和 Aff?
What are Eff and Aff?
Purescript 类型之间的关系是什么Eff
and Aff
?是否可以相互转换?
我刚开始使用来自 Haskell 的 Purescript,这两种类型似乎都大致起到了 IO
在 Haskell 中的作用。这样说公平吗?
Eff
是同步效果单子。它用于对有效的外部 JavaScript 代码进行排序 - 例如随机数生成、读取和写入可变值、写入控制台以及抛出和捕获异常。
Aff
是一个异步效果 monad。它可以处理和排序有效的异步代码,例如 AJAX 请求、超时以及网络和文件 IO。它还可以通过使用 liftEff
来执行同步效果。它还提供了一个很好的错误处理机制。
可以使用 liftEff
从 Eff
转换为 Aff
(所有不暂停的都是允许暂停的实例),但另一个方向一般是不可能的。通过提供回调,Aff
操作可以在 Eff
上下文中 运行。
Haskell 的 IO
与两者相似,但比 Eff
更接近 Aff
,因为 IO
操作可以表示异步事物(请参阅threadDelay
例如)。
Purescript 类型之间的关系是什么Eff
and Aff
?是否可以相互转换?
我刚开始使用来自 Haskell 的 Purescript,这两种类型似乎都大致起到了 IO
在 Haskell 中的作用。这样说公平吗?
Eff
是同步效果单子。它用于对有效的外部 JavaScript 代码进行排序 - 例如随机数生成、读取和写入可变值、写入控制台以及抛出和捕获异常。
Aff
是一个异步效果 monad。它可以处理和排序有效的异步代码,例如 AJAX 请求、超时以及网络和文件 IO。它还可以通过使用 liftEff
来执行同步效果。它还提供了一个很好的错误处理机制。
可以使用 liftEff
从 Eff
转换为 Aff
(所有不暂停的都是允许暂停的实例),但另一个方向一般是不可能的。通过提供回调,Aff
操作可以在 Eff
上下文中 运行。
Haskell 的 IO
与两者相似,但比 Eff
更接近 Aff
,因为 IO
操作可以表示异步事物(请参阅threadDelay
例如)。