Its not a problem, in the case where you only pass in the function as an argument, it must be completely applied, so you can infer its complete (local polymorphic) type from its use.
In the more complex case where you pass in a function, partially apply it, and return the rest, you are okay if you have the whole program. I think types should be specified at module boundaries in any case, as you want a stable interface, not type inference. A module should be a smaller unit than a file, so that you can have more than one module in a file, but not more than one file in a module. In this way you can infer all the types in a module without having the whole program. Keean. On 12 Feb 2015 07:53, "Matt Oliveri" <[email protected]> wrote: > But if you get a parameter called f, and you do (f x y), what arity is > f? If applying functions of different arities had the same syntax, you > wouldn't know. But you want to know if arity mismatch is a type error. > > On Thu, Feb 12, 2015 at 2:31 AM, Keean Schupke <[email protected]> wrote: > > Not sure why you need arity inference, type inference I have done works > fine > > without it. Any given function name generally has the same arity in all > > versions, so you know the required arity from the function definitions. > You > > don't need the arity during type inference. > > > > Keean. > _______________________________________________ > bitc-dev mailing list > [email protected] > http://www.coyotos.org/mailman/listinfo/bitc-dev >
_______________________________________________ bitc-dev mailing list [email protected] http://www.coyotos.org/mailman/listinfo/bitc-dev
