检查Haskell中的推断类型时的非类型变量参数
我是哈斯克尔的新手。我自己实现了检查Haskell中的推断类型时的非类型变量参数,haskell,Haskell,我是哈斯克尔的新手。我自己实现了drop myDrop n xs = if n <= 0 || null xs then xs else myDrop (n - 1) (tail xs) 当您使用同一类型的两个不同参数调用函数时,不可能一个参数引发类型错误,另一个参数传递。所以这里发生了一些其他的事情 特别是, myDrop -2 [1,2,3] myDrop (-2) [1,2,3] 这不是你所期望的解释。是这样解释的 myD
drop
myDrop n xs = if n <= 0 || null xs
then xs
else myDrop (n - 1) (tail xs)
当您使用同一类型的两个不同参数调用函数时,不可能一个参数引发类型错误,另一个参数传递。所以这里发生了一些其他的事情 特别是,
myDrop -2 [1,2,3]
myDrop (-2) [1,2,3]
这不是你所期望的解释。是这样解释的
myDrop - (2 [1,2,3])
也就是说,用列表[1,2,3]
作为参数从myDrop
中减去调用的数字2
(作为函数)。换句话说,完全是胡说八道。这就是为什么类型错误看起来很奇怪
在Haskell中,负常量需要括号:
当您使用同一类型的两个不同参数调用函数时,不可能一个参数引发类型错误,另一个参数传递。所以这里发生了一些其他的事情 特别是,
myDrop -2 [1,2,3]
myDrop (-2) [1,2,3]
这不是你所期望的解释。是这样解释的
myDrop - (2 [1,2,3])
也就是说,用列表[1,2,3]
作为参数从myDrop
中减去调用的数字2
(作为函数)。换句话说,完全是胡说八道。这就是为什么类型错误看起来很奇怪
在Haskell中,负常量需要括号: