diff options
author | Adam Chlipala <adamc@hcoop.net> | 2008-08-09 20:08:29 -0400 |
---|---|---|
committer | Adam Chlipala <adamc@hcoop.net> | 2008-08-09 20:08:29 -0400 |
commit | bb9795918d2f0a1d9141dd86c4884fa9446cb2a9 (patch) | |
tree | 538d4d4a08d80201fda8187ec281b39a43669f75 /src/monoize.sml | |
parent | 65edfa17d6df526c57fdb08bf033671c7c6756f6 (diff) |
Urlifying records
Diffstat (limited to 'src/monoize.sml')
-rw-r--r-- | src/monoize.sml | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/src/monoize.sml b/src/monoize.sml index 8d7fabb8..fe360d75 100644 --- a/src/monoize.sml +++ b/src/monoize.sml @@ -216,7 +216,22 @@ fun fooifyExp fk env = | _ => case t of L'.TFfi (m, x) => ((L'.EFfiApp (m, fk2s fk ^ "ify" ^ capitalize x, [e]), loc), fm) + | L'.TRecord [] => ((L'.EPrim (Prim.String ""), loc), fm) + | L'.TRecord ((x, t) :: xts) => + let + val (se, fm) = fooify fm ((L'.EField (e, x), loc), t) + in + foldl (fn ((x, t), (se, fm)) => + let + val (se', fm) = fooify fm ((L'.EField (e, x), loc), t) + in + ((L'.EStrcat (se, + (L'.EStrcat ((L'.EPrim (Prim.String "/"), loc), + se'), loc)), loc), + fm) + end) (se, fm) xts + end | L'.TDatatype (i, ref (dk, _)) => let |