标准 ML 中的通配符
Wildcards in Standard ML
我刚刚在 ML for the Working Programmer 中遇到了以下函数:
fun null [] = true
| null (_::_) = false
1) 两个通配符不能都是空列表吗?如果不是,ML 如何防止这种情况?
2) 函数是否可以缩短为:
fun null [] = true
| false
为什么/为什么不?
感谢您的帮助,
克莱曼
是的,可以,但是匹配列表不会为空,所以null
函数的结果成立,即[] :: []
,等价于[[]]
,不是空列表。
不,这在语法上是无效的。但是,它可以缩短为:
fun null [] = true
| null _ = false
我刚刚在 ML for the Working Programmer 中遇到了以下函数:
fun null [] = true
| null (_::_) = false
1) 两个通配符不能都是空列表吗?如果不是,ML 如何防止这种情况?
2) 函数是否可以缩短为:
fun null [] = true
| false
为什么/为什么不?
感谢您的帮助, 克莱曼
是的,可以,但是匹配列表不会为空,所以
null
函数的结果成立,即[] :: []
,等价于[[]]
,不是空列表。不,这在语法上是无效的。但是,它可以缩短为:
fun null [] = true
| null _ = false