Hi,
This message is just because it cannot figure out the type of [] in
'putStrLn $ show $ halve []'. You can write
putStrLn $ show $ halve ([] :: [Int])
to give it an explicit type. It's a bit annoying since we happen to
know that the type of the list makes no difference, but the compiler
can't figure that out.