haskell - 如何组合返回 Bool 的函数

标签 haskell

有没有办法将这些函数组合在一起?

data Patient = Patient
  { name :: Name,
    sex :: Sex,
    age :: Int,
    height :: Int,
    weight :: Int,
    bloodType :: BloodType
  }

canDonate :: BloodType -> BloodType -> Bool

canDonateTo :: Patient -> Patient -> Bool

目前我只是手动应用它们

canDonateTo :: Patient -> Patient -> Bool
canDonateTo x y = canDonate (bloodType x) (bloodType y)

但是,我想知道是否有更好的方法。

最佳答案

使用 Data.Function.on :

import Data.Function (on)

canDonateTo = canDonate `on` bloodType

(基本上,您的方法只是内联了 on 的定义,可以定义为

on f g x y = f (g x) (g y)

)

关于haskell - 如何组合返回 Bool 的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67621565/

相关文章:

haskell - 在 Haskell 中折叠,使用多个函数

python - 在 Elixir 中寻求 "send+more=money"的惯用、优雅的解决方案

haskell - 从当前工作目录导入模块

haskell - 从模块中重新导出函数

haskell - 如何使用 maybe 检测数独值

performance - Control.Lens 是否有性能开销?

c++ - `cabal repl` 导致带有 C++ 文件的简单项目出现 GHC panic

regex - Haskell:我应该费心编译正则表达式吗?

haskell - 非负整数

haskell - Haskell 是否支持部分应用函数的组合?