On 31/07/07, Brian Hurt <bhurt@spnz.org> wrote:

So how do I use that module and say, in the type system, "I will never
pass in a b"?  This is where the void type comes in.  I can declare:

module Myreq = struct
        type a = whatever;;
        type b = void;;
end;;

module Myexample = Example(Myreq);;

Note that I can still call function Myexample.foo- I can call it with an
empty list, or with a list of as many A's as I want.  But it's impossible
for me to create a B element.

I am still not convinced about the usability of the void type... Why simply not declare type b as abstract?

module Myreq = struct
        type a = whatever
        type b
end

Essentially, it means the same, just less typing.

 - Tom