haskell - 如何实现这个 Haskell 函数?

标签 haskell

不幸的是我无法实现这个功能我已经尝试了很多。

f5 :: (Either a b -> c) -> (a -> c, b -> c)

我试过了

f5 k _ (Left x)     =  k x
f5 _ u (Right y)    =  u y

提前感谢您的帮助。

最佳答案

你实现了

f5 :: (a -> c) -> (b -> c) -> Either a b -> c

你需要做相反的操作。

f5 :: (Either a b -> c) -> (a -> c, b -> c)
f5 f = (f . Left, f . Right)

关于haskell - 如何实现这个 Haskell 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53376111/

相关文章:

haskell - STM缺乏公平性,为什么阻塞的线程不能按照先进先出的顺序被唤醒?

haskell - 为什么 `guard` 没有用 MonadPlus 约束定义?

haskell - 使用 RankNTypes 编码的 System-F 自然数的 "case"运算符无法进行类型检查

haskell - 这个非常基本的函数声明有什么问题?

Haskell ST Monad : No instance for (MArray (STArray s) Int (ST s1))

haskell - 将非 monadic 函数绑定(bind)到 monad

haskell - 有没有更好的性能替代方案可以在 Haskell 中阅读和展示?

Haskell 反向代理问题

haskell - 创建类似于具有链式状态的 IO Monad 的 monad

haskell - 让 GHC 接受带有 KnownNat 算术的类型签名