我是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)
感谢您的帮助!
答案 0 :(得分:6)
第二个参数应该是一个接受a -> a-> Bool
的函数,比如说,大于。{1}。该函数将被调用列表中的每个元素。
您应该像以下一样使用它:
insort [1, 2, 3, 4, 5, 6] (>)
答案 1 :(得分:5)
insort
的第二个参数类型为(a -> a -> Bool)
。这是需要两个a
并返回Bool
的函数类型。此处a
为Int
。
表达式4 > 3
(这只是(>) 4 3
的语法糖)只是类型Bool
。可怜的事。
您需要将(>)
功能传递给insort
。
insort [1, 2, 3, 4, 5, 6] (>)