comparison src/cjrize.sml @ 185:19ee24bffbc0

FFI datatypes
author Adam Chlipala <adamc@hcoop.net>
date Sun, 03 Aug 2008 17:57:47 -0400
parents d11754ffe252
children 88d46972de53
comparison
equal deleted inserted replaced
184:98c29e3986d3 185:19ee24bffbc0
141 fun cifyExp ((e, loc), sm) = 141 fun cifyExp ((e, loc), sm) =
142 case e of 142 case e of
143 L.EPrim p => ((L'.EPrim p, loc), sm) 143 L.EPrim p => ((L'.EPrim p, loc), sm)
144 | L.ERel n => ((L'.ERel n, loc), sm) 144 | L.ERel n => ((L'.ERel n, loc), sm)
145 | L.ENamed n => ((L'.ENamed n, loc), sm) 145 | L.ENamed n => ((L'.ENamed n, loc), sm)
146 | L.ECon (n, eo) => 146 | L.ECon (pc, eo) =>
147 let 147 let
148 val (eo, sm) = 148 val (eo, sm) =
149 case eo of 149 case eo of
150 NONE => (NONE, sm) 150 NONE => (NONE, sm)
151 | SOME e => 151 | SOME e =>
153 val (e, sm) = cifyExp (e, sm) 153 val (e, sm) = cifyExp (e, sm)
154 in 154 in
155 (SOME e, sm) 155 (SOME e, sm)
156 end 156 end
157 in 157 in
158 ((L'.ECon (n, eo), loc), sm) 158 ((L'.ECon (cifyPatCon pc, eo), loc), sm)
159 end 159 end
160 | L.EFfi mx => ((L'.EFfi mx, loc), sm) 160 | L.EFfi mx => ((L'.EFfi mx, loc), sm)
161 | L.EFfiApp (m, x, es) => 161 | L.EFfiApp (m, x, es) =>
162 let 162 let
163 val (es, sm) = ListUtil.foldlMap cifyExp sm es 163 val (es, sm) = ListUtil.foldlMap cifyExp sm es