"Introduction to Caml" ditPourquoi préférer tuple des arguments dans OCaml?
Note, en Caml, il est préférable d'utiliser des définitions de fonctions cari pour les fonctions multiples arguments, non tuples.
lors de la comparaison des conventions d'appel 'a -> 'b -> 'c
à 'a * 'b -> 'c
. Lorsque je travaillais avec SML/NJ, je m'étais habitué à utiliser des types de tuple pour l'entrée et la sortie: ('a * 'b) -> ('c * 'd)
donc l'utilisation de tuples pour exprimer plusieurs entrées semble symétrique avec la façon dont j'exprime plusieurs sorties.
Pourquoi l'exécution de la fonction OCaml est-elle recommandée pour les arguments de type tuple? S'agit-il simplement de la plus grande souplesse qui permet d'autoriser l'évaluation partielle/partielle, ou y a-t-il d'autres avantages qui découlent des détails d'implémentation du compilateur OCaml?
Le choix de l'exécution de la plupart des fonctions dans Caml-light et les versions suivantes est expliqué dans le rapport "L'expérience ZINC: une implémentation économique du langage ML". Une chose dont je me souviens est qu'avec le schéma d'évaluation approprié (décrit dans le rapport), une fonction au curry ne nécessite aucune allocation pour être appelée. http://caml.inria.fr/pub/papers/xleroy-zinc.ps.gz –
@PascalCuoq, alors qu'un tuple doit être alloué, déballé, puis GCed? –
Oui, si la fonction est également appelée avec des tuples préexistants ('ft'), il n'y a aucun moyen de contourner le fait qu'un éphémère éphémère' (x, y) 'doit être alloué pour s'appliquer' f' quand on n'a que «x» et «y». –