Hi!
I’m trying to get through the exercises in the Binary Tree example here:
http://elm-lang.org/examples/binary-tree.
I’ve got to the 4-th and it seems to me like it’s impossible to solve (with
the understanding I have now). 樂
So, here it goes:
(4) Write a general fold function that acts on trees. The fold
> function does not need to guarantee a particular order of
> traversal.
>
>fold : (a -> b -> b) -> b -> Tree a -> b
…and here is my attempt to solve it:
fold : (a -> b -> b) -> b -> Tree a -> b
> fold f z tree =
> case tree of
> Empty ->
z
>
Node v left right ->
> let
> z_ = f v z
> l_ = fold f z left
> r_ = fold f z right
> in
> {- TODO: figure out how to combine the 3 values of type b -}
> f v z_
The issue I’m stuck with in the last case — Node v left right -> — is that
I now got 3 values of type b which I can’t fold into the final result: f has
the type of (a -> b -> b), so if the only value of type a here is z, the
most I can do is one folding operation, but I get another b as a result.
My question is: How can I fold the 3 values? Or is this approach workable
at all? What am I missing? 樂
Cheers!
--
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 elm-discuss+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.