By that logic, implementing Lisp is "a phD-level task", too. (http://repository.readscheme.org/ftp/papers/orbit-thesis.pdf) (http://www.cs.indiana.edu/~dyb/papers/3imp.pdf) (http://repository.readscheme.org/ftp/papers/ai-lab-pubs/AITR...) *
* The third is actually a masters thesis, but whatever.
("How do you implement lazy evaluation in Haskell? No, like, in an application...")
(Personally, I have done this a number of times. I remember writing some dependency evaluation system, with a central data structure that looked something like:
data Dependency a e = Thunk (e -> a) | Resolved a
with a bunch of code to turn a set of Thunks into Resolved when necessary.But of course, Haskell always does this anyway!)
I was also surprised when I was on Windows and needed the "head" utility to look at the first line of a file, but didn't have it installed. Since I had a ghci session going, I just wrote:
readFile "foo.csv" >>= putStrLn . unlines . take 10 . lines
Half-expecting it to error out because the file didn't fit into memory. Nope! Problem solved!(And yes, I know unsafeInterleaveIO is evil.)