2012-04-03 13 views
1

分数のための単純な抽象データ型を書いています。 コンストラクタを動作させることさえできません。SML構文ではほとんど失われてしまいます。SML:抽象データ型を作成する

signature fracs = sig 

type fraction 

exception zero_denominator 

(* constructor *) 
val // : int * int -> fraction 

/*******************************************************************************************************************************************/ 

これは、私が実装しているコンストラクタを示す.sigファイルです。 これまで私が持っていたことがあります。私が受け取ったエラーは、私がint * int * - > intをやっているということです - > int int * int-> fractionが必要なとき。私はその言葉とすべてを知っているが、私はそれを実現させることはできない。関数シグネチャで

structure fracs :> fracs = struct 

abstype fraction = frac of int * int 
with 

exception zero_denominator; 
(**********************************) 

(*constructor*) 
infix 8 //; 

fun num // den = if den = 0 then raise zero_denominator 

else 
    num * den; 

end;(*end ADT*) 

end;(*end struct*) 

答えて

2

A * BはタイプABの2つの要素を持つタプルを意味します。しかし、実装では、A * Bは2つの整数間の乗算を意味します。

fun num // den = 
    if den = 0 then raise zero_denominator else frac(num, den) 
+0

ああ:あなたが欲しい

は二つの整数からfraction値を作ることです!私は、ありがとう! – user1309382

関連する問題