SML:创建抽象数据类型

SML:创建抽象数据类型,sml,ml,abstract-data-type,Sml,Ml,Abstract Data Type,我正在为分数和分数编写一个简单的抽象数据类型 我甚至不能让构造函数工作,我只是对SML语法非常迷茫 signature fracs = sig type fraction exception zero_denominator (* constructor *) val // : int * int -> fraction /********************************************************************************

我正在为分数和分数编写一个简单的抽象数据类型 我甚至不能让构造函数工作,我只是对SML语法非常迷茫

signature fracs = sig

type fraction

exception zero_denominator

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

/*******************************************************************************************************************************************/
这是显示我正在实现的构造函数的.sig文件。 这是我到目前为止所拥有的。我收到的错误是我在做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*)

在函数签名中,
A*B
表示具有两种类型的元素
A
B
的元组。然而在实现中,
A*B
意味着两个整数之间的乘法

您需要的是从两个整数中生成一个
分数
值:

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

哦我明白了,非常感谢!