标准ml分类3个元素

时间:2012-03-05 11:43:00

标签: list sorting standards sml ml

我正在尝试制作一个标准的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 :(得分:0)

更改类型时,您使用sort3的返回值时出错了。错误消息告诉您,您声明sort3返回实际值,而实际上它返回了一个实数列表。