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