-freshIdent :: Gamma -> (String, Gamma)
-freshIdent (st, [ident:rest]) = case 'Map'.get ident st of
- Nothing = (ident, (st, rest))
- _ = freshIdent (st, rest)
+freshIdent :: Env String
+freshIdent = get >>= \(st, [ident:rest])-> put (st, rest)
+ >>| case 'Map'.get ident st of
+ Nothing = pure ident
+ _ = freshIdent