comparison src/mono_reduce.sml @ 465:ddd363e856ff

Cookie prose; fix bugs that broke demo compilation
author Adam Chlipala <adamc@hcoop.net>
date Thu, 06 Nov 2008 12:46:45 -0500
parents bb27c7efcd90
children 7cb418e9714f
comparison
equal deleted inserted replaced
464:91914c15a85b 465:ddd363e856ff
350 | EApp ((ELet (x, t, e, b), loc), e') => 350 | EApp ((ELet (x, t, e, b), loc), e') =>
351 #1 (reduceExp env (ELet (x, t, e, 351 #1 (reduceExp env (ELet (x, t, e,
352 (EApp (b, liftExpInExp 0 e'), loc)), loc)) 352 (EApp (b, liftExpInExp 0 e'), loc)), loc))
353 353
354 | ELet (x, t, e', (EAbs (x', t' as (TRecord [], _), ran, e''), loc)) => 354 | ELet (x, t, e', (EAbs (x', t' as (TRecord [], _), ran, e''), loc)) =>
355 if impure e' then 355 (*if impure e' then
356 e 356 e
357 else 357 else*)
358 (* Seems unsound in general without the check... should revisit later *)
358 EAbs (x', t', ran, (ELet (x, t, liftExpInExp 0 e', swapExpVars 0 e''), loc)) 359 EAbs (x', t', ran, (ELet (x, t, liftExpInExp 0 e', swapExpVars 0 e''), loc))
359 360
360 | ELet (x, t, e', b) => 361 | ELet (x, t, e', b) =>
361 let 362 let
362 fun doSub () = 363 fun doSub () =