使用以下 zipWith 表达式:
zipWith3 (\foos bars bazs -> case (foos, bars, bazs) of
(foo, bar, Just baz) -> Right "hell yeah"
(foo, bar, Nothing) -> Left "tough luck"
) ["foo1", "foo2"] ["bar1", "bar2"] [Just "baz1", Just "baz2"]
是否可以使用类似(不编译)LambdaCase
来简化表达式:case
zipWith3 (\case
(foo, bar, Just baz) -> Right "hell yeah"
(foo, bar, Nothing) -> Left "tough luck"
) ["foo1", "foo2"] ["bar1", "bar2"] [Just "baz1", Just "baz2"]
在第一个(工作)版本中,case
接收一个元组,但在(失败的)LambdaCase 版本中,似乎case
会接收三个参数而不是一个元组。我不知道这是否可以做这样的事情。