Будучи новым для SML, используя SML NJ I признал это поведение функции:Поведение функции с анонимной функции в ее
- fun test g= fn x=>x;
val test : 'a -> 'b -> 'b = _fn
- test 1 2;
val it : int = 2
- test 1;
val it : '1 -> '1 = _fn
это так, что интерпретатор использует unit
в качестве типа данных для входного параметра г , если для вызова функции нет значения? Если да, то почему это происходит с g, а не с входным параметром для анонимной функции?
Я не понимаю, о чем вы просите. «Это так, что интерпретатор использует единицу в качестве типа данных для входного параметра g». Это неверно, он использует тип '' a'. Кроме того, при выполнении 'test 1' вы нарушаете ограничение [значение] (http://mlton.org/ValueRestriction). – Matt
Этот вопрос очень неясен. Результатом 'test 1' является функция. Вы можете применить его: 'it 2;' приведет к 'val it: int = 2'. – molbdnilo
О, хорошо спасибо @molbdnilo. Поскольку я очень новичок в SML, я этого не видел. Это просто объясняет мой вопрос. –