-
Notifications
You must be signed in to change notification settings - Fork 0
/
module.ml
87 lines (78 loc) · 1.91 KB
/
module.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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
type require_argument = bool
type mutability = bool
type t = {
mods : ((Names.mod_name * t)) list;
asp : ((Names.val_name * Scheme.t)) list;
ctors : ((Names.ctor_name * (require_argument * Scheme.t))) list;
fields : ((Names.ctor_name * (mutability * Scheme.t))) list;
typectors : ((Names.typector_name * (Names.typector * int * (Scheme.t) option))) list;
}
let rec make = begin fun mods ->
begin fun asp ->
begin fun ctors ->
begin fun fields ->
begin fun typectors ->
{
mods = mods;
asp = asp;
ctors = ctors;
fields = fields;
typectors = typectors;
}
end
end
end
end
end
let rec search_alist = begin fun get_alist ->
begin fun modl ->
begin fun mod_path ->
begin fun name ->
begin match mod_path with
| ( [] ) ->
((List.assoc name) (get_alist modl))
| (( :: ) (mod_name, mod_path)) ->
begin let modl = ((List.assoc mod_name) modl.mods) in
((((search_alist get_alist) modl) mod_path) name)
end
end
end
end
end
end
let rec search_asp = begin fun modl ->
begin fun mod_path ->
begin fun name ->
((((search_alist begin fun modl ->
modl.asp
end) modl) mod_path) name)
end
end
end
let rec search_ctors = begin fun modl ->
begin fun mod_path ->
begin fun name ->
((((search_alist begin fun modl ->
modl.ctors
end) modl) mod_path) name)
end
end
end
let rec search_fields = begin fun modl ->
begin fun mod_path ->
begin fun name ->
((((search_alist begin fun modl ->
modl.fields
end) modl) mod_path) name)
end
end
end
let rec search_typectors = begin fun modl ->
begin fun mod_path ->
begin fun name ->
((((search_alist begin fun modl ->
modl.typectors
end) modl) mod_path) name)
end
end
end