【问题标题】:SML: Creating Abstract Data TypesSML:创建抽象数据类型
【发布时间】:2012-04-03 02:25:03
【问题描述】:

我正在为分数和 我什至无法让构造函数工作,我只是对 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*)

【问题讨论】:

    标签: sml ml abstract-data-type


    【解决方案1】:

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

    你想要的是从两个整数中创建一个fraction 值:

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

    【讨论】:

    • 哦!明白了,非常感谢!
    猜你喜欢
    • 2018-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-12
    • 1970-01-01
    • 2020-09-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多