Bonjour, est-il possible de déclarer une fonction dans la définition d'une autre fonction ? Si oui, comment ? Merci d'avance !
Bonjour, est-il possible de déclarer une fonction dans la définition d'une autre fonction ? Si oui, comment ? Merci d'avance !
Ceci devrait répondre à ta question :
Toutefois, dans cet exemple, incr n'est pas accessible en dehors de la définition de f.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 let f x = let incr x = x+1 in incr (incr x);;
Mon blog anglais - Mes articles et critiques de livres - FAQ C++0x, avec liste des nouveautés - Conseils sur le C++ - La meilleure FAQ du monde - Avant de créer des classes que vous réutiliserez, regardez si ça n'existe pas déjà - Le site du comité de normalisation du C++
Le guide pour bien débuter en C++ - Cours et tutoriels pour apprendre C++
Et peut-on déclarer (toujours dans une fonction) une fonction dont la définition prend plusieurs lignes ? Et comment arrêter la définition de la fonction secondaire pour revenir à la définition de la fonction principale ?
Deux exemples tirés de mon tutoriel :
Code Caml : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 let power x n = let rec loop acc n = if n=0 then acc else loop (acc *. x) (n-1) in loop 1. n;; let fibonacci n = let rec loop acc0 acc1 n = if n < 2 then acc1 else loop acc1 (acc0 + acc1) (n - 1) in loop 1 1 n;;
Salut !
Une réponse un peu plus centrée sur le « raisonnement » (un bien grand mot pour peu de choses ici) : dans les langages fonctionnels, les fonctions sont des éléments de première classe. Elles peuvent donc être manipulées comme n'importe quel type de base. Bref, aucune limitation théorique au contenu et aux imbrications.
Cordialement,
Cacophrène
Blog OCaml de pied en cap
Tuto Implémentation d'un lexique avec OCaml
Projets OCamlBoggle MazeML OCamlTeX
Partager