A
- это подпись, которую B
должен выполнить.В вашем контексте это означает, что вам нужно снова написать строку объявления:
module B : A = struct
type t = int
exception DivisionParZero
let f a b=
if (a==0) then raise DivisionParZero else b/a
end
Вы можете немного поэкспериментировать, вернув случайное значение вместо вызова исключения, и вы увидите, что компилятор сообщает вам, что вашреализация не соответствует подписи:
Error: Signature mismatch:
Modules do not match:
sig type t = int val f : int -> int -> int end
is not included in
A
The extension constructor `DivisionParZero' is required but not provided
File "test.ml", line 4, characters 2-27: Expected declaration