Commits

Max Mouratov committed ed5a288 Draft

Documentation improvements

Comments (0)

Files changed (4)

-(* OASIS_START *)
-(* DO NOT EDIT (digest: add4071d118bc79106058394c244d908) *)
-This is the README file for the pa_comprehension distribution.
+================
+Pa_comprehension
+================
 
-Syntax extension for comprehension expressions
+Pa_comprehension implements the comprehension expression construct,
+using the Enum data structure from Batteries for the underlying machinery.
 
-See the files INSTALL.txt for building and installation instructions. See the
-file LICENSE.txt for copying conditions. 
+See the file INSTALL.txt for building and installation instructions.
+See the file LICENSE.txt for copying conditions.
 
-Home page: https://bitbucket.org/mrm/pa_comprehension
+Home page: https://bitbucket.org/cakeplus/pa_comprehension
 
 
-(* OASIS_STOP *)
+Syntax description
+==================
 
+The global form is "[? output | comp_item ; comp_item ; ... ?]". A comp_item
+is either a guard (a boolean expression), or a generator of the form "<patt>
+<- <expr>". Variables bound in the pattern can be used in the following
+comp_items, and in the output expression.
 
-Syntax description:
 
-   The global form is "[? output | comp_item ; comp_item ; ... ?]".
-   A comp_item is either a guard (a boolean expression), or
-   a generator of the form "<patt> <- <expr>" . Variables bound in
-   the pattern can be used in the following comp_items, and in the
-   output expression.
+Module parametrization
+======================
 
-   Both the output and the generator expression can be optionally
-   prefixed with a module specifier : "[? Module : output | ... ?]"
-   and "patt <- Module : expr". In the output position, it specifies
-   the data structure module (eg. List, Array...) used for the whole
-   comprehension value. In the generator position, it specifies the
-   data structure module corresponding to the generator expression,
-   eg. "p <- List : [1; 2; 3]". In the absence of module specifier,
-   the Enum module is choosed by default.
+Both the output and the generator expression can be optionally prefixed with
+a module specifier: "[? Module: output | ... ?]"  and "patt <- Module :
+expr". In the output position, it specifies the data structure module
+(eg. List, Array ...) used for the whole comprehension value. In the generator
+position, it specifies the data structure module corresponding to the
+generator expression, eg. "p <- List: [1; 2; 3]". In the absence of module
+specifier, the Enum module from Batteries is used by default.
 
