分数の単純な抽象データ型を作成していますが、コンストラクターを機能させることさえできません。SML 構文で非常に迷っています。
signature fracs = sig
type fraction
exception zero_denominator
(* constructor *)
val // : int * int -> fraction
/*******************************************************************************************************************************************/
これは、実装しているコンストラクターを示す .sig ファイルです。これが私がこれまでに持っているものです。私が受け取ったエラーは、int*int-> Fraction が必要なときに int*int* -> int を実行しているということです。私はそれが言っていることとすべてを知っていますが、私はそれを実現することはできません.
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*)