Выражения регистра и подсчет параметров «перегрузки» - PullRequest
1 голос
/ 23 апреля 2019

Я новичок в 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 Ответ

3 голосов
/ 23 апреля 2019

Все функции ML принимают ровно один параметр, даже если этот параметр является кортежем.

(программисты ML иногда говорят о «множественных» параметрах, слегка злоупотребляя терминологией. Это не означает то же самое, что и в других языках, и то, что считается «множественным» или нет, является скорее вопросом перспективы, чемсинтаксис.)

Все предложения в определении также должны иметь одинаковый тип, поэтому все ваши предложения должны иметь тот же тип кортежа, что и их параметр.

Похоже, вы стремитесь к чему-токак "аргументы по умолчанию", которые есть в некоторых языках, но в Standard ML такого нет.

...