我是ML的新手,并且想通过以下方式使用案例表达式和模式匹配。
fun myFun(a,b) = myFun(a,b,[])
| myFun(a,b,c) = (*do something here*)
| myFun(a,b,d) = (*do something here as well*);
那么可以像本例中那样具有不同数量的参数吗?
谢谢。
答案 0 :(得分:3)
所有ML函数仅使用一个参数,即使该参数恰好是一个元组。
(ML程序员有时会说“多个”参数,用语有些许滥用。这并不意味着与其他语言完全相同,而“是否多个”更多地是视角问题而不是语法问题。)
定义中的所有子句也必须具有相同的类型,因此您的子句必须与其参数都具有相同的元组类型。
看起来您的目标是某些语言具有“默认参数”之类的东西,但是Standard ML中没有这种东西。