@@ -127,9 +127,9 @@ moduleToCpp env (Module _ mn imps _ foreigns decls) = do
127 in return $ CppStruct className [CppEnum Nothing Nothing (sort supers ++ members)]
127 in return $ CppStruct className [CppEnum Nothing Nothing (sort supers ++ members)]
129 declToCpp vqs (_, ident) (Abs (_, com, ty, _) arg body) = do
129 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
132− argNames <- replicateM (argcnt - length args' - 1) freshName
132+ argNames <- replicateM (arity' - length args' - 1) freshName
133 let args'' = zip argNames (repeat aty)
133 let args'' = zip argNames (repeat aty)
134 block <- asReturnBlock <$> valueToCpp
134 block <- asReturnBlock <$> valueToCpp
135 (if null argNames
135 (if null argNames
@@ -171,7 +171,7 @@ moduleToCpp env (Module _ mn imps _ foreigns decls) = do
171 ty' | Just t <- ty = Just t
171 ty' | Just t <- ty = Just t
172 | Just (t, _, _) <- M.lookup (Qualified (Just mn) ident) (E.names env) = Just t
172 | Just (t, _, _) <- M.lookup (Qualified (Just mn) ident) (E.names env) = Just t
173 | otherwise = Nothing
173 | otherwise = Nothing
174− argcnt = maybe 0 countArgs ty'
174+ arity' = maybe 0 arity ty'
175 name = identToCpp ident
175 name = identToCpp ident
176 aty = Just $ CppAny [CppConst, CppRef]
176 aty = Just $ CppAny [CppConst, CppRef]
177 rty = Just $ CppAny []
177 rty = Just $ CppAny []
@@ -239,9 +239,9 @@ moduleToCpp env (Module _ mn imps _ foreigns decls) = do
239 declToCpp qs (_, ident) e
239 declToCpp qs (_, ident) e
240 | Just ty <- exprType e,
240 | Just ty <- exprType e,
241 CppTopLevel `elem` qs,
241 CppTopLevel `elem` qs,
242− argcnt <- countArgs ty,
242+ arity' <- arity ty,
243− argcnt > 0 = do
243+ arity' > 0 = do
244− argNames <- replicateM argcnt freshName
244+ argNames <- replicateM arity' freshName
245 block <- valueToCpp $
245 block <- valueToCpp $
246 curriedApp
246 curriedApp
247 (tail argNames)
247 (tail argNames)
@@ -263,7 +263,7 @@ moduleToCpp env (Module _ mn imps _ foreigns decls) = do
265 (asReturnBlock block)
265 (asReturnBlock block)
266− ] ++ if argcnt > 1
266+ ] ++ if arity' > 1
267 then [fn']
267 then [fn']
@@ -397,7 +397,7 @@ moduleToCpp env (Module _ mn imps _ foreigns decls) = do
397 return . curriedName' $ varToCpp ident
397 return . curriedName' $ varToCpp ident
399 valueToCpp (Var (_, _, Just ty, _) ident@(Qualified (Just _) _))
399 valueToCpp (Var (_, _, Just ty, _) ident@(Qualified (Just _) _))
400− | countArgs ty > 1 =
400+ | arity ty > 1 =
401 return . curriedName' $ varToCpp ident
401 return . curriedName' $ varToCpp ident
403 valueToCpp (Var _ ident) =
403 valueToCpp (Var _ ident) =
@@ -470,12 +470,12 @@ moduleToCpp env (Module _ mn imps _ foreigns decls) = do
470 ((sort $ superClassDictionaryNames constraints) ++ (fst <$> fns))
470 ((sort $ superClassDictionaryNames constraints) ++ (fst <$> fns))
472 Var ann (Qualified (Just mn') ident)
472 Var ann (Qualified (Just mn') ident)
473− | argcnt <- maybe 0 countArgs ty,
473+ | arity' <- maybe 0 arity ty,
474− argcnt > 1 -> do
474+ arity' > 1 -> do
475 f' <- valueToCpp f
475 f' <- valueToCpp f
476 let (uncurriedArgs, curriedArgs) =
476 let (uncurriedArgs, curriedArgs) =
477− if length args' >= argcnt
477+ if length args' >= arity'
478− then splitAt argcnt args'
478+ then splitAt arity' args'
479 else ([], args')
479 else ([], args')
481 if null uncurriedArgs
481 if null uncurriedArgs
@@ -791,10 +791,10 @@ moduleToCpp env (Module _ mn imps _ foreigns decls) = do
791 curriedForeigns = concat <$> mapM go allForeigns
791 curriedForeigns = concat <$> mapM go allForeigns
793 go (ident, ty)
793 go (ident, ty)
794− | argcnt <- countArgs ty,
794+ | arity' <- arity ty,
795− argcnt > 1 = do
795+ arity' > 1 = do
796 let name = identToCpp ident
796 let name = identToCpp ident
797− argNames <- replicateM argcnt freshName
797+ argNames <- replicateM arity' freshName
799 [ CppFunction
799 [ CppFunction
800 (curriedName name)
800 (curriedName name)
@@ -839,14 +839,14 @@ curriedApp args vals = foldl (\val arg -> App
839 vals args
839 vals args
841---------------------------------------------------------------------------------------------------
841---------------------------------------------------------------------------------------------------
842−countArgs :: T.Type -> Int
842+arity :: T.Type -> Int
843---------------------------------------------------------------------------------------------------
843---------------------------------------------------------------------------------------------------
844−countArgs = go 0
844+arity = go 0
846− go argcnt (T.ForAll _ t _) = go argcnt t
846+ go arity' (T.ForAll _ t _) = go arity' t
847− go argcnt (T.TypeApp (T.TypeApp fn _) t) | fn == E.tyFunction = go (argcnt + 1) t
847+ go arity' (T.TypeApp (T.TypeApp fn _) t) | fn == E.tyFunction = go (arity' + 1) t
848− go argcnt (T.ConstrainedType ts t) = go (argcnt + length ts) t
848+ go arity' (T.ConstrainedType ts t) = go (arity' + length ts) t
849− go argcnt _ = argcnt
849+ go arity' _ = arity'
851---------------------------------------------------------------------------------------------------
851---------------------------------------------------------------------------------------------------
852extractConstraints :: T.Type -> [T.Constraint]
852extractConstraints :: T.Type -> [T.Constraint]