
what do you think of allowing ONLY pointfree? It may end-up by having different answers and promote beautiful and concise code
This would be very sadistic, yes – to people who would have to read code written by 42's graduates! I urge you to avoid it.
Red black trees are fun, aren't they?
They are also on a rather different level of difficulty from rewriting Data.List and friends (which is what beginners often do on their first day of learning). So, I don't understand what your intended level actually is. If it's “can understand red-black trees and write them without blindly copying code”, you could skip rewriting Data.List and go straight to: * monad transformers * lenses * the Cont monad * free monads On the other hand, if rewriting Data.List is necessary, then take a look at Richard Bird's book Thinking Functionally With Haskell – it would be a perfect fit for you.