ref: 8b782963cc57468cfe976dda7a583f14f1a9237e
parent: b5fb30c4c8880159bd54059456b42fb0d49198f2
author: Lennart Augustsson <lennart.augustsson@epicgames.com>
date: Thu Aug 24 13:20:17 EDT 2023
Special case for 'otherwise' in desugaring.
--- a/comb/mhs.comb
+++ b/comb/mhs.comb
@@ -1,3 +1,3 @@
v3.1
684
-(($A :0 ((_510 _463) ((($S' ($C ((($C' ($S' _510)) ($C _2)) (($B ($B (_510 _538))) ((($C' ($S' $C)) ((($C' ($C' $C)) ((($C' ($C' ($C' $S'))) (($B ($B ($B $C))) ((($C' ($C' ($C' ($C' $C)))) ((($C' ($C' ($C' ($C' ($S' $B))))) ((($C' ($C' ($C' ($C' ($C' $S))))) ((($C' ($C' ($C' $B))) (($B ($B ($B ($C' $C)))) ((($C' ($C' ($C' ($C' ($C' $S'))))) (($B ($B ($B ($B ($B $C))))) ((($C' ($C' ($C' ($C' ($C' ($C' $B)))))) ((($C' ($C' ($C' ($S' ($C' $B))))) (($B ($B ($B ($B ($B $B))))) ((($C' ($C' ($C' ($C' $B)))) ((($S' $B) (($B $B) (($B $B) (($B $C') (($B ($S' _511)) ((($C' $B) (($B _597) (($B _528) ((($C' _634) _8) 0)))) (($B (_597 _531)) (($B (_542 "top level defns: ")) _492)))))))) ((($S' $B) (($B $B) (($B ($C' $B)) (($B ($B $B)) (($B ($B _511)) ((($C' $B) (($B _597) (($B _528) ((($C' _634) _8) 1)))) (_527 ($T (($B ($B (_597 _531))) ((($C' $B) _542) (($B (_542 " = ")) _240))))))))))) ((($C' $B) ((($S' $C') (($B $C') (($B $C') _9))) ((($S' $B) (($B ($C' ($C' _511))) ((($C' $B) (($B $B) (($B _597) (($B _533) _11)))) (($B ($B (_542 _1))) (($B (($C' _542) _492)) (_542 (($O 10) $K))))))) (($B ($B (_510 _538))) ((($C' $B) (($B $B) (($B _597) (($B _528) ((($C' _634) _8) 0))))) (($B ($B (_597 _531))) (($B ($B (_542 "final pass "))) ((($C' ($C' _542)) (($B ($B (_505 6))) (($B ($B _492)) _628))) "ms")))))))) _3)))) _488))) (($B (($C' $C) (($B ($C _547)) _240))) (($C _560) (_577 0))))) (($B ($C $B)) (($B ($B ($C $B))) (($B ($B $BK)) (($B ($B ($B ($B (_542 "(($A :"))))) (($B ($B (($C' $B) (($B _542) _492)))) (($B ($B ($B (_542 (($O 32) $K))))) ((($C' $B) (($B ($C' _542)) ($B _240))) (($B (_542 ") ")) (($C _542) (($O 41) $K))))))))))))) (($B $Y) ((($C' ($C' $S)) ((($C' ($C' $S)) ((($C' $B) $P) ((($S' ($C' $B)) ($B _217)) $I))) ($BK $K))) $K))))) $T)) (($B (($S' _597) (($B _594) (($B (_597 _642)) (($B (_542 "main: findIdent: ")) _310))))) ($C _481)))) (($B ($B _485)) (($B (($C' _544) (($B $T) (($B ($C $B)) (($B ($B $BK)) ((($C' ($C' ($C' $O))) ($B ($C $P))) $K)))))) (($C _560) (_577 0)))))) (($B (_597 _216)) (($B (_542 (($O 95) $K))) _492))))) ($T $A))) ($T $K))) (($B $Y) $K)))))) (($S (($S ((($S' _7) (($B _559) (_546 (_503 "-v")))) ((_576 _503) "-r"))) (($B (_540 (($O 46) $K))) (($B _596) (_545 ((_564 _619) "-i")))))) (($B (_597 _571)) ((($C' _542) (($B _596) (_545 ((_564 _619) "-o")))) (($O "out.comb") $K))))) (($B (($S (($C ((($C' _630) _559) 1)) (_642 "Usage: uhs [-v] [-r] [-iPATH] [-oFILE] ModuleName"))) _571)) (_546 ((_598 _639) ((_598 (_503 (($O 45) $K))) (_557 1)))))))) (($A :1 "v3.1\10&") (($A :2 ((($S' ($S' _510)) _16) (($B ($B ($B (_510 _538)))) ((($C' ($C' $B)) (($B ($B ($C' (($S' _511) (($B (_597 _529)) (($B (_597 (_558 1000000))) _44)))))) (($B ($B ($B ($B (_510 _538))))) ((($C' $B) (($B ($C' $B)) (($B ($B ($C' _511))) ((($C' $B) (($B $B) (($B _597) (($B _528) ((($C' _634) _8) 0))))) (($B ($B (_597 _531))) (($B ($B (_542 "combinator conversion "))) ((($C' ($C' _542)) (($B ($B (_505 6))) (($B ($B _492)) _628))) "ms"))))))) (($B ($B _512)) (($B $P) (($C _312) "main"))))))) (_544 ($T ((($C' ($C' $O)) ((($C' $B) $P) _243)) $K))))))) (($A :3 ($T (($C ((($C' $C') (($B ($S' ($B (_597 _6)))) ($C $C))) (($B ($B $Y)) (($B ($B ($B _210))) (($C' ($C' _544)) (($B ($B $T)) ((($C' ($C' ($C' ($C' $O)))) (($B ($B (($C' $B) $P))) ($B _4))) $K))))))) (($B (($S' _597) (($B _594) (($B (_597 _642)) (_542 "not found "))))) ($C _211))))) (($A :4 ((($C' $C) ((($S' $C) ((($C' ($C' $S')) (($S $P) ((($S' ($C' $B)) (($B ($B _6)) _4)) _4))) ($BK $K))) ((($C' ($C' $C)) (($B (($C' $C) (($B ($P _6)) $K))) ((($C' $B) _4) _242))) (($B (_597 (_594 (_642 "primlookup")))) (($C (_580 _503)) _5))))) (_642 "trans: impossible"))) (($A :5 (($O (($P (($O 66) $K)) $B)) (($O (($P (($O 79) $K)) $O)) (($O (($P (($O 75) $K)) $K)) (($O (($P "C'") $C')) (($O (($P (($O 67) $K)) $C)) (($O (($P (($O 65) $K)) $A)) (($O (($P "S'") $S')) (($O (($P (($O 80) $K)) $P)) (($O (($P (($O 73) $K)) $I)) (($O (($P (($O 83) $K)) $S)) (($O (($P (($O 84) $K)) $T)) (($O (($P (($O 89) $K)) $Y)) (($O (($P "B'") $B')) (($O (($P "BK") $BK)) (($O (($P (($O 43) $K)) $+)) (($O (($P (($O 45) $K)
\ No newline at end of file
+(($A :0 ((_509 _463) ((($S' ($C ((($C' ($S' _509)) ($C _2)) (($B ($B (_509 _537))) ((($C' ($S' $C)) ((($C' ($C' $C)) ((($C' ($C' ($C' $S'))) (($B ($B ($B $C))) ((($C' ($C' ($C' ($C' $C)))) ((($C' ($C' ($C' ($C' ($S' $B))))) ((($C' ($C' ($C' ($C' ($C' $S))))) ((($C' ($C' ($C' $B))) (($B ($B ($B ($C' $C)))) ((($C' ($C' ($C' ($C' ($C' $S'))))) (($B ($B ($B ($B ($B $C))))) ((($C' ($C' ($C' ($C' ($C' ($C' $B)))))) ((($C' ($C' ($C' ($S' ($C' $B))))) (($B ($B ($B ($B ($B $B))))) ((($C' ($C' ($C' ($C' $B)))) ((($S' $B) (($B $B) (($B $B) (($B $C') (($B ($S' _510)) ((($C' $B) (($B _596) (($B _527) ((($C' _633) _8) 0)))) (($B (_596 _530)) (($B (_541 "top level defns: ")) _491)))))))) ((($S' $B) (($B $B) (($B ($C' $B)) (($B ($B $B)) (($B ($B _510)) ((($C' $B) (($B _596) (($B _527) ((($C' _633) _8) 1)))) (_526 ($T (($B ($B (_596 _530))) ((($C' $B) _541) (($B (_541 " = ")) _240))))))))))) ((($C' $B) ((($S' $C') (($B $C') (($B $C') _9))) ((($S' $B) (($B ($C' ($C' _510))) ((($C' $B) (($B $B) (($B _596) (($B _532) _11)))) (($B ($B (_541 _1))) (($B (($C' _541) _491)) (_541 (($O 10) $K))))))) (($B ($B (_509 _537))) ((($C' $B) (($B $B) (($B _596) (($B _527) ((($C' _633) _8) 0))))) (($B ($B (_596 _530))) (($B ($B (_541 "final pass "))) ((($C' ($C' _541)) (($B ($B (_504 6))) (($B ($B _491)) _627))) "ms")))))))) _3)))) _488))) (($B (($C' $C) (($B ($C _546)) _240))) (($C _559) (_576 0))))) (($B ($C $B)) (($B ($B ($C $B))) (($B ($B $BK)) (($B ($B ($B ($B (_541 "(($A :"))))) (($B ($B (($C' $B) (($B _541) _491)))) (($B ($B ($B (_541 (($O 32) $K))))) ((($C' $B) (($B ($C' _541)) ($B _240))) (($B (_541 ") ")) (($C _541) (($O 41) $K))))))))))))) (($B $Y) ((($C' ($C' $S)) ((($C' ($C' $S)) ((($C' $B) $P) ((($S' ($C' $B)) ($B _217)) $I))) ($BK $K))) $K))))) $T)) (($B (($S' _596) (($B _593) (($B (_596 _642)) (($B (_541 "main: findIdent: ")) _310))))) ($C _481)))) (($B ($B _485)) (($B (($C' _543) (($B $T) (($B ($C $B)) (($B ($B $BK)) ((($C' ($C' ($C' $O))) ($B ($C $P))) $K)))))) (($C _559) (_576 0)))))) (($B (_596 _216)) (($B (_541 (($O 95) $K))) _491))))) ($T $A))) ($T $K))) (($B $Y) $K)))))) (($S (($S ((($S' _7) (($B _558) (_545 (_502 "-v")))) ((_575 _502) "-r"))) (($B (_539 (($O 46) $K))) (($B _595) (_544 ((_563 _618) "-i")))))) (($B (_596 _570)) ((($C' _541) (($B _595) (_544 ((_563 _618) "-o")))) (($O "out.comb") $K))))) (($B (($S (($C ((($C' _629) _558) 1)) (_642 "Usage: uhs [-v] [-r] [-iPATH] [-oFILE] ModuleName"))) _570)) (_545 ((_597 _638) ((_597 (_502 (($O 45) $K))) (_556 1)))))))) (($A :1 "v3.1\10&") (($A :2 ((($S' ($S' _509)) _16) (($B ($B ($B (_509 _537)))) ((($C' ($C' $B)) (($B ($B ($C' (($S' _510) (($B (_596 _528)) (($B (_596 (_557 1000000))) _44)))))) (($B ($B ($B ($B (_509 _537))))) ((($C' $B) (($B ($C' $B)) (($B ($B ($C' _510))) ((($C' $B) (($B $B) (($B _596) (($B _527) ((($C' _633) _8) 0))))) (($B ($B (_596 _530))) (($B ($B (_541 "combinator conversion "))) ((($C' ($C' _541)) (($B ($B (_504 6))) (($B ($B _491)) _627))) "ms"))))))) (($B ($B _511)) (($B $P) (($C _312) "main"))))))) (_543 ($T ((($C' ($C' $O)) ((($C' $B) $P) _243)) $K))))))) (($A :3 ($T (($C ((($C' $C') (($B ($S' ($B (_596 _6)))) ($C $C))) (($B ($B $Y)) (($B ($B ($B _210))) (($C' ($C' _543)) (($B ($B $T)) ((($C' ($C' ($C' ($C' $O)))) (($B ($B (($C' $B) $P))) ($B _4))) $K))))))) (($B (($S' _596) (($B _593) (($B (_596 _642)) (_541 "not found "))))) ($C _211))))) (($A :4 ((($C' $C) ((($S' $C) ((($C' ($C' $S')) (($S $P) ((($S' ($C' $B)) (($B ($B _6)) _4)) _4))) ($BK $K))) ((($C' ($C' $C)) (($B (($C' $C) (($B ($P _6)) $K))) ((($C' $B) _4) _242))) (($B (_596 (_593 (_642 "primlookup")))) (($C (_579 _502)) _5))))) (_642 "trans: impossible"))) (($A :5 (($O (($P (($O 66) $K)) $B)) (($O (($P (($O 79) $K)) $O)) (($O (($P (($O 75) $K)) $K)) (($O (($P "C'") $C')) (($O (($P (($O 67) $K)) $C)) (($O (($P (($O 65) $K)) $A)) (($O (($P "S'") $S')) (($O (($P (($O 80) $K)) $P)) (($O (($P (($O 73) $K)) $I)) (($O (($P (($O 83) $K)) $S)) (($O (($P (($O 84) $K)) $T)) (($O (($P (($O 89) $K)) $Y)) (($O (($P "B'") $B')) (($O (($P "BK") $BK)) (($O (($P (($O 43) $K)) $+)) (($O (($P (($O 45) $K)
\ No newline at end of file
--- a/src/MicroHs/Desugar.hs
+++ b/src/MicroHs/Desugar.hs
@@ -90,6 +90,7 @@
dsAlt :: Expr -> [EStmt] -> Expr -> Expr
dsAlt _ [] rhs = rhs
dsAlt dflt (SBind p e : ss) rhs = ECase e [(p, EAlts [(ss, rhs)] []), (EVar dummyIdent, oneAlt dflt)]
+dsAlt dflt (SThen (EVar i) : ss) rhs | eqIdent i "Data.Bool.otherwise" = dsAlt dflt ss rhs
dsAlt dflt (SThen e : ss) rhs = EIf e (dsAlt dflt ss rhs) dflt
dsAlt dflt (SLet bs : ss) rhs = ELet bs (dsAlt dflt ss rhs)
--
⑨