Mercurial > urweb
comparison src/core_util.sml @ 482:9117a7bf229c
Especialize working reasonably well; need to add new closure representation pass
author | Adam Chlipala <adamc@hcoop.net> |
---|---|
date | Sun, 09 Nov 2008 11:53:52 -0500 |
parents | ffa18975e661 |
children | 685b41e85634 |
comparison
equal
deleted
inserted
replaced
481:2280193bf298 | 482:9117a7bf229c |
---|---|
951 decl = fn ctx => fn d => fn () => S.Continue (decl ctx d, ()), | 951 decl = fn ctx => fn d => fn () => S.Continue (decl ctx d, ()), |
952 bind = bind} ctx ds () of | 952 bind = bind} ctx ds () of |
953 S.Continue (ds, ()) => ds | 953 S.Continue (ds, ()) => ds |
954 | S.Return _ => raise Fail "CoreUtil.File.mapB: Impossible" | 954 | S.Return _ => raise Fail "CoreUtil.File.mapB: Impossible" |
955 | 955 |
956 fun map {kind, con, exp, decl} ds = | |
957 mapB {kind = kind, | |
958 con = fn () => con, | |
959 exp = fn () => exp, | |
960 decl = fn () => decl, | |
961 bind = fn _ => ()} () ds | |
962 | |
956 fun fold {kind, con, exp, decl} s d = | 963 fun fold {kind, con, exp, decl} s d = |
957 case mapfold {kind = fn k => fn s => S.Continue (k, kind (k, s)), | 964 case mapfold {kind = fn k => fn s => S.Continue (k, kind (k, s)), |
958 con = fn c => fn s => S.Continue (c, con (c, s)), | 965 con = fn c => fn s => S.Continue (c, con (c, s)), |
959 exp = fn e => fn s => S.Continue (e, exp (e, s)), | 966 exp = fn e => fn s => S.Continue (e, exp (e, s)), |
960 decl = fn d => fn s => S.Continue (d, decl (d, s))} d s of | 967 decl = fn d => fn s => S.Continue (d, decl (d, s))} d s of |