Home My Page Projects Code Snippets Project Openings SML/NJ
Summary Activity Forums Tracker Lists Tasks Docs Surveys News SCM Files

SCM Repository

[smlnj] Annotation of /sml/branches/primop-branch-2/src/compiler/FLINT/kernel/ltykernel.sig
ViewVC logotype

Annotation of /sml/branches/primop-branch-2/src/compiler/FLINT/kernel/ltykernel.sig

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2014 - (view) (download) (as text)

1 : monnier 16 (* COPYRIGHT (c) 1997 YALE FLINT PROJECT *)
2 :     (* ltykernel.sig *)
3 :    
4 : macqueen 2014 signature LTYKERNEL =
5 :     sig
6 : monnier 16
7 : macqueen 2014 type tkind = Lty.tkind
8 :     type fflag = Lty.fflag
9 :     type rflag = Lty.rflag
10 :     type tvar = Lty.tvar
11 :     type tyc = Lty.tyc
12 :     type lty = Lty.lty
13 :     type token = Lty.token
14 :     type tycEnv = Lty.tycEnv
15 : monnier 16
16 :     (** injections and projections on tkind, tyc, and lty *)
17 : macqueen 2014 val tk_inj : Lty.tkindI -> tkind
18 :     val tc_inj : Lty.tycI -> tyc
19 :     val lt_inj : Lty.ltyI -> lty
20 : monnier 16
21 : macqueen 2014 val tk_out : tkind -> Lty.tkindI
22 :     val tc_out : tyc -> Lty.tycI
23 :     val lt_out : lty -> Lty.ltyI
24 : monnier 16
25 : monnier 45 (** testing equivalence of tkinds, tycs, ltys, fflags, and rflags *)
26 : monnier 16 val tk_eqv : tkind * tkind -> bool
27 :     val tc_eqv : tyc * tyc -> bool
28 :     val lt_eqv : lty * lty -> bool
29 : monnier 45 val ff_eqv : fflag * fflag -> bool
30 :     val rf_eqv : rflag * rflag -> bool
31 : monnier 16
32 :     (** testing the equivalence for tycs and ltys with relaxed constraints *)
33 : monnier 45 val tc_eqv_x : tyc * tyc -> bool
34 :     val lt_eqv_x : lty * lty -> bool
35 : monnier 16
36 :     (** finding out the depth for a tyc's innermost-bound free variables *)
37 :     val tc_depth : tyc * DebIndex.depth -> DebIndex.depth
38 :     val tcs_depth: tyc list * DebIndex.depth -> DebIndex.depth
39 : monnier 197 val tc_nvars : tyc -> tvar list
40 :     val lt_nvars : lty -> tvar list
41 : monnier 16
42 :     (** utility functions for TC_ENV and LT_ENV types *)
43 :     val tcc_env : tyc * int * int * tycEnv -> tyc
44 :     val ltc_env : lty * int * int * tycEnv -> lty
45 :    
46 :     (** reducing a tyc or lty into the weak-head normal form *)
47 :     val tc_whnm : tyc -> tyc
48 :     val lt_whnm : lty -> lty
49 :    
50 :     (** reducing a tyc or lty into the true normal form *)
51 :     val tc_norm : tyc -> tyc
52 :     val lt_norm : lty -> lty
53 :    
54 :     (** automatically flattening the argument or the result type *)
55 :     val lt_autoflat : lty -> bool * lty list * bool
56 :    
57 : monnier 45 (** testing if a tyc is a unknown constructor *)
58 :     val tc_unknown : tyc -> bool
59 : monnier 16
60 : monnier 45 (** automatically tupling up the multiple argument/result into a single one *)
61 :     val tc_autotuple : tyc list -> tyc
62 :    
63 :     (** tcc_arw does automatic argument and result flattening, so go away *)
64 :     val tcc_arw : fflag * tyc list * tyc list -> tyc
65 :    
66 :     (** token-related functions *)
67 :     val token_name : token -> string
68 :     val token_abbrev : token -> string (* used by tc_print *)
69 :     val token_isvalid : token -> bool
70 :     val token_eq : token * token -> bool
71 :     val token_int : token -> int (* for pickling *)
72 :     val token_key : int -> token
73 :    
74 :     (** primitive TC_WRAP constructor, built through the token facility *)
75 :     val wrap_token : token
76 :    
77 : monnier 16 end (* signature LTYKERNEL *)

root@smlnj-gforge.cs.uchicago.edu
ViewVC Help
Powered by ViewVC 1.0.0