[wg-camlp4] A new branch to experiment with extension points

Alain Frisch alain.frisch at lexifi.com
Mon Mar 4 17:57:05 GMT 2013


Current state of the SVN branch:

Attributes on expressions, module expressions, types, patterns, module 
type expressions:

   postfix syntax: ... [@id expr]
   prefix syntax:  [^id expr] ...

Extensions on the same categories:

   [#lid expr]


Attributes on constructor declarations (needed for constant 
constructors, in particular):

  type t =
    | A [@id expr] [@id expr]
    | B [@id expr] [@id expr] of ...



"Item" attributes:

  postfix syntax:   ... [@@id expr]
  prefix syntax:    [^^id expr] ...

  Currently available on most kind of declarations/statements in 
signatures (except class and class types), and on some kinds of 
declarations in structures (exception declaration, open, include, types)

Example of a signature:

   [^^doc section "My functions"] include sig
      [^^deprecated]
      val foo: int -> int [@@since "3.01"]

      type t = A [@default] | B of (int [@init 10]) * s
	  [@@sexp]
           [@@doc "A type with two constructors"]

      and  [^^deprecated] s = {x : int [@init 1]; y : int [@init 2]}
           [@@doc "A record type"]

      include S
      [@@doc inline]
   end


-- Alain


More information about the wg-camlp4 mailing list