Fix the warning of shadowing the existing binding.
Add the type signature to makeFunc, makeNormalFunc, makeVarargs.
Add some pattern matches that has been missing.