It can twist your brain a bit the first few times you do it, but it works fine - remember, Haskell is a lazy language. This means that while you are building the node, you can set the children to the final values straight away, even though you don't know them yet! Overview This example illustrates different ways to define recursive data structures. To demonstrate the different techniques we show h