OCaml - moduły

TI
  • Rejestracja: dni
  • Ostatnio: dni
0

Witam. Mam problem z kawałkiem kodu, nie rozumiem, dlaczego nie jest poprawny.

Kopiuj
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.

Shalom
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Space: the final frontier
  • Postów: 26433
0

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

TI
  • Rejestracja: dni
  • Ostatnio: dni
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ę.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.