@@ -44,8 +44,9 @@ defunctionalise nexttag defs
4444 = let all = toAlist defs
4545 -- sort newcons so that EVAL and APPLY cons get sequential tags
4646 (allD, (enames, anames)) = runState (mapM (addApps defs) all) ([], [])
47− anames' = sort anames
48− newecons = sortBy conord $ concatMap (toCons enames) (getFn all)
47+ anames' = sort (nub anames)
48+ enames' = nub enames
49+ newecons = sortBy conord $ concatMap (toCons enames') (getFn all)
4950 newacons = sortBy conord $ concatMap (toConsA anames') (getFn all)
5051 eval = mkEval newecons
5152 app = mkApply newacons
@@ -129,7 +130,7 @@ addApps defs (n, LFun _ _ args e)
129130 | length args < ar
130131 = do (ens, ans) <- get
131132 let alln = map (\x -> (n, x)) [length args .. ar]
132− put (ens, nub (alln ++ ans))
133+ put (ens, alln ++ ans)
133134 return $ DApp tc (mkUnderCon n (ar - length args)) args
134135 | length args > ar
135136 = return $ chainAPPLY (DApp tc n (take ar args)) (drop ar args)
@@ -137,12 +138,12 @@ addApps defs (n, LFun _ _ args e)
137138 fixLazyApply n args ar
138139 | length args == ar
139140 = do (ens, ans) <- get
140− put (nub (n : ens), ans)
141+ put (n : ens, ans)
141142 return $ DApp False (mkFnCon n) args
142143 | length args < ar
143144 = do (ens, ans) <- get
144145 let alln = map (\x -> (n, x)) [length args .. ar]
145− put (ens, nub (alln ++ ans))
146+ put (ens, alln ++ ans)
146147 return $ DApp False (mkUnderCon n (ar - length args)) args
147148 | length args > ar
148149 = return $ chainAPPLY (DApp False n (take ar args)) (drop ar args)