turn on GHC option -Wall, and fix all the warnings