OCaml - moduły

0

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.

0

A czy "różne typy liczby" posiadają operatory +,-,,/ ? Bo mnie się wydawało że w Ocamlu dla floatów masz .+, .-,.,./

0

Te operatory są już w konkretnej implementacji o nazwie MyINT, ja mówiłem o uniwersalności samej sygnatury - NUMBERS.

@@ dla potomnych: module MyINT : NUMBERS with type t = int = załatwia sprawę.

1 użytkowników online, w tym zalogowanych: 0, gości: 1