2012-03-27 20 views
0

私は整数型または実数型のデータ型を作成しました。型 "number"の2つの数値を追加する関数を作成する必要があります。そのような構文を定義する構文では、私は次のように試みたが、どれもうまくいかないようだ。 私が書いたコードは、次の、次のコードは、関数の型数であるように、Nを認識していることを確認するために、次のように書かれている:標準のmlデータ型関数

fun plus n:number = "type number"; 

fun plus n:I = "type int of number"; 

fun plus n:number.I = "type int of number"; 

が、どれも動作するようには思え、私は書いている構文であります正しいですか、それとも間違っていますか?私が書く おかげ

データ型番号は次のとおりです。

datatype number = 
    I of int 
| F of real; 

答えて

1

あなたの価値のコンストラクタIFに対してパターンマッチングをする必要があり、これはあなたに4例を与える適切な

fun plus (I a) (I b) = I (a+b) 
    | plus (I a) (F b) = ... 
    | etc... 

あるものは何でも。 numberrealにアンパックする小さなヘルパー関数をint - int以外のすべてを含むようにすると、2つのケースだけでももちろん実行できます。

+0

私は感謝します。セバスチャン –