Elm is fast.
This is not because of any innovation in the compiler. In fact, the Elm compiler hardly does any optimization at all.
Elm is fast be...
For further actions, you may consider blocking this person and/or reporting abuse
Awesome changes! Are these changes going to be implemented soon?
The honest answer to that is: don’t know 😅
Corollary, are you helping Evan directly now?
I'm a member of the core team, so I do talk with Evan from time to time. But I still write PRs which he may, or may not, merge.
I just thought it was a core team of one, so that's cool 😁
There's actually a whole bunch: elm-lang.org/community
:)
Wonderfully informative post.
Interesting article! Can I translate it into Japanese?
Sure :)
I'm sorry there is something that I can't understand in
Inliningsection.the intermediary number valueis accumlator?we were folding over other thingsmean actually? And why aren't ints stored? In my knowledge, all local variables are stored on the stack or the heap.I'm looking forward to your answer
Thanks for your quick response! I understood.
I'm so sorry I have one more question, but this is last one.
It's about this sentence.
What I understand is below:
This talks about Inline Caching. If
foldlis inlined, the function as argument offoldlis also inlined, so without Inline Caching code of inlinedfoldl's loop is specilized for argument functions type.Is this right?
This talks about Inline Caching=> inline caches is something else, inlining is just replacing a function call with the implementation of the function.without Inline Caching code of inlined foldl's loop is specilized for argument functions type=> without inlining, the foldl's loop cannot be specialized because it has to handle all possible argument types.Thank you! You mean
monomophishingis to specialize code by inlining function call, right? If so, I can't understand whatwithout actually having a monomorphishing compilermeans...monomorphising doesn't do inling. When a monomorphising compiler sees the following code:
it will generate two versions of
listmap, one which has the type(Int -> String) -> List Int -> List Stringand one which has the type(Int -> Bool) -> List Int -> List Bool. It will then use the specializedlistmapimplementations where it can.This allows the compiler to specialize code better, because it has precise type information.
Oh...I misread that you used "monomorphishing" like as this article explained.
I've published my translation! zenn.dev/mshaka/articles/633027bef...
I appreciate your patience and kindness!