函数 len 中的非详尽模式
Non-exhaustive patterns in function len
我正在编写这个函数 len,它计算 GHCi 中列表的长度。
len [] = 0
len [x] = 1
len (x:xs) = 1 + len xs
我试图用 []
作为参数调用该函数,但错误 Exception: Non-exhaustive patterns in function len
击中了我。我不是已经在函数定义中包含了空列表吗?
正如 chi 在评论中所说,GHCi 不是那样工作的。
您可以在 GHCi 中使用分号输入多部分定义,如下所示:
len [ ] = 0 ; len (x:xs) = 1 + len xs
(单项列表的情况由第二部分处理,因为 [x] == x : []
)
扩展 Paul 的回答,您还可以使用 :{, :}
在 ghci 中编写多行定义
例如
:{
len [] = 0
len (x:xs) = 1 + len xs
:}
我正在编写这个函数 len,它计算 GHCi 中列表的长度。
len [] = 0
len [x] = 1
len (x:xs) = 1 + len xs
我试图用 []
作为参数调用该函数,但错误 Exception: Non-exhaustive patterns in function len
击中了我。我不是已经在函数定义中包含了空列表吗?
正如 chi 在评论中所说,GHCi 不是那样工作的。
您可以在 GHCi 中使用分号输入多部分定义,如下所示:
len [ ] = 0 ; len (x:xs) = 1 + len xs
(单项列表的情况由第二部分处理,因为 [x] == x : []
)
扩展 Paul 的回答,您还可以使用 :{, :}
在 ghci 中编写多行定义例如
:{
len [] = 0
len (x:xs) = 1 + len xs
:}