@@ -127,9 +127,9 @@ moduleToCpp env (Module _ mn imps _ foreigns decls) = do
127127 in return $ CppStruct className [CppEnum Nothing Nothing (sort supers ++ members)]
128128
129129 declToCpp vqs (_, ident) (Abs (_, com, ty, _) arg body) = do
130− fn <- if argcnt > 1 && CppTopLevel `elem` vqs
130+ fn <- if arity' > 1 && CppTopLevel `elem` vqs
131131 then do
132− argNames <- replicateM (argcnt - length args' - 1) freshName
132+ argNames <- replicateM (arity' - length args' - 1) freshName
133133 let args'' = zip argNames (repeat aty)
134134 block <- asReturnBlock <$> valueToCpp
135135 (if null argNames
@@ -171,7 +171,7 @@ moduleToCpp env (Module _ mn imps _ foreigns decls) = do
171171 ty' | Just t <- ty = Just t
172172 | Just (t, _, _) <- M.lookup (Qualified (Just mn) ident) (E.names env) = Just t
173173 | otherwise = Nothing
174− argcnt = maybe 0 countArgs ty'
174+ arity' = maybe 0 arity ty'
175175 name = identToCpp ident
176176 aty = Just $ CppAny [CppConst, CppRef]
177177 rty = Just $ CppAny []
@@ -239,9 +239,9 @@ moduleToCpp env (Module _ mn imps _ foreigns decls) = do
239239 declToCpp qs (_, ident) e
240240 | Just ty <- exprType e,
241241 CppTopLevel `elem` qs,
242− argcnt <- countArgs ty,
243− argcnt > 0 = do
244− argNames <- replicateM argcnt freshName
242+ arity' <- arity ty,
243+ arity' > 0 = do
244+ argNames <- replicateM arity' freshName
245245 block <- valueToCpp $
246246 curriedApp
247247 (tail argNames)
@@ -263,7 +263,7 @@ moduleToCpp env (Module _ mn imps _ foreigns decls) = do
263263 rty
264264 []
265265 (asReturnBlock block)
266− ] ++ if argcnt > 1
266+ ] ++ if arity' > 1
267267 then [fn']
268268 else []
269269 where
@@ -397,7 +397,7 @@ moduleToCpp env (Module _ mn imps _ foreigns decls) = do
397397 return . curriedName' $ varToCpp ident
398398
399399 valueToCpp (Var (_, _, Just ty, _) ident@(Qualified (Just _) _))
400− | countArgs ty > 1 =
400+ | arity ty > 1 =
401401 return . curriedName' $ varToCpp ident
402402
403403 valueToCpp (Var _ ident) =
@@ -470,12 +470,12 @@ moduleToCpp env (Module _ mn imps _ foreigns decls) = do
470470 ((sort $ superClassDictionaryNames constraints) ++ (fst <$> fns))
471471 args'
472472 Var ann (Qualified (Just mn') ident)
473− | argcnt <- maybe 0 countArgs ty,
474− argcnt > 1 -> do
473+ | arity' <- maybe 0 arity ty,
474+ arity' > 1 -> do
475475 f' <- valueToCpp f
476476 let (uncurriedArgs, curriedArgs) =
477− if length args' >= argcnt
478− then splitAt argcnt args'
477+ if length args' >= arity'
478+ then splitAt arity' args'
479479 else ([], args')
480480 fn' =
481481 if null uncurriedArgs
@@ -791,10 +791,10 @@ moduleToCpp env (Module _ mn imps _ foreigns decls) = do
791791 curriedForeigns = concat <$> mapM go allForeigns
792792 where
793793 go (ident, ty)
794− | argcnt <- countArgs ty,
795− argcnt > 1 = do
794+ | arity' <- arity ty,
795+ arity' > 1 = do
796796 let name = identToCpp ident
797− argNames <- replicateM argcnt freshName
797+ argNames <- replicateM arity' freshName
798798 return $
799799 [ CppFunction
800800 (curriedName name)
@@ -839,14 +839,14 @@ curriedApp args vals = foldl (\val arg -> App
839839 vals args
840840
841841---------------------------------------------------------------------------------------------------
842−countArgs :: T.Type -> Int
842+arity :: T.Type -> Int
843843---------------------------------------------------------------------------------------------------
844−countArgs = go 0
844+arity = go 0
845845 where
846− go argcnt (T.ForAll _ t _) = go argcnt t
847− go argcnt (T.TypeApp (T.TypeApp fn _) t) | fn == E.tyFunction = go (argcnt + 1) t
848− go argcnt (T.ConstrainedType ts t) = go (argcnt + length ts) t
849− go argcnt _ = argcnt
846+ go arity' (T.ForAll _ t _) = go arity' t
847+ go arity' (T.TypeApp (T.TypeApp fn _) t) | fn == E.tyFunction = go (arity' + 1) t
848+ go arity' (T.ConstrainedType ts t) = go (arity' + length ts) t
849+ go arity' _ = arity'
850850
851851---------------------------------------------------------------------------------------------------
852852extractConstraints :: T.Type -> [T.Constraint]