You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 19:25:22