1

入力として 3 つの要素を取り、最小から最大の順に並べ替えられた並べ替えられたリストを返す標準の ml 関数を作成しようとしています。min、max、および mid 要素を取得する 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)::[];

以下はintを扱うときに完全に機能しましたが、それらを実数に変更すると、ヘルパーメソッドは正しい結果を返しましたが、次のソートメソッドを入力するとエラーが発生しました(エラーテキストをコピーできなかったため、スクリーンショットを撮りました) :

ここに画像の説明を入力

コードで何が間違っている可能性がありますか? ありがとう

また、ここに投稿した方法以外に 3 つの要素を並べ替える別の方法はありますか?

4

1 に答える 1

0

タイプを変更するときに、の戻り値を間違えましたsort3。エラーメッセージはsort3、実数を返すことを宣言したことを示していますが、実際には実数のリストを返します。

于 2012-03-05T11:46:11.790 に答える