Most modern functional languages are able to infer types for the programmer using the operations used in the expression and based on the atomic constituents.