Я пытался понять функции более высокого порядка в SML. Я знаю, как писать простые функции более высокого порядка, а также понимать подпись. Одним из примеров является:Подпись функций более высокого порядка в SML
fun increment list = map (fn x=> x + 1) list;
val it = fn: int list -> int list
Однако, я не могу понять, подпись ниже функций высшего порядка:
fun add x y = x + y;
val add = fn: int -> int -> int
функция может быть записана как:
fun add (x,y) = x+y;
val add: fn : (int * int) -> int
, который я понимаю. Но в предыдущей функции я не понимаю, как работает порядок операций. Выполняет ли функция сразу два параметра, или же требуется один за другой, создавая новую функцию, которая затем производит требуемый результат? Как это работает для любой другой функции более высокого порядка?
Мне нужно построить концепцию о подписи функций более высокого порядка для моей домашней работы, а также моих экзаменов, которые появятся через несколько недель.
Да, например, когда вы вызываете 'add 2', вы должны думать об этом как о возврате функции' (fn y => 2 + y) ', которая получается просто путем замены всех вхождений' x' со значением '2'. – RasmusWL