我是一名新手,正在学习函数式编程和Haskell。以下定义有何问题还不确定:
在test.h中的函数定义
drop5 [a] = drop 5 [a]
尝试使用这个函数时,我遇到了程序错误。
$:load test.h
$drop5 [2,3,4,5,6,7,8]
Program error: pattern match failure: drop5 [2,3,4,5,6,7,8]
$:t drop5
drop5 :: [a] -> [a]
当我将定义更改为以下内容时,它可以正常工作;意思是它接受一个列表,并丢弃列表的前五个元素。
drop5 ns = drop 5 ns
在这种情况下,当我查看打印类型时,我看到:
$:t drop5
drop5 :: [a] -> [a]
我不确定为什么第一个定义和第二个不同?而“程序错误:模式匹配失败”错误的含义是什么?