-Example Input:
-  [? Array : pow p k | p <- 2--100; prime p; k <- List : (seq 1 (p - 1)) ?]
+Comprehension expressions rely on the presence of the following operations
+in the given module (where 'a t represents the data-structure type):
+
+   val filter     : ('a -> bool) -> 'a t -> 'a t
+   val concat     : 'a t t -> 'a t
+   val map        : ('a -> 'b) -> 'a t -> 'b t
+   val filter_map : ('a -> 'b option) -> 'a t -> 'b t
+     (* used for refutable patterns in generators *)
+
+   val enum       : 'a t -> 'a Enum.t
+   val of_enum    : 'a Enum.t -> 'a t
+
+If your module does not provide the first four operations but only the enum
+conversion functions, you could still benefit from the comprehension syntax
+by using eg. foo <- Mod.enum bar instead of foo <- Mod: bar.
+
+
+Example
+=======
+
+Input:
+
+  [? Array: pow p k | p <- 2--100; prime p; k <- List: (seq 1 (p - 1)) ?]
 
 Output:
+
   Array.of_enum
    (Enum.concat
      (Enum.map
-OASISFormat:  0.3
-OCamlVersion: >= 3.11
-Name:         pa_comprehension
-Version:      0.4
-Synopsis:     Syntax extension for comprehension expressions
-Authors:      Nicolas Pouillard, David Teller, Gabriel Scherer
-Maintainers:  Max Mouratov
-License:      LGPL-2.1 with OCaml linking exception
-LicenseFile:  LICENSE.txt
-Plugins:      StdFiles (0.2), DevFiles (0.2), META (0.2)
-BuildTools:   ocamlbuild, camlp4
-Homepage:     https://bitbucket.org/mrm/pa_comprehension
+OASISFormat      : 0.3
+OCamlVersion     : >= 3.11
+Name             : pa_comprehension
+Version          : 0.4
+Synopsis         : Syntax extension for comprehension expressions
+Authors          : Nicolas Pouillard, David Teller, Gabriel Scherer
+Maintainers      : Max Mouratov
+License          : LGPL-2.1 with OCaml linking exception
+LicenseFile      : LICENSE.txt
+Plugins          : StdFiles (0.2), DevFiles (0.2), META (0.2)
+XStdFilesREADME  : false
+BuildTools       : ocamlbuild, camlp4
+Homepage         : https://bitbucket.org/cakeplus/pa_comprehension
+
+Description:
+  Pa_comprehension implements the comprehension expression construct,
+  using the Enum data structure from Batteries for the underlying machinery.
 
 Library pa_comprehension
-  Path:               src
-  Modules:            Pa_comprehension
-  FindlibName:        pa_comprehension
-  BuildDepends:       camlp4.lib, camlp4.quotations, camlp4.extend
-  CompiledObject:     byte
-  XMETAType:          syntax
-  XMETARequires:      camlp4, batteries
+  Path           : src
+  Modules        : Pa_comprehension
+  FindlibName    : pa_comprehension
+  BuildDepends   : camlp4.lib, camlp4.quotations, camlp4.extend
+  CompiledObject : byte
+  XMETAType      : syntax
+  XMETARequires  : camlp4, batteries
+
+SourceRepository this
+  Type           : hg
+  Location       : https://bitbucket.org/cakeplus/pa_comprehension
+  Tag            : 0.4
 (* OASIS_START *)
-(* DO NOT EDIT (digest: cda9273f166d48b07c77683624e4fcc2) *)
+(* DO NOT EDIT (digest: 9c1dfd2bfe43134caabb38da1f2cf3ed) *)
 module OASISGettext = struct
-(* # 21 "/home/mrm/.opam/system/build/oasis.0.3.0/src/oasis/OASISGettext.ml" *)
+(* # 21 "/home/mrm/.opam/4.00.1/build/oasis.0.3.0/src/oasis/OASISGettext.ml" *)
 
   let ns_ str =
     str
 end
 
 module OASISExpr = struct
-(* # 21 "/home/mrm/.opam/system/build/oasis.0.3.0/src/oasis/OASISExpr.ml" *)
+(* # 21 "/home/mrm/.opam/4.00.1/build/oasis.0.3.0/src/oasis/OASISExpr.ml" *)
 
 
 
 
 # 117 "myocamlbuild.ml"
 module BaseEnvLight = struct
-(* # 21 "/home/mrm/.opam/system/build/oasis.0.3.0/src/base/BaseEnvLight.ml" *)
+(* # 21 "/home/mrm/.opam/4.00.1/build/oasis.0.3.0/src/base/BaseEnvLight.ml" *)
 
   module MapString = Map.Make(String)
 
 
 # 215 "myocamlbuild.ml"
 module MyOCamlbuildFindlib = struct
-(* # 21 "/home/mrm/.opam/system/build/oasis.0.3.0/src/plugins/ocamlbuild/MyOCamlbuildFindlib.ml" *)
+(* # 21 "/home/mrm/.opam/4.00.1/build/oasis.0.3.0/src/plugins/ocamlbuild/MyOCamlbuildFindlib.ml" *)
 
   (** OCamlbuild extension, copied from 
     * http://brion.inria.fr/gallium/index.php/Using_ocamlfind_with_ocamlbuild
 end
 
 module MyOCamlbuildBase = struct
-(* # 21 "/home/mrm/.opam/system/build/oasis.0.3.0/src/plugins/ocamlbuild/MyOCamlbuildBase.ml" *)
+(* # 21 "/home/mrm/.opam/4.00.1/build/oasis.0.3.0/src/plugins/ocamlbuild/MyOCamlbuildBase.ml" *)
 
   (** Base functions for writing myocamlbuild.ml
       @author Sylvain Le Gall
   type name = string 
   type tag = string 
 
-(* # 56 "/home/mrm/.opam/system/build/oasis.0.3.0/src/plugins/ocamlbuild/MyOCamlbuildBase.ml" *)
+(* # 56 "/home/mrm/.opam/4.00.1/build/oasis.0.3.0/src/plugins/ocamlbuild/MyOCamlbuildBase.ml" *)
 
   type t =
       {
 (* setup.ml generated for the first time by OASIS v0.3.0 *)
 
 (* OASIS_START *)
-(* DO NOT EDIT (digest: 1b0ce8fb1ea8210e6b5b4b37dc4495ad) *)
+(* DO NOT EDIT (digest: d856512860d2b2a43cdb884d5a95297a) *)
 (*
    Regenerated by OASIS v0.3.0
    Visit http://oasis.forge.ocamlcore.org for more information and
    documentation about functions used in this file.
 *)
 module OASISGettext = struct
-(* # 21 "/home/mrm/.opam/system/build/oasis.0.3.0/src/oasis/OASISGettext.ml" *)
+(* # 21 "/home/mrm/.opam/4.00.1/build/oasis.0.3.0/src/oasis/OASISGettext.ml" *)
 
   let ns_ str =
     str
 end
 
 module OASISContext = struct
-(* # 21 "/home/mrm/.opam/system/build/oasis.0.3.0/src/oasis/OASISContext.ml" *)
+(* # 21 "/home/mrm/.opam/4.00.1/build/oasis.0.3.0/src/oasis/OASISContext.ml" *)
 
   open OASISGettext
 
 end
 
 module OASISString = struct
-(* # 1 "/home/mrm/.opam/system/build/oasis.0.3.0/src/oasis/OASISString.ml" *)
+(* # 1 "/home/mrm/.opam/4.00.1/build/oasis.0.3.0/src/oasis/OASISString.ml" *)
 
 
 
 end
 
 module OASISUtils = struct
-(* # 21 "/home/mrm/.opam/system/build/oasis.0.3.0/src/oasis/OASISUtils.ml" *)
+(* # 21 "/home/mrm/.opam/4.00.1/build/oasis.0.3.0/src/oasis/OASISUtils.ml" *)
 
   open OASISGettext
 
 end
 
 module PropList = struct
-(* # 21 "/home/mrm/.opam/system/build/oasis.0.3.0/src/oasis/PropList.ml" *)
+(* # 21 "/home/mrm/.opam/4.00.1/build/oasis.0.3.0/src/oasis/PropList.ml" *)
 
   open OASISGettext
 
     let clear t =
       Hashtbl.clear t
 
-(* # 71 "/home/mrm/.opam/system/build/oasis.0.3.0/src/oasis/PropList.ml" *)
+(* # 71 "/home/mrm/.opam/4.00.1/build/oasis.0.3.0/src/oasis/PropList.ml" *)
   end
 
   module Schema =
 end
 
 module OASISMessage = struct
-(* # 21 "/home/mrm/.opam/system/build/oasis.0.3.0/src/oasis/OASISMessage.ml" *)
+(* # 21 "/home/mrm/.opam/4.00.1/build/oasis.0.3.0/src/oasis/OASISMessage.ml" *)
 
 
   open OASISGettext
 end
 
 module OASISVersion = struct
-(* # 21 "/home/mrm/.opam/system/build/oasis.0.3.0/src/oasis/OASISVersion.ml" *)
+(* # 21 "/home/mrm/.opam/4.00.1/build/oasis.0.3.0/src/oasis/OASISVersion.ml" *)
 
   open OASISGettext
 
 end
 
 module OASISLicense = struct
-(* # 21 "/home/mrm/.opam/system/build/oasis.0.3.0/src/oasis/OASISLicense.ml" *)
+(* # 21 "/home/mrm/.opam/4.00.1/build/oasis.0.3.0/src/oasis/OASISLicense.ml" *)
 
   (** License for _oasis fields
       @author Sylvain Le Gall
 end
 
 module OASISExpr = struct
-(* # 21 "/home/mrm/.opam/system/build/oasis.0.3.0/src/oasis/OASISExpr.ml" *)
+(* # 21 "/home/mrm/.opam/4.00.1/build/oasis.0.3.0/src/oasis/OASISExpr.ml" *)
 
 
 
 end
 
 module OASISTypes = struct
-(* # 21 "/home/mrm/.opam/system/build/oasis.0.3.0/src/oasis/OASISTypes.ml" *)
+(* # 21 "/home/mrm/.opam/4.00.1/build/oasis.0.3.0/src/oasis/OASISTypes.ml" *)
 
 
 
 
   type plugin_data = (all_plugin * plugin_data_purpose * (unit -> unit)) list
 
-(* # 102 "/home/mrm/.opam/system/build/oasis.0.3.0/src/oasis/OASISTypes.ml" *)
+(* # 102 "/home/mrm/.opam/4.00.1/build/oasis.0.3.0/src/oasis/OASISTypes.ml" *)
 
   type 'a conditional = 'a OASISExpr.choices 
 
 end
 
 module OASISUnixPath = struct
-(* # 21 "/home/mrm/.opam/system/build/oasis.0.3.0/src/oasis/OASISUnixPath.ml" *)
+(* # 21 "/home/mrm/.opam/4.00.1/build/oasis.0.3.0/src/oasis/OASISUnixPath.ml" *)
 
   type unix_filename = string
   type unix_dirname = string
 end
 
 module OASISHostPath = struct
-(* # 21 "/home/mrm/.opam/system/build/oasis.0.3.0/src/oasis/OASISHostPath.ml" *)
+(* # 21 "/home/mrm/.opam/4.00.1/build/oasis.0.3.0/src/oasis/OASISHostPath.ml" *)
 
 
   open Filename
 end
 
 module OASISSection = struct
-(* # 21 "/home/mrm/.opam/system/build/oasis.0.3.0/src/oasis/OASISSection.ml" *)
+(* # 21 "/home/mrm/.opam/4.00.1/build/oasis.0.3.0/src/oasis/OASISSection.ml" *)
 
   open OASISTypes
 
 end
 
 module OASISBuildSection = struct
-(* # 21 "/home/mrm/.opam/system/build/oasis.0.3.0/src/oasis/OASISBuildSection.ml" *)
+(* # 21 "/home/mrm/.opam/4.00.1/build/oasis.0.3.0/src/oasis/OASISBuildSection.ml" *)
 
 end
 
 module OASISExecutable = struct
-(* # 21 "/home/mrm/.opam/system/build/oasis.0.3.0/src/oasis/OASISExecutable.ml" *)
+(* # 21 "/home/mrm/.opam/4.00.1/build/oasis.0.3.0/src/oasis/OASISExecutable.ml" *)
 
   open OASISTypes
 
 end
 
 module OASISLibrary = struct
-(* # 21 "/home/mrm/.opam/system/build/oasis.0.3.0/src/oasis/OASISLibrary.ml" *)
+(* # 21 "/home/mrm/.opam/4.00.1/build/oasis.0.3.0/src/oasis/OASISLibrary.ml" *)
 
   open OASISTypes
   open OASISUtils
 end
 
 module OASISFlag = struct
-(* # 21 "/home/mrm/.opam/system/build/oasis.0.3.0/src/oasis/OASISFlag.ml" *)
+(* # 21 "/home/mrm/.opam/4.00.1/build/oasis.0.3.0/src/oasis/OASISFlag.ml" *)
 
 end
 
 module OASISPackage = struct
-(* # 21 "/home/mrm/.opam/system/build/oasis.0.3.0/src/oasis/OASISPackage.ml" *)
+(* # 21 "/home/mrm/.opam/4.00.1/build/oasis.0.3.0/src/oasis/OASISPackage.ml" *)
 
 end
 
 module OASISSourceRepository = struct
-(* # 21 "/home/mrm/.opam/system/build/oasis.0.3.0/src/oasis/OASISSourceRepository.ml" *)
+(* # 21 "/home/mrm/.opam/4.00.1/build/oasis.0.3.0/src/oasis/OASISSourceRepository.ml" *)
 
 end
 
 module OASISTest = struct
-(* # 21 "/home/mrm/.opam/system/build/oasis.0.3.0/src/oasis/OASISTest.ml" *)
+(* # 21 "/home/mrm/.opam/4.00.1/build/oasis.0.3.0/src/oasis/OASISTest.ml" *)
 
 end
 
 module OASISDocument = struct
-(* # 21 "/home/mrm/.opam/system/build/oasis.0.3.0/src/oasis/OASISDocument.ml" *)
+(* # 21 "/home/mrm/.opam/4.00.1/build/oasis.0.3.0/src/oasis/OASISDocument.ml" *)
 
 end
 
 module OASISExec = struct
-(* # 21 "/home/mrm/.opam/system/build/oasis.0.3.0/src/oasis/OASISExec.ml" *)
+(* # 21 "/home/mrm/.opam/4.00.1/build/oasis.0.3.0/src/oasis/OASISExec.ml" *)
 
   open OASISGettext
   open OASISUtils
 end
 
 module OASISFileUtil = struct
-(* # 21 "/home/mrm/.opam/system/build/oasis.0.3.0/src/oasis/OASISFileUtil.ml" *)
+(* # 21 "/home/mrm/.opam/4.00.1/build/oasis.0.3.0/src/oasis/OASISFileUtil.ml" *)
 
   open OASISGettext
 
 
 # 2142 "setup.ml"
 module BaseEnvLight = struct
-(* # 21 "/home/mrm/.opam/system/build/oasis.0.3.0/src/base/BaseEnvLight.ml" *)
+(* # 21 "/home/mrm/.opam/4.00.1/build/oasis.0.3.0/src/base/BaseEnvLight.ml" *)
 
   module MapString = Map.Make(String)
 
 
 # 2240 "setup.ml"
 module BaseContext = struct
-(* # 21 "/home/mrm/.opam/system/build/oasis.0.3.0/src/base/BaseContext.ml" *)
+(* # 21 "/home/mrm/.opam/4.00.1/build/oasis.0.3.0/src/base/BaseContext.ml" *)
 
   open OASISContext
 
 end
 
 module BaseMessage = struct
-(* # 21 "/home/mrm/.opam/system/build/oasis.0.3.0/src/base/BaseMessage.ml" *)
+(* # 21 "/home/mrm/.opam/4.00.1/build/oasis.0.3.0/src/base/BaseMessage.ml" *)
 
   (** Message to user, overrid for Base
       @author Sylvain Le Gall
 end
 
 module BaseEnv = struct
-(* # 21 "/home/mrm/.opam/system/build/oasis.0.3.0/src/base/BaseEnv.ml" *)
+(* # 21 "/home/mrm/.opam/4.00.1/build/oasis.0.3.0/src/base/BaseEnv.ml" *)
 
   open OASISGettext
   open OASISUtils
 end
 
 module BaseArgExt = struct
-(* # 21 "/home/mrm/.opam/system/build/oasis.0.3.0/src/base/BaseArgExt.ml" *)
+(* # 21 "/home/mrm/.opam/4.00.1/build/oasis.0.3.0/src/base/BaseArgExt.ml" *)
 
   open OASISUtils
   open OASISGettext
 end
 
 module BaseCheck = struct
-(* # 21 "/home/mrm/.opam/system/build/oasis.0.3.0/src/base/BaseCheck.ml" *)
+(* # 21 "/home/mrm/.opam/4.00.1/build/oasis.0.3.0/src/base/BaseCheck.ml" *)
 
   open BaseEnv
   open BaseMessage
 end
 
 module BaseOCamlcConfig = struct
-(* # 21 "/home/mrm/.opam/system/build/oasis.0.3.0/src/base/BaseOCamlcConfig.ml" *)
+(* # 21 "/home/mrm/.opam/4.00.1/build/oasis.0.3.0/src/base/BaseOCamlcConfig.ml" *)
 
 
   open BaseEnv
 end
 
 module BaseStandardVar = struct
-(* # 21 "/home/mrm/.opam/system/build/oasis.0.3.0/src/base/BaseStandardVar.ml" *)
+(* # 21 "/home/mrm/.opam/4.00.1/build/oasis.0.3.0/src/base/BaseStandardVar.ml" *)
 
 
   open OASISGettext
 end
 
 module BaseFileAB = struct
-(* # 21 "/home/mrm/.opam/system/build/oasis.0.3.0/src/base/BaseFileAB.ml" *)
+(* # 21 "/home/mrm/.opam/4.00.1/build/oasis.0.3.0/src/base/BaseFileAB.ml" *)
 
   open BaseEnv
   open OASISGettext
 end
 
 module BaseLog = struct
-(* # 21 "/home/mrm/.opam/system/build/oasis.0.3.0/src/base/BaseLog.ml" *)
+(* # 21 "/home/mrm/.opam/4.00.1/build/oasis.0.3.0/src/base/BaseLog.ml" *)
 
   open OASISUtils
 
 end
 
 module BaseBuilt = struct
-(* # 21 "/home/mrm/.opam/system/build/oasis.0.3.0/src/base/BaseBuilt.ml" *)
+(* # 21 "/home/mrm/.opam/4.00.1/build/oasis.0.3.0/src/base/BaseBuilt.ml" *)
 
   open OASISTypes
   open OASISGettext
 end
 
 module BaseCustom = struct
-(* # 21 "/home/mrm/.opam/system/build/oasis.0.3.0/src/base/BaseCustom.ml" *)
+(* # 21 "/home/mrm/.opam/4.00.1/build/oasis.0.3.0/src/base/BaseCustom.ml" *)
 
   open BaseEnv
   open BaseMessage
 end
 
 module BaseDynVar = struct
-(* # 21 "/home/mrm/.opam/system/build/oasis.0.3.0/src/base/BaseDynVar.ml" *)
+(* # 21 "/home/mrm/.opam/4.00.1/build/oasis.0.3.0/src/base/BaseDynVar.ml" *)
 
 
   open OASISTypes
 end
 
 module BaseTest = struct
-(* # 21 "/home/mrm/.opam/system/build/oasis.0.3.0/src/base/BaseTest.ml" *)
+(* # 21 "/home/mrm/.opam/4.00.1/build/oasis.0.3.0/src/base/BaseTest.ml" *)
 
   open BaseEnv
   open BaseMessage
 end
 
 module BaseDoc = struct
-(* # 21 "/home/mrm/.opam/system/build/oasis.0.3.0/src/base/BaseDoc.ml" *)
+(* # 21 "/home/mrm/.opam/4.00.1/build/oasis.0.3.0/src/base/BaseDoc.ml" *)
 
   open BaseEnv
   open BaseMessage
 end
 
 module BaseSetup = struct
-(* # 21 "/home/mrm/.opam/system/build/oasis.0.3.0/src/base/BaseSetup.ml" *)
+(* # 21 "/home/mrm/.opam/4.00.1/build/oasis.0.3.0/src/base/BaseSetup.ml" *)
 
   open BaseEnv
   open BaseMessage
 
 # 4480 "setup.ml"
 module InternalConfigurePlugin = struct
-(* # 21 "/home/mrm/.opam/system/build/oasis.0.3.0/src/plugins/internal/InternalConfigurePlugin.ml" *)
+(* # 21 "/home/mrm/.opam/4.00.1/build/oasis.0.3.0/src/plugins/internal/InternalConfigurePlugin.ml" *)
 
   (** Configure using internal scheme
       @author Sylvain Le Gall
 end
 
 module InternalInstallPlugin = struct
-(* # 21 "/home/mrm/.opam/system/build/oasis.0.3.0/src/plugins/internal/InternalInstallPlugin.ml" *)
+(* # 21 "/home/mrm/.opam/4.00.1/build/oasis.0.3.0/src/plugins/internal/InternalInstallPlugin.ml" *)
 
   (** Install using internal scheme
       @author Sylvain Le Gall
 
 # 5233 "setup.ml"
 module OCamlbuildCommon = struct
-(* # 21 "/home/mrm/.opam/system/build/oasis.0.3.0/src/plugins/ocamlbuild/OCamlbuildCommon.ml" *)
+(* # 21 "/home/mrm/.opam/4.00.1/build/oasis.0.3.0/src/plugins/ocamlbuild/OCamlbuildCommon.ml" *)
 
   (** Functions common to OCamlbuild build and doc plugin
     *)
 end
 
 module OCamlbuildPlugin = struct
-(* # 21 "/home/mrm/.opam/system/build/oasis.0.3.0/src/plugins/ocamlbuild/OCamlbuildPlugin.ml" *)
+(* # 21 "/home/mrm/.opam/4.00.1/build/oasis.0.3.0/src/plugins/ocamlbuild/OCamlbuildPlugin.ml" *)
 
   (** Build using ocamlbuild
       @author Sylvain Le Gall
 end
 
 module OCamlbuildDocPlugin = struct
-(* # 21 "/home/mrm/.opam/system/build/oasis.0.3.0/src/plugins/ocamlbuild/OCamlbuildDocPlugin.ml" *)
+(* # 21 "/home/mrm/.opam/4.00.1/build/oasis.0.3.0/src/plugins/ocamlbuild/OCamlbuildDocPlugin.ml" *)
 
   (* Create documentation using ocamlbuild .odocl files
      @author Sylvain Le Gall
           copyrights = [];
           maintainers = ["Max Mouratov"];
           authors = ["Nicolas Pouillard"; "David Teller"; "Gabriel Scherer"];
-          homepage = Some "https://bitbucket.org/mrm/pa_comprehension";
+          homepage = Some "https://bitbucket.org/cakeplus/pa_comprehension";
           synopsis = "Syntax extension for comprehension expressions";
-          description = None;
+          description =
+            Some
+              "Pa_comprehension implements the comprehension expression construct,\nusing the Enum data structure from Batteries for the underlying machinery.";
           categories = [];
           conf_type = (`Configure, "internal", Some "0.3");
           conf_custom =
                       lib_findlib_parent = None;
                       lib_findlib_name = Some "pa_comprehension";
                       lib_findlib_containers = [];
+                      });
+               SrcRepo
+                 ({
+                     cs_name = "this";
+                     cs_data = PropList.Data.create ();
+                     cs_plugin_data = [];
+                     },
+                   {
+                      src_repo_type = Hg;
+                      src_repo_location =
+                        "https://bitbucket.org/cakeplus/pa_comprehension";
+                      src_repo_browser = None;
+                      src_repo_module = None;
+                      src_repo_branch = None;
+                      src_repo_tag = Some "0.4";
+                      src_repo_subdir = None;
                       })
             ];
           plugins =
           };
      oasis_fn = Some "_oasis";
      oasis_version = "0.3.0";
-     oasis_digest = Some ")\214\169\177{\225\255\236\170\026D\131@\018\188\\";
+     oasis_digest = Some "C9\149%\254\228\250\170\243\149\168\135biQ\015";
      oasis_exec = None;
      oasis_setup_args = [];
      setup_update = false;
 
 let setup () = BaseSetup.setup setup_t;;
 
-# 5691 "setup.ml"
+# 5709 "setup.ml"
 (* OASIS_STOP *)
 let () = setup ();;