Hindley-Milner typing

Yup.  HM.  Missing some varargs handling.
Otherwise appears to be fully "functional" - bad pun intended.