Haskell中使用Either拆解元组:leftRight函数功能解析
关于Haskell中
leftRight函数的解析 你的理解完全正确:leftRight的作用就是把一个接受Either a b类型参数的函数,拆分成两个独立的函数——元组左侧的函数接收a类型参数,右侧的接收b类型参数,最终把这两个函数打包返回。
代码实现
leftRight :: (Either a b -> c) -> (a -> c, b -> c) leftRight f = (f . Left, f . Right)
实现逻辑拆解
- 元组的第一个元素
f . Left:先将输入的a类型值用Left构造器包装成Either a b类型,再传递给原函数f处理,最终得到c类型结果。 - 元组的第二个元素
f . Right:同理,把输入的b类型值用Right构造器包装成Either a b后传给f,得到c类型结果。
实际使用示例
假设我们有一个处理Either Int String的函数:
showEither :: Either Int String -> String showEither (Left n) = "数字:" ++ show n showEither (Right s) = "字符串:" ++ s
用leftRight拆分后,就能得到两个单独处理Int和String的函数:
let (showInt, showStr) = leftRight showEither showInt 42 -- 输出 "数字:42" showStr "Haskell" -- 输出 "字符串:Haskell"
内容的提问来源于stack exchange,提问作者ipholie46
相关产品推荐
相关产品推荐

