[erlang-patches] EEP37: Funs with names

Anthony Ramine n.oxyde@REDACTED
Tue Feb 5 13:51:00 CET 2013


Hi,

Rebased against latest master—which I gather is now for R17. Please refetch.

Regards,

-- 
Anthony Ramine

Le 21 nov. 2012 à 15:36, Anthony Ramine a écrit :

> Hi,
> 
> I had forgotten to update the abstract format documentation, named_fun is
> now mentioned in absform.xml in the doc commit.
> 
> Please refetch,
> 
> -- 
> Anthony Ramine
> 
> Le 15 nov. 2012 à 15:22, Henrik Nord a écrit :
> 
>> I will add this patch to 'master-pu'.
>> 
>> Thank you for your contribution!
>> 
>> 
>> On 2012-11-14 17:42, Anthony Ramine wrote:
>>> This patch implements EEP37: Funs with names
>>> 
>>> This adds optional names to fun expressions. A named fun expression
>>> is parsed as a tuple `{named_fun,Loc,Name,Clauses}` in erl_parse.
>>> 
>>> If a fun expression has a name, it must be present and be the same in
>>> every of its clauses. The function name shadows the environment of the
>>> expression shadowing the environment and it is shadowed by the
>>> environment of the clauses' arguments. An unused function name triggers
>>> a warning unless it is prefixed by _, just as every variable.
>>> Variable _ is allowed as a function name.
>>> 
>>> It is not an error to put a named function in a record field default
>>> value.
>>> 
>>> When transforming to Core Erlang, the named fun Fun is changed into
>>> the following expression:
>>> 
>>>    letrec 'Fun'/Arity =
>>>               fun (Args) ->
>>>                       let <Fun> = 'Fun'/Arity
>>>                       in Case
>>>    in 'Fun'/Arity
>>> 
>>> where Args is the list of arguments of 'Fun'/Arity and Case the
>>> Core Erlang expression corresponding to the clauses of Fun.
>>> 
>>> This transformation allows us to entirely skip any k_var to k_local
>>> transformation in the fun's clauses bodies.
>>> 
>>> 	https://github.com/nox/otp/compare/erlang:master...eep37
>>> 	https://github.com/nox/otp/compare/erlang:master...eep37.patch
>>> 
>>> 	git fetch https://github.com/nox/otp eep37
>>> 
>>> Regards,
>>> 
>> 
>> -- 
>> /Henrik Nord Erlang/OTP
>> 
> 




More information about the erlang-patches mailing list