1
我只是碰到下面的函数进来ML的工作程序员:通配符在标准ML
fun null [] = true
| null (_::_) = false
1)不能同时使用通配符是空的名单?如果不是,ML如何防止这种情况发生?
2)可能的功能被缩短为:
fun null [] = true
| false
为什么/为什么不呢?
感谢您的帮助, bclayman
我只是碰到下面的函数进来ML的工作程序员:通配符在标准ML
fun null [] = true
| null (_::_) = false
1)不能同时使用通配符是空的名单?如果不是,ML如何防止这种情况发生?
2)可能的功能被缩短为:
fun null [] = true
| false
为什么/为什么不呢?
感谢您的帮助, bclayman
是的,他们可以,但匹配的列表将不会是空的,所以null
函数持有的结果,即[] :: []
,这相当于[[]]
,不是一个空的列表。
不,这在语法上是无效的。但是,它可以缩短到这一点:
fun null [] = true
| null _ = false
小的修正:其中两个通配符匹配空列表中的投入将是'[[]]'。用'[[],[]]'只有第一个通配符和空列表匹配 - 第二个匹配'[[]]'。 – sepp2k
@ sepp2k谢谢!你的确是对的。我相应地调整了我的答案。 –