Haskell style: explicit errors, visible in the type