Итак, давайте посмотрим, как будут выглядеть реализации:
first
let func1 i = fun j -> i+j
с подписью int -> (int -> int)
обратите внимание, что func1 2 3
не должноработа
РЕДАКТИРОВАТЬ: Оказывается, из-за того, как работает ассоциативность, это на самом деле хорошо
, но это отличается от
let func2 i j= i+j
, которыйимеет тип int -> int -> int
здесь func2 1 2
отлично
другой пример, который мы можем создать так:
let func4 a = a 1
это будет иметь подпись ('t->int) -> u
сбор бетона a
будет работать.Обратите внимание, что func4 1 2
точно не скомпилирует