如何解决函数 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 中编写多行定义
例如
private ObservableCollection<CredentialPreviewAttribute> _attributes = new ObservableCollection<CredentialPreviewAttribute>();
public ObservableCollection<CredentialPreviewAttribute> Attributes
{
get
{
return _attributes;
}
set
{
this.RaiseAndSetIfChanged(ref _attributes,value);
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。