comparison src/cjrize.sml @ 993:10114d7b7477

SELECT DISTINCT; eta expansion during Cjrization
author Adam Chlipala <adamc@hcoop.net>
date Tue, 06 Oct 2009 15:39:27 -0400
parents 7a4b026e45dd
children 7a4a55e05081
comparison
equal deleted inserted replaced
992:b825d843b22d 993:10114d7b7477
518 let 518 let
519 val (args, t, e) = unravel (ran, e) 519 val (args, t, e) = unravel (ran, e)
520 in 520 in
521 ((ax, dom) :: args, t, e) 521 ((ax, dom) :: args, t, e)
522 end 522 end
523 | (L'.TFun _, _) => 523 | (L'.TFun (dom, ran), _) =>
524 (ErrorMsg.errorAt loc "Function isn't explicit at code generation"; 524 let
525 ([], tAll, eAll)) 525 val e = MonoEnv.liftExpInExp 0 eAll
526 val e = (L.EApp (e, (L.ERel 0, loc)), loc)
527 val (args, t, e) = unravel (ran, e)
528 in
529 (("x", dom) :: args, t, e)
530 end
526 | _ => ([], tAll, eAll) 531 | _ => ([], tAll, eAll)
527 532
528 val (args, ran, e) = unravel (t, e) 533 val (args, ran, e) = unravel (t, e)
529 val (e, sm) = cifyExp (e, sm) 534 val (e, sm) = cifyExp (e, sm)
530 in 535 in