【发布时间】:2017-01-26 17:31:56
【问题描述】:
以下是我猜想的声明函数的一种方法(纠正我)&我想使用相同的样式做类似的事情,但它不起作用,为什么?
fun length nil = 0
| length (_::l') = 1 + (length l')
我想在不使用“case expression of”语法的情况下做到这一点。即如果函数 x 得到一个数字 3 然后返回 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 是一个参数,但我们有 |所以我很困惑!
【问题讨论】:
-
您发布的定义有什么问题? (阅读您正在使用的任何书籍中的模式匹配。)
-
这只是一个简单的递归示例。这个函数的类型是'a list -> int。就是这样写的。
-
我的意思是你的功能。你说“它不工作”——这有什么问题?
-
对不起,我认为它正在工作。只是给出了我出现在那里的警告。
-
谢谢。我不知道为什么我之前没有看到。
标签: functional-programming sml ml