Я определил функцию, подобную следующей:
let ff (f1: a_function) (f2: a_function) (v0: type1) (v1: type2): type3 = ...
И другая функция, подобная следующей, работает:
let f: type1 -> type2 -> type3 = ff f1 f2
Но другое объявление, подобное следующему, не работает:
let f (v0: type1) (v1: type2): type3 = ff f1 f2
Сообщение об ошибке:
Error: This expression has type
type1 -> type2 -> type3
but an expression was expected of type type3
Я всегда думал, что let f: type1 -> type2 -> type3
совпадает с let f (v0: type1) (v1: type2): type3
.Может кто-нибудь сказать мне, почему первое объявление работает, но не второе?
Большое спасибо
PS1: Мой ключевой вопрос, учитывая let f (v0: type1) (v1: type2): type3 = ff f1 f2
, не 'т тип f
type1 -> type2 -> type3
?
Если let f (v0: type1) (v1: type2): type3 = ff f1 f2
и let f (v0: type1) (v1: type2): type3 = ff f1 f2
возвращают одинаковый тип f
, в чем разница между этими двумя сигнатурами?