SML:创建抽象数据类型

时间:2012-04-03 02:25:03

标签: sml ml abstract-data-type

我正在为分数和分数编写一个简单的抽象数据类型 我甚至无法让构造函数工作,我只是迷失在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*)

1 个答案:

答案 0 :(得分:2)

在函数签名中,A * B表示包含AB两个元素的元组。但是在实现中,A * B表示两个整数之间的乘法。

你想要的是从两个整数中得到fraction值:

fun num // den = 
    if den = 0 then raise zero_denominator else frac(num, den)
相关问题