+ restoreGamma gamma >>|
+ pure (FunDecl p f args mt newvds stmts)
+
+matchFunctions :: [String] Type -> Env Void
+matchFunctions [] (_ ->> _) = liftT $ Left $ Error "Niet genoeg argumentenerror"
+matchFunctions [] t = pure Void
+matchFunctions [x:xs] (t1 ->> t2) =
+ modify (\(st, r)->('Map'.put x t1 st, r)) >>| matchFunctions xs t2