我有一段代码,可以抽象地描述为:
foobar = do
foo <- getFoo
bar <- getBar
return $ foo ++ bar
字符串
感觉一定有一种很好的方法来组合合并foo
和bar
,而不需要四行do
表示法--我可以直接将一些中缀运算符应用于getFoo
和getBar
(也许指定(++)
作为组合函数,但考虑到结果是Monoid
,我真的不应该......)-但我找不到这样的东西。
我搜索了Hockey的Monad m => (a -> a -> a) -> m a -> m a -> m a
和Monad m, Monoid a => m a -> m a -> m a
,但一无所获。
是否有这样的合并功能/操作员?
2条答案
按热度按时间w80xi6nr1#
应用性标记法相当流行:
字符串
这自然地扩展到n元函数。表达式
f <$> action1 <*> ... <*> actionN
在以下假设下工作:型
在这种情况下
型
lndjwyie2#
您正在搜索的函数名为
liftA2
。使用方法如下:
字符串