# Module OASISDataNotation

    module OASISDataNotation: sig .. end

OCaml data notation.

This module helps to translate OCaml data into a string following OCaml syntax.

### Types

    type module_name = string

    type field_name = string

    type variant_name = string

    type var_name = string

    type t =

`|` | `REC of `module_name * (field_name * t) list`` | `(*` | List | `*)`
`|` | `LST of `t list`` | `(*` | String | `*)`
`|` | `STR of `string`` | `(*` | Variant type constructor | `*)`
`|` | `VRT of `variant_name * t list`` | `(*` | Boolean | `*)`
`|` | `BOO of `bool`` | `(*` | Tuple | `*)`
`|` | `TPL of `t list`` | `(*` | Unit () | `*)`
`|` | `UNT` | `(*` | Function application | `*)`
`|` | `APP of `var_name * (var_name * t) list * t list`` | `(*` | Variable | `*)`
`|` | `VAR of `var_name`` | `(*` | Polymorphic variant | `*)`
`|` | `PVR of `variant_name * t option``

### Basic conversion

    val of_unit : unit -> t

    val of_bool : bool -> t

    val of_string : string -> t

    val of_option : ('a -> t) -> 'a option -> t

    val of_list : ('a -> t) -> 'a list -> t

### Function conversion

    type 'a func = {

`` | `func_call : `'a`;`
`` | `func_name : `string`;`
`` | `func_arg : `t option`;`

`}`

Function that can be generated using func_call = APP(func, [], `func_arg`).

    val func : 'a -> string -> 'a func

Return the OCaml function corresponding to a `func`.

    val func_with_arg : ('a -> 'b) ->
           string -> 'a -> ('a -> t) -> 'b func

Create a func with an argument

    val func_with_arg_ctxt : (ctxt:'a -> 'b -> 'c) ->
           string ->
           'b -> ('b -> t) -> (ctxt:'a -> 'c) func

    val odn_of_func : 'a func -> t

Return the `t` code corresponding to a `func`.

    val func_call : 'a func -> 'a

Return the OCaml function corresponding to a `func`.

### Formating

    val pp_odn : ?opened_modules:string list ->
           Stdlib.Format.formatter -> t -> unit