(case mt of
Nothing = let t = IdType f in putIdent f t >>| pure t
Just t = putIdent f t >>| pure t) >>= \ft ->
- mapM_ (\a-> putIdent a (IdType <$> freshIdent)) args >>|
+ mapM_ (\a-> freshIdent >>= \fr-> putIdent a (IdType fr)) args >>|
mapM_ semVarDecl vds >>|
mapM_ (checkStmt $ resultType ft) stmts >>|
restoreGamma gamma >>| pure fd