2015-11-08 4 views

ответ

2

Во-первых, ML является функциональным языком, поэтому, если вы недостаточно разбираетесь в материале SML, вы все равно сможете получать полезную информацию из любых ссылок на функциональные языки. Особого внимания заслуживает чтение функций первого порядка и более высокого порядка. Однако это не вопрос ML (или SML), а вопрос функционального программирования.

С оговоркой, что мой функционал знания является, возможно, ржавый:

функция первого порядка, если его аргументы и значение результата как «данные», то есть не другие функции. Функция имеет более высокий порядок, если она принимает другую функцию в качестве параметра или возвращает функцию в качестве параметра.

Порядок функции более высокого порядка затем определяется как один из значений порядка его параметров или возвращаемого значения.

Тип функции int -> int описывает функцию, которая принимает int и выводит int. Таким образом, это первая функция порядка, с порядком 1.

Тип функции Int -> Int -> Int описывает функцию, которая принимает Int, и выводит (функцию, которая принимает Int и выводит Int), например мы можем переписать

int -> int -> int 

в

int -> (int -> int) 

Таким образом, выход из функции, которая принимает Int другая функция (первого порядка), как я описал выше.

Теперь мы знаем, что порядок параметра (int) равен 1 (это просто данные, а не функция), а порядок вывода (например, функция первого порядка int -> int) также 1, поэтому порядок целого типа функции int -> int -> int, следовательно, 1 + 1, например 2.

Аналогичного расширения следует, что порядок функции типа

int -> int -> int -> int 

является 3.

Смежные вопросы