Tôi vừa viết chức năng này mà chỉ cần lấy một cặp có giá trị thứ hai là trong một số đơn nguyên, và "kéo monad ra" để trang trải toàn bộ cặp.Chức năng Haskell đơn giản này đã có một cái tên nổi tiếng chưa?
unSndM :: Monad m => (a, m c) -> m (a, c)
unSndM (x, y) = do y' <- y
return (x, y')
Có cách nào tốt hơn và/hoặc ngắn hơn hoặc không có điểm hoặc thậm chí tiêu chuẩn để diễn đạt điều này không?
Tôi đã có như xa như sau, với -XTupleSections bật ...
unSndM' :: Monad m => (a, m c) -> m (a, c)
unSndM' (x, y) = y >>= return . (x,)
Cảm ơn!
Quy tắc của thẻ 'code-golf': http://stackoverflow.com/tags/code-golf/info – Nakilon
Đủ công bằng. Trang web cho phép tôi thêm thẻ mà không nói cho tôi biết có các quy tắc liên quan đến nó. * nhún vai * – gimboland