ML and Haskell-like languages are also good, although you can usually forget writing the terms and just construct everything in types.