Just where has this language gone wrong?

Simen Kjaeraas simen.kjaras at gmail.com
Tue Jul 24 11:07:53 PDT 2012


On Tue, 24 Jul 2012 19:02:07 +0200, Russel Winder <russel at winder.org.uk>  
wrote:

> On Tue, 2012-07-24 at 16:59 +0200, Simen Kjaeraas wrote:
> […]
>> ...which inspired me to write this implementation of fibonacci:
>>
>> T fib(T = int)(int n, T a = 0, T b = 1) {
>>      while ( n-- ) {
>>          TypeTuple!(a,b) = tuple(b, a +b);
>>      }
>>      return a;
>> }
>
> Or possibly better:
>
> long fibonacci ( immutable long n ) {
>   return array ( takeExactly ( recurrence ! ( "a[n-1] + a[n-2]" ) ( 0L ,  
> 1L ) , cast ( size_t ) ( n + 1 ) ) ) [ n ] ;
> }
>
> ?

I had to fix things a bit (I have reasons to want the template parameter  
there):

T fib(T = int)(int n, T a = to!T(0), T b = to!T(1)) {
     while ( n-- ) {
         TypeTuple!(a,b) = tuple(b, a +b);
     }
     return a;
}

Now, try asking each of these for fib!BigInt(1_000_000). :p

-- 
Simen


More information about the Digitalmars-d mailing list