{- Unexpected behaviour from nhc though debatable as to the "correct" behaviour. nhc treats "xs" as a function, not a caf, because it requires a context. As a result, it runs in constant space whereas hugs and hbc run in linear space. -} default (Int) walk :: [a] -> () walk [] = () walk (x:xs) = walk xs main = print (seq (walk xs) (seq x True)) where xs = [1..10000] x = last xs