Я пишу простой абстрактный тип данных для фракций и Я даже не могу заставить конструктор работать, я просто очень сильно потерял синтаксис SML.SML: Создание абстрактных типов данных
signature fracs = sig
type fraction
exception zero_denominator
(* constructor *)
val // : int * int -> fraction
/*******************************************************************************************************************************************/
Это файл .sig, показывающий конструктор, который я реализую. Вот что я до сих пор. ошибка, которую я получаю, заключается в том, что я делаю int * int * -> int , когда я хочу int * int-> fraction. Я знаю, что это за слово и все, но я просто не могу это сделать.
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*)
О! Понимаю, большое спасибо! – user1309382