我是Haskell的新手,我正在尝试使用monad。我读到了关于liftM2的内容,我想知道你是否可以使它成为可变的。
答案 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都是适用的)
等。值得研究这些类型以确定这些表达式的工作原理。