haskell - 简化高阶函数中的匿名函数

标签 haskell higher-order-functions

假设我有以下类型:

data Test = Test1 | Test2
            deriving (Eq, Show)

data TestDS = TestDS {
      testField1 :: String,
      testField2 :: Test
    } deriving (Eq, Show)

testFilter :: [TestDS] -> [TestDS]
testFilter tdata = filter (\x -> testField2 x == Test2) tdata

是否可以将上面的过滤函数转换为以下形式:

filter (Test2 == testField2) tdata

(上面的过滤函数当然会产生编译错误)

最佳答案

这是你想要的吗?

filter ((Test2 ==) . testField2) tdata

记住 (Test2 ==) 和 testField2 都是可以组合的函数。

关于haskell - 简化高阶函数中的匿名函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20698082/

相关文章:

haskell - 解析器示例不适合我

haskell - 与 Haskell 类型推断的混淆

haskell - ByteString 采用 ISO-8859-1?

function - 在 Maybe 类型上应用函数?

haskell - 在 Haskell 中实现 Smullyan 的算术鸟

javascript - 理解 Eloquent Javascript 偏函数

javascript - 怎么可能将参数传递给另一个同名函数中的内部函数?

ios - 如何从快速字典数组中获取所选键数组的值及其复杂性

android - 预览中不支持具有非默认参数的可组合函数,除非它们使用 @PreviewParameter 注释

Haskell:关于部分应用的问题