Closed kmyk closed 2 years ago
古い書き方だと rewrite rule は構文木を手動で丁寧に組み換えて書いていたのですが、#133 でもっと簡単に書けるようになりました。
旧:
simpleRewriteRule $ \case Map' t1 t2 f (Reversed' _ xs) -> return' $ Reversed' t2 (Map' t1 t2 f xs) _ -> Nothing
新:
[r| "map/reversed" forall f xs. map f (reversed xs) = reversed (map f xs) |]
古い書き方だと (Jikka の本体の) コンパイル時にその rewrite rule が正しいか検査されなくてバグりがちなのですが、新しい書き方だとコンパイル時に型検査まで走るので安全でバグりにくいです。 なので、できるものはすべて新しい書き方で書き直したい。
src/Jikka/Core/Convert/CloseAll.hs
src/Jikka/Core/Convert/CloseMin.hs
src/Jikka/Core/Convert/CloseSum.hs
src/Jikka/Core/Convert/EqualitySolving.hs
src/Jikka/Core/Convert/ConstantFolding.hs
src/Jikka/Core/Convert/ConstantPropagation.hs
古い書き方だと rewrite rule は構文木を手動で丁寧に組み換えて書いていたのですが、#133 でもっと簡単に書けるようになりました。
旧:
新:
古い書き方だと (Jikka の本体の) コンパイル時にその rewrite rule が正しいか検査されなくてバグりがちなのですが、新しい書き方だとコンパイル時に型検査まで走るので安全でバグりにくいです。 なので、できるものはすべて新しい書き方で書き直したい。
src/Jikka/Core/Convert/CloseAll.hs
src/Jikka/Core/Convert/CloseMin.hs
src/Jikka/Core/Convert/CloseSum.hs
src/Jikka/Core/Convert/EqualitySolving.hs
src/Jikka/Core/Convert/ConstantFolding.hs
src/Jikka/Core/Convert/ConstantPropagation.hs