@drathier@evanrelf I'm not sure how the erl backend compiles pattern matching, but in this IR there is no native case, it is compiled to boolean predicates and optimized.
I am extremely excited to announce a new #PureScript project from Arista NDR: `purescript-backend-optimizer`
https://t.co/zHZyA1pgNn A new optimization pipeline and alternative modern-ES backend for PureScript!
@drathier@evanrelf It is not a CoreFn to CoreFn. CoreFn is too high level to support many of the optimizations you'd want. It's a slightly more mid-level IR with built-in things for effect binds, uncurrying, primitive operators, etc.
@drathier@evanrelf The optimization pipeline is totally backend agnostic. You could write a purerl generator that uses it. I think purerl is written in Haskell though, so you’d either need to write a new erlang code generator in PS or serialize the AST.
Pure FP kinda sucks for PL implementations, specifically Haskell. It’s all bags of mutable state and graphs, which are unnecessarily inefficient when modeled purely.
@GabriellaG439 I feel like this blog post is extremely generous to it's own argument in assuming that the Python community would have voiced less annoyance given more frequent cross-cutting breaking changes. At the scale of Python, all breaking changes incur wrath.
@hdgarrood @GabriellaG439 Now multiply this by around 100 packages (immediate packages that everyone relies on). Moderately batched breaking changes are by far preferable. I feel like the blogs take fails to address the optics of "I can't keep up with the churn anymore" reaction.
@artemisystem @GabriellaG439 I think it's named that way because it's like the "lowered" version of Alternative's guard. `a <|> guard p $> b` vs `a <> guard p b`. They are both monoidal.