У этой простой функции Haskell уже есть известное имя?

Я только что написал эту функцию, которая просто берет пару, второе значение которой находится в некоторой монаде, и «вытягивает монаду», чтобы покрыть всю пару.

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,)

Спасибо!

8
задан Bruce 3 May 2012 в 18:59
поделиться