Haskell(a - > a - > Bool)函数定义

时间:2014-01-31 01:24:01

标签: haskell

我是haskell的新手,我在功能定义方面遇到了困难。在作业中我需要使用此功能

insort :: [a] -> (a -> a -> Bool) -> [a]
insort [] _     = []
insort (x : xs) f   =   ins x (insort xs f)
                        where
                        ins x []    = [x]
                        ins x (y : ys) =    if (f x y) 
                                            then x : y : ys
                                            else y : ins x ys

但我无法弄清楚如何使用它.. 对我来说似乎应该是:

insort [1,2,3,5,6] (4 > 3)

感谢您的帮助!

2 个答案:

答案 0 :(得分:6)

第二个参数应该是一个接受a -> a-> Bool的函数,比如说,大于。{1}。该函数将被调用列表中的每个元素。

您应该像以下一样使用它:

insort [1, 2, 3, 4, 5, 6] (>)

答案 1 :(得分:5)

insort的第二个参数类型为(a -> a -> Bool)。这是需要两个a并返回Bool的函数类型。此处aInt

表达式4 > 3(这只是(>) 4 3的语法糖)只是类型Bool。可怜的事。

您需要将(>)功能传递给insort

insort [1, 2, 3, 4, 5, 6] (>)