Witam. Mam problem z kawałkiem kodu, nie rozumiem, dlaczego nie jest poprawny.
module type NUMBERS =
sig
type t
val plus: t * t -> t
val minus: t * t -> t
val mult: t * t -> t
val div: t * int -> t
val equals: t * t -> bool
end;;
module MyINT : NUMBERS =
struct
type t = int
let plus(x,y) = x+y
let minus(x,y) = x-y
let mult(x,y) = x*y
let div(x,y) = x/y
let equals(x,y) = x=y
end;;
MyINT.plus(8,9);;
Przy takim wywołaniu otrzymuję błąd typów. Natomiast gdy w sygnaturze dopiszę do definicji typu : type t = int, to wszystko działa. Tylko takie rozwiązanie nie jest dla mnie satysfakcjonujące, gdyż ta sygnatura z założenia powinna być uniwersalna dla różnych typów liczb. Z góry dziękuję za pomoc.