【发布时间】:2012-03-22 21:19:46
【问题描述】:
我正在尝试创建一个标准的 ml 函数,该函数将 3 个元素作为输入并返回一个从最小到最大排序的排序列表。我使用了 3 个辅助方法来获取最小、最大和中间元素。代码如下:
- 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)::[];
以下在处理整数时效果很好,但是当我将它们更改为实数时,辅助方法返回了正确的结果,但在键入以下排序方法时出现错误(无法复制错误文本,所以我拿了一个屏幕截图):
代码中可能有什么问题? 谢谢
另外,除了我在这里发布的方式之外,还有其他方式对 3 个元素进行排序吗?
【问题讨论】:
标签: list sorting standards sml ml