summaryrefslogtreecommitdiffstats
path: root/cps.sml
diff options
context:
space:
mode:
Diffstat (limited to 'cps.sml')
-rw-r--r--cps.sml9
1 files changed, 8 insertions, 1 deletions
diff --git a/cps.sml b/cps.sml
index 83d07f7..2d9d85d 100644
--- a/cps.sml
+++ b/cps.sml
@@ -45,7 +45,14 @@ struct
Syntax.CApp (f', [x', Syntax.VVar addr]))))
end
| Syntax.LInt i => cont (Syntax.VInt i)
- | Syntax.LString s => cont (Syntax.VString s)
+ | Syntax.LString s =>
+ let val temp = Gensym.new ()
+ in
+ Syntax.CRecord
+ ( [(map (fn c => (Syntax.VInt (Char.ord c), [])) (String.explode s), temp)]
+ , cont (Syntax.VVar temp)
+ )
+ end
| Syntax.LRecord [] => cont (Syntax.VInt 0)
| Syntax.LSelect (i, expr) =>
let val temp = Gensym.new ()