Я очень неопытен в ML, и я просто не могу понять это.Стандартная полиморфная сортировка ML
Начала вопрос
Полиморфной Сортировка
Эта функция выполняет вставки сортировку списка принимает в качестве аргументов функции сравнения меньше и список л элементов, отсортированных. Код компилируется и работает правильно:
fun sort(less, nil) = nil |
sort(less, a : : l) =
let
fun insert(a, nil) = a : : nil |
insert(a, b : : l) = if less(a,b) then a : : (b: : l)
else b : : insert(a, l)
in
insert(a, sort(less, l))
end;
Каков тип функции сортировки? Вкратце объясните, включая тип вставки вспомогательной функции. Вам не нужно запускать алгоритм ML на этот код; просто объясните, почему обычный программист ML ожидал, что код будет иметь этот тип. () Вопрос)
Я получил тип функции сортировки (запустив код в интерпретаторе SML), но я просто не могу получить вторую часть о вставке.
Тип функции сортировки:
val sort = fn : ('a * 'a -> bool) * 'a list -> 'a list
Любая помощь будет принята с благодарностью.
Если вы обнаружили тип' sort' в SML РЕПЛ почему вы не сделать то же самое для 'insert'? В любом случае - это выглядит как домашнее задание. Если это так, в тексте курса должно быть достаточно подробное обсуждение системы типов SML. Вы читали? Вы воспроизвели вопрос, но не задавали никаких вопросов по своему усмотрению, по крайней мере, не вопрос, который демонстрирует какие-либо усилия с вашей стороны. –
Я прочитал его, и я его не понимаю (вот почему я пришел сюда). Кроме того, я включил функцию вставки в компилятор, и я получил эту «забавную вставку (a, nil) = a :: nil | Вставка (a, b :: l) = если меньше (a, b), то a :: (b :: l) else b :: insert (a, l) ' – user3313728
Я набрал часть' fun insert' и он говорит: 'stdIn: 9.24-9.28 Ошибка: unbound variable или constructor: less' – user3313728