Already, Address serves as a very descriptive type in the web3 library. I propose we add additional types such as UInt256, Bytes32 etc. I list three versions of eth_getBalance below, each more descriptive than the last.
CURRENT: eth_getBalance :: Provider a => Address -> CallMode -> Web3 a Text
OK: eth_getBalance :: Provider a => Address -> CallMode -> Web3 a Integer
GOOD: eth_getBalance :: Provider a => Address -> CallMode -> Web3 a UInt256