[Haskell-beginners] How is takeWhile implemented?