Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 5 sur 5
  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    mai 2006
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : mai 2006
    Messages : 69
    Points : 79
    Points
    79

    Par défaut Question récursivité terminale sur JVM

    Bonjour,

    Je suis en train d'adapter d'anciennes sources scheme en scala. Je voudrais savoir si scala optimise la récursivité terminale?

    Merci

  2. #2
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro Nicolas Vallée
    Ingénieur d'études
    Inscrit en
    décembre 2005
    Messages
    10 216
    Détails du profil
    Informations personnelles :
    Nom : Homme Nicolas Vallée
    Âge : 30
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : décembre 2005
    Messages : 10 216
    Points : 17 564
    Points
    17 564

    Par défaut

    à ma connaissance, la JVM ne le permet pas...
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  3. #3
    LLB
    LLB est déconnecté
    Membre Expert
    Inscrit en
    mars 2002
    Messages
    962
    Détails du profil
    Informations forums :
    Inscription : mars 2002
    Messages : 962
    Points : 1 263
    Points
    1 263

    Par défaut

    Le compilateur Scala transforme la récursion simple en boucle, parce que la JVM ne fait pas cette optimisation. Pour les cas plus complexes (fonctions mutuellement récursives, appel terminal d'une fonction passée en arguments...), ça pose problème à ma connaissance.

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    mai 2006
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : mai 2006
    Messages : 69
    Points : 79
    Points
    79

    Par défaut

    ok, merci.

  5. #5
    Invité de passage
    Homme Profil pro Aymen F
    Inscrit en
    juin 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Nom : Homme Aymen F
    Âge : 25
    Localisation : Tunisie

    Informations forums :
    Inscription : juin 2010
    Messages : 4
    Points : 4
    Points
    4

    Par défaut

    +1 pour LLB
    Le compilateur optimise les fonctions récursives terminales sous quelques conditions (la redéfinition de la méthode doit être non possible (méthode private ou déclarée dans un singleton)...)
    Scala 2.8 introduit l'annotation @tailrec qui lance une exception si la méthode est non optimisable.
    Concernant les appels mutuels, renseigne toi sur le scala.util.control.TailCalls
    Pour le reste, on doit attendre le JDK 7 (ou 8, ou 22 )

+ Répondre à la discussion
Cette discussion est résolue.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •