SML 中的函数声明?
Function Declaration in SML?
以下是声明函数的一种方法,我猜(纠正我)&我想使用相同的样式做类似的事情,但它不起作用,为什么?
fun length nil = 0
| length (_::l') = 1 + (length l')
我想在不使用 "case expression of" 语法的情况下执行此操作。即如果函数 x 得到一个数字 3 那么 return 0 否则如果它是 4 那么 1
fun x 3 = 0
| x (4) = 1
Here's the error
stdIn:58.5-59.12 Warning: match nonexhaustive
3 => ...
4 => ...
Q2) 另外,函数体从哪里开始?看起来 nil 是一个参数,但我们有 |所以我很困惑!
是带模式匹配的定义,意思和
一样
fun length ls = case ls of
nil => 0
| _::l' => 1 + (length l')
但更简洁易读。
您的函数收到警告,因为您只匹配 3
和 4
,没有匹配其他整数。
如果你写
你会得到同样的警告
fun x n = case n of
3 => 0
| 4 => 1
匹配所有可能的值将消除警告:
fun x 3 = 0
| x 4 = 1
| x _ = 2
以下是声明函数的一种方法,我猜(纠正我)&我想使用相同的样式做类似的事情,但它不起作用,为什么?
fun length nil = 0
| length (_::l') = 1 + (length l')
我想在不使用 "case expression of" 语法的情况下执行此操作。即如果函数 x 得到一个数字 3 那么 return 0 否则如果它是 4 那么 1
fun x 3 = 0
| x (4) = 1
Here's the error
stdIn:58.5-59.12 Warning: match nonexhaustive
3 => ...
4 => ...
Q2) 另外,函数体从哪里开始?看起来 nil 是一个参数,但我们有 |所以我很困惑!
是带模式匹配的定义,意思和
一样fun length ls = case ls of
nil => 0
| _::l' => 1 + (length l')
但更简洁易读。
您的函数收到警告,因为您只匹配 3
和 4
,没有匹配其他整数。
如果你写
你会得到同样的警告fun x n = case n of
3 => 0
| 4 => 1
匹配所有可能的值将消除警告:
fun x 3 = 0
| x 4 = 1
| x _ = 2