package atd

  1. Overview
  2. Docs

Source file predef.ml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
(*
  Table of predefined types.
*)

open Ast

let list_def : type_def =
  let loc = dummy_loc in
  (
    loc,
    ("list", ["a"], []),
    List (loc, Tvar (loc, "a"), [])
  )

let option_def : type_def =
  let loc = dummy_loc in
  (
    loc,
    ("option", ["a"], []),
    Option (loc, Tvar (loc, "a"), [])
  )

let nullable_def : type_def =
  let loc = dummy_loc in
  (
    loc,
    ("nullable", ["a"], []),
    Nullable (loc, Tvar (loc, "a"), [])
  )

let shared_def : type_def =
  let loc = dummy_loc in
  (
    loc,
    ("shared", ["a"], []),
    Shared (loc, Tvar (loc, "a"), [])
  )

let wrap_def : type_def =
  let loc = dummy_loc in
  (
    loc,
    ("wrap", ["a"], []),
    Wrap (loc, Tvar (loc, "a"), [])
  )


let list = [
    "unit", 0, None;
    "bool", 0, None;
    "int", 0, None;
    "float", 0, None;
    "string", 0, None;
    "abstract", 0, None;
    "list", 1, Some list_def;
    "option", 1, Some option_def;
    "nullable", 1, Some nullable_def;
    "shared", 1, Some shared_def;
    "wrap", 1, Some wrap_def;
  ]

let make_table () =
  let tbl = Hashtbl.create 20 in
  List.iter (
    fun (k, n, opt_t) ->
      Hashtbl.add tbl k (n, opt_t)
  ) list;
  tbl
OCaml

Innovation. Community. Security.