Small nitpick, but I would generally put the "exception" or "error" in the Left part of an Either and a correct result in the Right part.This has some advantages.1 - Right is right as opposed to wrong. Easy to remember mnemonic.2 - It fits neatly with the Monad (Either e) instance.
f2 :: Integer -> Either Integer ErrorString
but
f2 :: Integer -> Either ErrorString Integer