максимальное целое число и минимальное целое число в стандартных мл - PullRequest
4 голосов
/ 25 марта 2012

Я хочу использовать максимальное целое число и минимальное целое число от мл, но я не могу, я видел из библиотеки параметр типа int, как я могу его использовать?Я видел это здесь http://www.standardml.org/Basis/integer.html#SIG:INTEGER.minInt:VAL

Я хочу использовать его для создания функции max и min, каждый метод принимает список целых чисел, и я должен вернуть max и min соответственно.

Я пробовал следующие коды, но они не работали:

- fun max x = 
=   foldr (fn (a, b) => if a > b then a else b) INTEGER.minInt x;

- fun max x = 
=   foldr (fn (a, b) => if a > b then a else b) minInt x;

- fun max x = 
=   foldr (fn (a, b) => if a > b then a else b) Int.minInt x;

Кто-нибудь знает, как их использовать?

1 Ответ

5 голосов
/ 25 марта 2012

Int.minInt и Int.maxInt относятся к типу int option, а не int.

Это означает, что они могут быть либо в форме NONE, если не существует максимума (илиминимум) или в форме SOME v, где v - максимум (или минимум).

Существует множество способов получения значения из опции.

  • Сопоставление с образцом.
  • valOf, которое извлекает значение.(обратите внимание, возникает исключение, если задано NONE)
  • getOpt, которое извлекает значение и использует значение по умолчанию, если оно задано NONE.

Для этой конкретной проблемы, однако, вы можете сделать это без необходимости Int.minInt, если вы делаете какое-либо сопоставление с образцом на входе.Кроме того, не забудьте рассмотреть случай, когда ваш список ввода пуст.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...