Reimplementing standard library functions is great for Haskell too. The biggest of the "big breakthrough" experiences I had was from trying to reimplement the standard monadic State datatype.
And then it stackoverflows and you learn that there are actually two standard monadic state datatypes :)