Here is a puzzle for you:

For a large enough list, the code below will fill up the call stack and
crash. It makes sense that the Elm compiler can't optimize it with tail
calls, since the recursive function gets called more than once per
iteration.

What is the best way to rewrite this without using recursion?



type Tree = Leaf Foo | Node Bar Tree Tree
>
> create : List Foo -> Tree
> create faces =
>   case faces of
>     [] ->
>       dummyFoo
>
>     foo :: [] ->
>       Leaf f
>
>     list ->
>       let
>         box = wrap list
>
>         ( left, right ) = partition box list
>       in
>         Node box (create left) (create right)
>
> wrap : List Foo -> Bar
>
> partition : Bar -> List Foo -> (List Foo, List Foo)
>
>

-- 
You received this message because you are subscribed to the Google Groups "Elm 
Discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to