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

SCM Repository

[smlnj] Diff of /sml/trunk/src/ml-nlffigen/pp.sml
ViewVC logotype

Diff of /sml/trunk/src/ml-nlffigen/pp.sml

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 974, Sun Oct 28 03:29:04 2001 UTC revision 975, Wed Oct 31 20:22:44 2001 UTC
# Line 15  Line 15 
15          ARROW of mltype * mltype          ARROW of mltype * mltype
16        | TUPLE of mltype list        | TUPLE of mltype list
17        | CON of string * mltype list        | CON of string * mltype list
18          | RECORD of (string * mltype) list
19    
20      val Unit = TUPLE []      val Unit = TUPLE []
21      fun Type t = CON (t, [])      fun Type t = CON (t, [])
# Line 46  Line 47 
47          CON (String.extract (k, 4, NONE), [simplify n])          CON (String.extract (k, 4, NONE), [simplify n])
48        | simplify (ARROW (t1, t2)) = ARROW (simplify t1, simplify t2)        | simplify (ARROW (t1, t2)) = ARROW (simplify t1, simplify t2)
49        | simplify (TUPLE tl) = TUPLE (map simplify tl)        | simplify (TUPLE tl) = TUPLE (map simplify tl)
50          | simplify (RECORD ml) = RECORD (map (fn (n, t) => (n, simplify t)) ml)
51        | simplify (CON (k, tl)) = CON (k, map simplify tl)        | simplify (CON (k, tl)) = CON (k, map simplify tl)
52    
53      fun ppType0 s (t as ARROW _, c) =      fun ppType0 s (t as ARROW _, c) =
# Line 82  Line 84 
84              if paren then PP.string s ")" else ();              if paren then PP.string s ")" else ();
85              PP.closeBox s              PP.closeBox s
86          end          end
87          | ppType0 s (RECORD [], _) = PP.string s "{}"
88          | ppType0 s (RECORD tl, _) = let
89                fun loop [] = ()            (* cannot happen *)
90                  | loop [(n, t)] = (PP.string s (n ^ " : ");
91                                     ppType0 s (t, C_COMMA))
92                  | loop ((n, t) :: tl) = (PP.string s (n ^ " : ");
93                                           ppType0 s (t, C_COMMA);
94                                           PP.string s ",";
95                                           PP.space s 1;
96                                           loop tl)
97            in
98                PP.openHVBox s (PP.Rel 2);
99                PP.string s "{ ";
100                loop tl;
101                PP.string s " }";
102                PP.closeBox s
103            end
104        | ppType0 s (CON (k, []), _) = PP.string s k        | ppType0 s (CON (k, []), _) = PP.string s k
105        | ppType0 s (CON (k, [t]), _) =        | ppType0 s (CON (k, [t]), _) =
106          (PP.openHBox s;          (PP.openHBox s;
# Line 112  Line 131 
131    
132      datatype mlexp =      datatype mlexp =
133          ETUPLE of mlexp list          ETUPLE of mlexp list
134          | ERECORD of (string * mlexp) list
135        | EVAR of string        | EVAR of string
136        | EAPP of mlexp * mlexp        | EAPP of mlexp * mlexp
137        | ECONSTR of mlexp * mltype        | ECONSTR of mlexp * mltype
# Line 125  Line 145 
145              fun loop [] = ()              fun loop [] = ()
146                | loop [x] = ppExp0 s (x, EC_COMMA)                | loop [x] = ppExp0 s (x, EC_COMMA)
147                | loop (x :: xl) =                | loop (x :: xl) =
148                  (ppExp0 s (x, EC_COMMA); PP.string s ","; PP.space s 1; loop xl)                  (ppExp0 s (x, EC_COMMA); PP.string s ","; PP.space s 1;
149                     loop xl)
150          in          in
151              PP.openHVBox s (PP.Rel 1);              PP.openHVBox s (PP.Rel 1);
152              PP.string s "(";              PP.string s "(";
# Line 133  Line 154 
154              PP.string s ")";              PP.string s ")";
155              PP.closeBox s              PP.closeBox s
156          end          end
157          | ppExp0 s (ERECORD [], _) = PP.string s "{}"
158          | ppExp0 s (ERECORD xl, _) = let
159                fun loop [] = ()
160                  | loop [(n, x)] = (PP.string s (n ^ " =");
161                                     PP.space s 1;
162                                     ppExp0 s (x, EC_COMMA))
163                  | loop ((n, x) :: xl) = (PP.string s (n ^ " =");
164                                           PP.space s 1;
165                                           ppExp0 s (x, EC_COMMA);
166                                           PP.string s ",";
167                                           PP.space s 1;
168                                           loop xl)
169            in
170                PP.openHVBox s (PP.Rel 2);
171                PP.string s "{ ";
172                loop xl;
173                PP.string s " }";
174                PP.closeBox s
175            end
176        | ppExp0 s (EVAR v, _) = PP.string s v        | ppExp0 s (EVAR v, _) = PP.string s v
177        | ppExp0 s (EAPP (x, y), c) = let        | ppExp0 s (EAPP (x, y), c) = let
178              fun loop (EAPP (x, y)) =              fun loop (EAPP (x, y)) =

Legend:
Removed from v.974  
changed lines
  Added in v.975

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