小编Jon*_*ent的帖子

Haskell中的Or模式

在OCaml中,我习惯于编写如下代码:

let combine o1 o2 = match o1, o2 with
    | Valid, Invalid | Invalid, Valid -> Invalid
    | _ -> ...
Run Code Online (Sandbox Code Playgroud)

我没有找到在Haskell中编写或模式的方法,我真的很想念它.有没有人有办法解决吗?

ocaml haskell

24
推荐指数
2
解决办法
1692
查看次数

在Haskell中左侧递归>> =

我刚读过这篇非常有趣的文章,关于Prompt Monad 的另一种实现:http://joeysmandatory.blogspot.com/2012/06/explaining-prompt-monad-with-simpler.html

这是一个可以运行的简化代码:

data Request a where
    GetLine  :: Request String
    PutStrLn :: String -> Request ()

data Prompt p r
     = forall a. Ask (p a) (a -> Prompt p r)
    | Answer r

instance Monad (Prompt p) where
    return              = Answer
    Ask req cont >>= k  = Ask req (\ans -> cont ans >>= k)
    Answer x >>= k      = k x

prompt :: p a -> Prompt p a
prompt req = …
Run Code Online (Sandbox Code Playgroud)

haskell

9
推荐指数
2
解决办法
219
查看次数

标签 统计

haskell ×2

ocaml ×1