
Dan Piponi wrote:
If you allow me to play Devil's advocate for a moment...just don't let this guy ask you how long the Haskell version takes.
In fact, you can borrow a trick from the C++ version. Try this instead:
import Data.Set main = interact $ unlines . toList . fromList . words
Yes - I discovered this one myself last night. ;-) Seems to run with complexity equal to O(N log M) time and O(M) memory - just as the C++ version does. (But then, Data.Set seems to use the exact implementation that std::set has, so...) One small puzzling thing... I run it over a file containing 1 million copies of the string "a b ". (That makes a ~90 MB file.) Apparently even a trivial Haskell program uses 21 MB RAM (I'm guessing it's the default heap size or something), but this one did consume slightly more RAM towards the end. (~25 MB.) I'm puzzled as to why this would be...