相关疑难解决方法(0)

自由箭头的有用操作

我们知道免费的monad是有用的,像Operational这样的包可以很容易地定义新的monad,只关注特定于应用程序的效果,而不是monadic结构本身.

我们可以很容易地定义"自由箭头",类似于如何定义自由单子:

{-# LANGUAGE GADTs #-}
module FreeA
       ( FreeA, effect
       ) where

import Prelude hiding ((.), id)
import Control.Category
import Control.Arrow
import Control.Applicative
import Data.Monoid

data FreeA eff a b where
    Pure :: (a -> b) -> FreeA eff a b
    Effect :: eff a b -> FreeA eff a b
    Seq :: FreeA eff a b -> FreeA eff b c -> FreeA eff a c
    Par :: FreeA eff a? b? -> FreeA eff a? …
Run Code Online (Sandbox Code Playgroud)

generics haskell arrows

32
推荐指数
1
解决办法
2228
查看次数

标签 统计

arrows ×1

generics ×1

haskell ×1