blob: ef8f09c2ab25fddbb770d0b20cfb3925acdb46b3 (
plain)
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
|
signature MONO_FOOIFY = sig
(* TODO: don't expose raw references if possible. *)
val nextPvar : int ref
val pvarDefs : ((string * int * (string * int * Mono.typ option) list) list) ref
datatype foo_kind = Attr | Url
structure Fm : sig
type t
type vr = string * int * Mono.typ * Mono.exp * string
val empty : int -> t
val lookup : t -> foo_kind -> int -> (int -> t -> vr * t) -> t * int
val lookupList : t -> foo_kind -> Mono.typ -> (int -> t -> vr * t) -> t * int
val enter : t -> t
val decls : t -> Mono.decl list
val freshName : t -> int * t
end
(* General form used in [Monoize]. *)
val fooifyExp : foo_kind
-> (int -> Mono.typ * string)
-> (int -> string * (string * int * Mono.typ option) list)
-> Fm.t
-> Mono.exp * Mono.typ
-> Mono.exp * Fm.t
(* Easy-to-use interface in [Sqlcache]. Uses [Fm.canonical]. *)
val canonicalFm : Fm.t ref (* Set at the end of [Monoize]. *)
val urlify : MonoEnv.env -> Mono.exp * Mono.typ -> Mono.exp option
val getNewFmDecls : unit -> Mono.decl list
end
|