【发布时间】:2022-01-12 20:33:30
【问题描述】:
我有一组 Haskell IO 绑定调用,它们返回 Maybe Z、Maybe Y、Maybe Z,其中 X /= Y /= Z。
我想要一个返回 Just (X,Y,Z) 的函数,其中 ALL 都是 Just n,否则什么都没有。
一个简单的实现是
fn :: (Maybe x, Maybe y, Maybe z) -> Maybe (x,y,z)
fn (Just x, Just y, Just z) = Just (x,y,z)
fn _ = Nothing
但我想知道是否有更优雅的解决方案?也许是某种映射?
据我所知,比较常见的
let x = do x <- fn1
y <- fn2
z <- fn3
return (x,y,z) :: Maybe (X,Y,Z)
因为 fn1-3 受 IO 限制而无法工作?
谢谢。
【问题讨论】:
-
您是否尝试过“更常见”的方法?它奏效了吗?如果没有,出了什么问题?