Haskell:Variadic monadic lift功能

时间:2015-07-15 22:11:31

标签: haskell functional-programming monads

我是Haskell的新手,我正在尝试使用monad。我读到了关于liftM2的内容,我想知道你是否可以使它成为可变的。

1 个答案:

答案 0 :(得分:1)

通常,您不能拥有可变参数Haskell函数,因为使用不同数量参数的函数具有非常不同的类型。

但是,liftM2使用Control.Applicative中可能感兴趣的运算符进行推广:

liftM2 f a b = f <$> a <*> b
liftM3 f a b c = f <$> a <*> b <*> c
liftM4 f a b c d = f <$> a <*> b <*> c <*> d

(从技术上讲,这仅适用于你的Monad也是适用的,但是从ghc 7.10起,所有Monad都是适用的)

等。值得研究这些类型以确定这些表达式的工作原理。