Existe-t-il un moyen d'appliquer la fonction aux membres de tuple en tant qu'arguments de fonction? Ou sinon, puis-je de toute façon créer une fonction avec un nombre arbitraire d'arguments et dans son corps appliquer une autre fonction à la "queue" comme ce serait ses arguments?Déplier le tuple dans OCaml
Répondre
Dans le cas général, non. Dans le cas de 2 arguments, vous pouvez utiliser les fonctions curry
et uncurry
dans le Batteries extensions to Pervasives.
Il pourrait être possible de faire cuire quelque chose avec le module Obj
, comme les entrailles de printf
faire, mais je resterais très loin de là. La difficulté est que le système de types ne vous donne pas le moyen d'exprimer le type d'une fonction généralisée curry
ou uncurry
. Le système de type ne vous laisse pas "calculer" sur la longueur d'un tuple - un 2-tuple est un 2-tuple et vous n'avez pas un moyen d'exprimer que (a*b*c)
est vraiment (a*b)
avec un composant supplémentaire. printf
dispose d'un support spécial du compilateur pour que les types fonctionnent correctement, et il en résulte que le type de fonction fait partie du type de format (donc des solutions similaires ne fonctionneront pas pour les tuples).
Le langage lui-même ne vous permet pas de définir une fonction sur des tuples de taille arbitraire.
Il est cependant possible de définir des fonctions avec un nombre arbitraire d'arguments en suivant this folding technique (il est décrit ici pour SML mais fonctionne aussi bien dans OCaml).
- 1. Pourquoi préférer tuple des arguments dans OCaml?
- 2. Fonction Ocaml pour convertir un tuple en une liste
- 3. Déplier les lignes vCard dans le shell
- 4. jQuery déplier div dans p
- 5. Jeu récursif dans OCaml
- 6. SectionedAdapter (déplier la disposition)
- 7. Tronquer le fichier dans ocaml
- 8. le type OCaml de l'opérateur plus
- 9. OCaml - Correspondance de modèle avec référence de liste dans un tuple
- 10. Déplier le graphique de la vue du compte dans openerp?
- 11. NSViewController dans Swift - Impossible de déplier Optional.None
- 12. Déplier les menus sur DjangoCMS?
- 13. UITextField - Impossible de déplier Optional.None
- 14. Jquery Hover Titre, déplier div
- 15. ocaml pattern match question
- 16. Trouver le signe d'un entier dans OCaml
- 17. Compilation ocaml dans le bloc-notes ++
- 18. Monad Etat dans OCaml
- 19. Transparence référentielle dans OCaml
- 20. Surcharge dans Ocaml
- 21. Motif correspondant dans OCaml
- 22. Décomposition du constructeur OCaml
- 23. Types récursifs dans OCaml?
- 24. Tuple dans le dictionnaire en Python
- 25. Vérifiez le nombre d'enfants dans tuple
- 26. LIRE LIQUIDEMENT CIRCULAIRE, AJOUTER UN NOUVEAU NŒUD ET LE DÉPLIER
- 27. tuple identité lors de l'appel de tuple sur un tuple
- 28. jQuery déplier enlever les mauvais conteneurs
- 29. Tuple déballer dans l'affectation
- 30. ocaml input_char