Lambda functions in D

John Colvin via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Sat May 9 08:34:45 PDT 2015


On Saturday, 9 May 2015 at 14:47:21 UTC, Russel Winder wrote:
> On Sat, 2015-05-09 at 07:15 -0700, Ali Çehreli via 
> Digitalmars-d-learn wrote:
>> On 05/09/2015 04:59 AM, Dennis Ritchie wrote:
>> > On Saturday, 9 May 2015 at 11:49:48 UTC, Timon Gehr wrote:
>> > > assert((function int(int
>> > > x)=>x?x*__traits(parent,{})(x-1):1)(10)==3628800);
>> > 
>> > Thanks. Yes, it is similar to what I wanted :)
>> 
>> Also interesting:
>> 
>>    http://rosettacode.org/wiki/Y_combinator#D
>> 
>> I think that code was improved by Timon Gehr as well.
>> 
>> Ali
>
> Sadly all the solutions are unsound since they are recursive 
> but not
> tail recursive. Oh it doesn't matter as D doesn't have tail call
> optimization.
>
> There are lots of good imperative implementations.
>
> Of course none of the implementation can calculate 
> factorial(24) as
> they are using hardware values which are bounded and cannot 
> store
> reasonable numbers.
>
> Could use iota. Oh no we can't as BigNums are not integral.

you could probably use sequence, or even recurrence.


More information about the Digitalmars-d-learn mailing list