# [erlang-questions] Orthogonality and Principle of least surprise Was: chained functions

Robert Virding <>
Wed Feb 1 22:47:16 CET 2012

```The problem with your reasoning is that your "functional reference" may refer to many functions. Functions with the same name and a different arity are DIFFERENT functions, one reference cannot refer to them. It is like expecting the "reference" F = module:big also to call not just the function 'big' but also the function 'big_name' because they have the same prefix. They ARE different functions which just happen to have the same name.

Robert

----- Original Message -----
>
> Am Mittwoch, 01. Februar 2012 15:04 CET, Alisdair Sullivan
> <> schrieb:
>
> > functions in erlang are identified by their name and their arity
> >
> > 'F = module:fun()' is ok because the arity, 0, is implied by the
> > arguments
> >
> > 'F = module:fun' is not okay because it does not refer to a
> > specific function. you need to tell the compiler which function
> > you wish to call. hence the 'fun module:fun/n' syntax
>
> IMHO it depends what one is trying to achieve. From an operational
> point of view I am fine with having a "function reference" as
> something that can be called if applied with concrete arguments.
> Hence I do not require a funciton object in the sense that it
> represents the function itself.
>
> If one wants to make sure that the right function is targeted one
> could always write it like: "F = module:fun/N", which is not
> something I am thinking of.
>
> With the exception of currying, where the arity of the function
> arguments vs the actual arguments differs, it suffices to just apply
> the actual arguments to the matching function.
>
> E.g.
>
> map([],_) -> [];
> map([X|Rest], F) -> [F(X) | map(Rest, F)].
>
> > map([1,2,3], math:square).
> [1,4,9]
>
> This is a more lazy / symbolic usage of functions.
>
> Best,
> Jakob
>
> > _______________________________________________
> > erlang-questions mailing list
> >
> > http://erlang.org/mailman/listinfo/erlang-questions
>
>
>
>
>
> _______________________________________________
> erlang-questions mailing list
>
> http://erlang.org/mailman/listinfo/erlang-questions
>

```