Industrial-strength functional programming - type inference and modules
Learn OCaml - a powerful functional language