Я пишу простой абстрактный тип данных для фракций, и я даже не могу заставить конструктор работать, я просто очень запутался в синтаксисе 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*)