案例表达式和“重载”参数计数

时间:2019-04-23 12:31:49

标签: pattern-matching sml ml case-expression

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

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

那么可以像本例中那样具有不同数量的参数吗?

谢谢。

1 个答案:

答案 0 :(得分:3)

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

(ML程序员有时会说“多个”参数,用语有些许滥用。这并不意味着与其他语言完全相同,而“是否多个”更多地是视角问题而不是语法问题。)

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

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