1

我是 ML 新手,想通过以下方式使用案例表达式和模式匹配。

fun myFun(a,b) = myFun(a,b,[])
|   myFun(a,b,c) = (*do something here*)
|   myFun(a,b,d) = (*do something here as well*);

那么本例中给出的参数数量是否可能不同?

谢谢。

4

1 回答 1

3

所有 ML 函数都只采用一个参数,即使该参数恰好是一个元组。

(ML 程序员有时会说“多个”参数,稍微滥用术语。这与其他语言的含义并不完全相同,什么被认为是“多个”更多的是视角问题而不是语法问题。)

定义中的所有子句也必须具有相同的类型,因此您的子句都必须具有与其参数相同的元组类型。

看起来您的目标是某些语言具有的“默认参数”之类的东西,但标准 ML 中没有这样的东西。

于 2019-04-23T13:47:17.337 回答