Haskell(a->;a->;Bool)函数定义
嗨,我是haskell的新手,我在函数定义方面遇到了困难。在作业中,我需要使用此函数Haskell(a->;a->;Bool)函数定义,haskell,Haskell,嗨,我是haskell的新手,我在函数定义方面遇到了困难。在作业中,我需要使用此函数 insort :: [a] -> (a -> a -> Bool) -> [a] insort [] _ = [] insort (x : xs) f = ins x (insort xs f) where ins x [] = [x]
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)
谢谢你的帮助 第二个参数应该是一个接受
a->a->Bool
的函数,比如大于。此函数将在列表中的每个元素中调用
您应该像这样使用它:
insort[1,2,3,4,5,6](>)
insort的第二个参数的类型为(a->a->Bool)
。这是一种函数类型,它接受两个a
,并返回一个Bool
。这里的a
是Int
表达式4>3
(它只是(>)43
)的语法糖)只是类型Bool
。可怜的家伙
您需要将(>)
函数传递到中
insort [1, 2, 3, 4, 5, 6] (>)
在[1,2,3,5,6](>)中有一个相关的问题:除了常量之外,还有其他函数吗。常量真值
和常量。const False
完成签名a->a->Bool
而无需进一步限定?在[1,2,3,4,5,6](4>3)
应该做的事情中,你感觉如何?@kqr No。对a
没有边界的参数函数根本无法查看给定的值,也没有其他可供决定的依据,因此,我们必须始终给出相同的答案。