Dear Jacques:
    I was reading the manual of chap4, it says
tag-spec-full ::=`tag-name  [ of typexpr ]  { & typexpr }  
  typexpr 

    I don't follow the (&) operation here, it means intersection types ?

    I managed to make a working example:


          type 'a ab = [< `a|`b] as 'a ;;
          type 'a ac = 'a constraint 'a = [< `a | `c ]
          type ('a,'b) m = [< `m of 'a ab & 'a ac ] as 'b;;
          let u : ('a,'b) m = `m `a;;
          (* val u : ([ `a ], [ `m of [ `a ] ab ]) m = `m `a *)

   But still don't understand its use case, can you explain a bit about this?

Many thanks
--
Regards
-- Bob