我有以下兩個「功能」:is_three和SOMESML:構造函數和函數如何區分?
fun is_three(number) =
case numbers of
3 => true
| _ => false
當我在下面的兩個語句寫我得到這個:
is_three;
val it = fn : int -> bool
SOME;
val it = fn : 'a -> 'a option
從表面
他們都似乎是功能,這返回值。但是,如果我嘗試在一個case語句使用is_three我得到如下:
stdIn:20.9-20.19 Error: non-constructor applied to argument in pattern: is_three
fun are_threes(numbers) =
case numbers of
[] => true
| is_three(x)::xs => true andalso are_threes(xs)
- 的情況說明如何能區分什麼構造函數和最新的功能
- 爲什麼沒有的函數case語句允許嗎?
另一種選擇,我猜是把它留給運行時間而不是編譯時間。如果有兩個可以匹配的選項,則拋出一個運行時異常。 – Har
p.s.第二種情況下你的意思是4 + 2 = 6嗎? – Har
@哈是的。謝謝。 –