• # Fibo

    Posté par . En réponse à la dépêche Sortie du Glorious Haskell Compiler 7.8. Évalué à 1.

    Quand j'ai lu :

    La spécificité la plus marquante de Haskell, c'est qu'il s'agit d'un langage fonctionnel pur : une fonction appelée avec les mêmes arguments renverra toujours le même résultat,

    je me suis dit : chouette, je vais essayer fib 100. Mais, je m'attendais à ce qu'il stocke dans un cache une partie du résultat des fonctions en interne pour gagner du temps puisque avec des paramètres donnés, il n'y a qu'un résultat. Apparemment non, en tous cas pas par défaut.

    Du coup j'ai essayé en template C++ pour le faire compiler par le compilateur. C'est efficace :

    #include <iostream>
    using namespace std
    template <unsigned long long n> struct fibo {
     static const double result = fibo<n-1> + fibo <n-2>;
    };
    template <> struct fibo <1> {
     static const double result = 1.0;
    };
    template <> struct fibo <0> {
     static const double result = 0.0;
    };
    int main ()
    {
     cout << "Resultat 1000 : " << fibo<1000>::result << endl;
     return 0;
    }