我正在从“真实世界哈斯克尔”做一些练习。一个是设计一个安全版本init :: [a] -> [a]
。[a]究竟代表什么?
我应该从safeInit :: [a] -> Maybe [a]
这是我的时刻开始。
safeInit :: [a] -> Maybe [a]
safeInit [] = Nothing
safeInit [a] = if length [a] <= 1
then Nothing
else Just (take (length [a] -1) [a])
在GCHI,测试safeInit [1,2]
当我收到错误消息
*异常:ch4exercise.hs:(21.1) - (24,44):非详尽的图案功能safeInit
我的印象是,[a]
只是代表的a
的(任意大小)的列表下。我究竟做错了什么?
作为模式匹配的'[a]'是字面上的一个元素列表。我想你可能是'xs'或'(x:xs)'的意思。尝试用'xs'或其他一些以小写字母开头的变量替换函数定义中的[[]](不是类型)。 –