gpt4 book ai didi

haskell - 运算符作为 Haskell 中的参数

转载 作者:行者123 更新时间:2023-12-03 23:27:19 26 4
gpt4 key购买 nike

我对 Haskell 很陌生,可能是一个愚蠢的问题。
我想要的是给我的函数作为参数任何运算符。
例如:

myFunc :: a -> Int -> Int -> Boolean
myFunc operator a b = a operator b

*Project> myFunc (>) 5 2
True
*Project> myFunc (<=) 5 2
False

请帮助我建议如何做到这一点!

最佳答案

您可以使用 haskell 函数参数来做到这一点。
在上面的函数中,你想要 myFunc取一个需要两个 Int 的函数s 并返回 Bool (不是 Boolean ,你一定是打错了)。该函数的声明将是 (Int -> Int -> Bool) .因此,您可以编写:

myFunc :: (Int -> Int -> Bool) -> Int -> Int -> Bool
myFunc op a b = a `op` b

这定义了一个高阶函数,它接受一个带有两个 Int 的函数。返回 Bool 的参数(和两个 Int s)。您现在可以像使用任何其他函数参数一样使用它!

请注意,这与执行以下操作完全相同:
myFunc (#) a b = a # b

或者:
myFunc (%) a b = a % b

因为使用像 * 这样的中缀运算符或 / , 或任何仅由特殊字符组成的运算符,没有反引号只是使用它们的简写(键入 `/` 每次你想要分割的东西会很烦人!)。

关于haskell - 运算符作为 Haskell 中的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40033307/

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