【发布时间】:2010-10-22 15:04:32
【问题描述】:
我刚刚编写了这个函数,它只接受第二个值在某个 monad 中的一对,然后“拉出 monad”以覆盖整个对。
unSndM :: Monad m => (a, m c) -> m (a, c)
unSndM (x, y) = do y' <- y
return (x, y')
是否有更好和/或更短或无点甚至标准的方式来表达这一点?
在 -XTupleSections 开启的情况下,我已经完成了以下操作...
unSndM' :: Monad m => (a, m c) -> m (a, c)
unSndM' (x, y) = y >>= return . (x,)
谢谢!
【问题讨论】:
-
标签规则
code-golf:stackoverflow.com/tags/code-golf/info -
很公平。该网站让我添加标签,但没有告诉我有与之相关的规则。 耸耸肩