小编Jos*_*per的帖子

这个monadic Haskell函数是否已经存在(或者是已知函数的简单组合)?

我是Haskell的初学者,但是在数学,特别是代数方面有很多背景,所以像"monad是endofunctors类别中的monoid"这样的陈述对我来说不是问题.

即便如此,我只是了解Haskell中monad的一部分,在学习过程中我发现自己编写了以下函数:

bindMap ::(Monad m) => [a -> m a] -> m a -> m a
bindMap (f:fs) s = bindMap fs (s >>= f)
bindMap _ s = s
Run Code Online (Sandbox Code Playgroud)

这完全符合我的目的,但它似乎是一个显而易见的功能,我认为我应该能够找到它或用一些简单的组合器来定义,或者(更有可能)我应该以不同的方式思考事物.

我最初使用类型签名编写它

[a -> [a]] -> [a] -> [a]
Run Code Online (Sandbox Code Playgroud)

这可能会更好地表明我所追求的目标.我们的想法是加入一系列功能

a -> [a]
Run Code Online (Sandbox Code Playgroud)

成为一个大功能.我在Sudoku解算器中使用它.如果您认为可能有更多相关背景,请告诉我.

monads haskell

3
推荐指数
2
解决办法
225
查看次数

标签 统计

haskell ×1

monads ×1