Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

OCaml sub-module constrained by a sub-signature

Tags:

module

ocaml

I have a module Mod that is constrained by signature Sig. The module has a Nested sub-module. The signature has a matching Nested sub-signature:

module type Sig = sig
  val a : int
  module type Nested = sig
    val b : int
  end
end

module Mod : Sig = struct
  let a = 1
  module Nested = struct
    let b = 2
  end
end

However, this gives the following error:

Error: Signature mismatch: 
       Modules do not match: 
         sig val a : int module Nested : sig val b : int end end 
       is not included in 
         Sig 
       The field `Nested' is required but not provided

What am I missing?

like image 675
Vladimir Keleshev Avatar asked Mar 15 '23 00:03

Vladimir Keleshev


1 Answers

The way of declaring the nested module was wrong in your code :

module type Sig = sig 
    val a : int 
    module Nested : sig val b : int end 
  end

module Mod : Sig = struct
  let a = 1
 module Nested = struct 
   let b = 2 
 end
end

Look how the submodules are declaring in the following link : http://caml.inria.fr/pub/docs/oreilly-book/html/book-ora131.html

It helps me to fix your error.

like image 99
alifirat Avatar answered Mar 25 '23 03:03

alifirat