Gen functions

Can you give this a once over, i remember the last time I made some pretty silly mistakes.
Hmm, so what do we do about recursive structures? I thought sized was how you dealt with those in Haskell? Is that not a problem here?