小编mjk*_*aye的帖子

如何编写一个从集合中减去效果的purescript效果处理程序

PureScript by Example,在Eff Monad - > Handlers and Actions一节中声明"[一个效果]处理程序通常从集合中减去效果".但是,这些示例相当不透明,我无法弄清楚如何编写自己的处理程序来实现这一点.

具体来说,我正在使用purescript-aff和purescript-affjax.我想将runAff(来自purescript-aff)与get(来自purescript-affjax)结合使用.

问题是get使用Affjax monad,而runAff期望使用Aff monad.

Affjax定义为:

type Affjax e a = Aff (ajax :: AJAX | e) (AffjaxResponse a)
Run Code Online (Sandbox Code Playgroud)

Aff定义为:

foreign import data Aff :: # ! -> * -> *
Run Code Online (Sandbox Code Playgroud)

因此,我想编写一个具有以下类型的函数:

Affjax e a -> Aff e a
Run Code Online (Sandbox Code Playgroud)

在我看来,这需要一个减去ajax效果集部分的处理程序.如何编写这样的处理程序?

尝试进行模式匹配,如下所示,当然会导致错误unexpected |.

handleAffjax :: Affjax e a -> Aff e a
handleAffjax (Aff ( | eff1 ) resp1) = Aff …
Run Code Online (Sandbox Code Playgroud)

purescript

6
推荐指数
1
解决办法
996
查看次数

标签 统计

purescript ×1