стандартная мл сортировка 3 элемента - PullRequest
1 голос
/ 05 марта 2012

Я пытаюсь создать стандартную функцию ml, которая принимает 3 элемента в качестве входных данных и возвращает отсортированный список, отсортированный от наименьшего к наибольшему.Я использовал 3 вспомогательных метода, которые дают мне элементы min, max и mid.коды приведены ниже:

- fun min3 (a, b, c):real = 
    if a < b andalso a < c then a
        else if b < a andalso b < c then b
        else c;

- fun mid3 (a, b, c):real = 
    if (a < b andalso a > c) orelse (a > b andalso a < c) then a
        else if (b < a andalso b > c) orelse (b > a andalso b < c) then b
        else c;

- fun max3 (a, b, c):real = 
    if a > b andalso a > c then a
    else if b > a andalso b > c then b
        else c;

- fun sort3 (a, b, c):real = 
    min3(a, b, c)::mid3(a, b, c)::max3(a, b, c)::[];

при работе с целыми числами отлично работает следующее, но когда я изменил их на действительные, вспомогательные методы вернули правильные результаты, но я получил ошибку при вводе метода сортировки, который являетсяследующее (не удалось скопировать текст ошибки, чтобы я сделал снимок экрана):

enter image description here

что может быть не так в коде?Спасибо

Кроме того, есть ли другой способ сортировки 3 элементов, кроме того, как я здесь разместил или нет?

1 Ответ

0 голосов
/ 05 марта 2012

При изменении типов вы допустили ошибку с возвращаемым значением sort3.Сообщение об ошибке говорит вам, что вы объявили sort3, чтобы вернуть реальное, а на самом деле он возвращает список реалов.

...