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謝謝!你的確是對的。我相應地調整了我的答案。 –