我正在为分数编写一个简单的抽象数据类型,我什至无法让构造函数工作,我只是对 SML 语法非常迷茫。
signature fracs = sig
type fraction
exception zero_denominator
(* constructor *)
val // : int * int -> fraction
/*******************************************************************************************************************************************/
这是显示我正在实现的构造函数的 .sig 文件。这是我到目前为止所拥有的。我收到的错误是当我想要 int*int-> 分数时我正在做 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*)