gpt4 book ai didi

haskell - 更改 Haskell 中函数的返回类型?

转载 作者:行者123 更新时间:2023-12-02 17:33:14 25 4
gpt4 key购买 nike

是否有一种简洁的方法来更改函数的返回类型?

考虑例如Data.Ord中进行比较。它返回一个Ordering。但我只对这两项是否相等感兴趣。因此,我需要将生成的 Ordering 转换为 Bool

我能想到的一个直接的方法是:

isEqualOn f x y = if comparing f x y==EQ then True else False 

(或 isEqualOn f x y = 比较 f x y==EQ,如评论中指出的那样)。

是否有一种更具组合性的方法来做到这一点(有点适应比较或以毫无意义的方式编写它)而不必写出所有内容?理想情况下,我正在寻找也适用于 n 元函数的东西。

--更新--

根据答案/评论的建议,上面的具体示例 (isEqualOn) 可以使用标准 on 函数作为 on (==)< 来实现。然而,我的问题是关于以组合/无意义的方式更改函数返回类型的一般技术,如评论中的 SEC 方法所示。

最佳答案

您对 isEqualOn 的定义与 on (==) 相同:

\> import Data.Function (on)
\> :t (on (==))
(on (==)) :: Eq a1 => (a -> a1) -> a -> a -> Bool

例如比较绝对值:

\> let isEqualOn = on (==)
\> isEqualOn abs 2 (-2)
True

关于haskell - 更改 Haskell 中函数的返回类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34778469/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com