Caml
Discutez d'informatique ici !
-
khadi8
- Membre Relatif
- Messages: 102
- Enregistré le: 20 Aoû 2009, 13:33
-
par khadi8 » 30 Juin 2010, 18:57
salut
j'ai la fonction collatz suivante
col(x)={ 1 si x=0 ou x=1
col(x div 2) si x pair
col(3x+1) si x impair
comment l'écrire en langage CAML
j'ai commencé mais j'ai pas su continué voila ce que j'ai pu faire
- Code: Tout sélectionner
let rec col x =if x<= 1 then 1 else if (x mod 2= 0) then.......................
-
buzard
- Membre Relatif
- Messages: 274
- Enregistré le: 22 Mai 2006, 15:29
-
par buzard » 30 Oct 2010, 18:50
Salut,
le caml est un langage de programmation fonctionnel, le "if hten else" c'est plutôt du style procédurale. De mémoire j'aurais écris du filtrage avec garde c'est ce qui conviens le mieux pour les définitions par cas.
- Code: Tout sélectionner
let rec col = function
| 0 | 1 -> 1
| x when x mod 2 = 0 -> col (x/2)
| x -> col (3x+1)
;;
mais bon, à vu d'oeil je dirais que ta fonction est constante = 1 pour tout entier naturel
-
Doraki
- Habitué(e)
- Messages: 5021
- Enregistré le: 20 Aoû 2008, 12:07
-
par Doraki » 30 Oct 2010, 21:17
buzard a écrit:mais bon, à vu d'oeil je dirais que ta fonction est constante = 1 pour tout entier naturel
Si t'as une preuve, ça m'intéresse.
-
buzard
- Membre Relatif
- Messages: 274
- Enregistré le: 22 Mai 2006, 15:29
-
par buzard » 30 Oct 2010, 21:46
Doraki a écrit:Si t'as une preuve, ça m'intéresse.
bon j'y suis peut-être allé un peu fort, je me rabats sur la version faible (par induction) :
la fonction est constante = 1 sur son ensemble de définition.
La question à mille sous : est-ce qu'elle est définie pour tout entier naturel?
-
fatal_error
- Modérateur
- Messages: 6610
- Enregistré le: 22 Nov 2007, 13:00
-
par fatal_error » 31 Oct 2010, 17:21
en tout cas, on pourra vanter tout ce qu'on veut du caml, ca reste hautement illisible
la vie est une fête
-
bitonio
- Membre Rationnel
- Messages: 764
- Enregistré le: 28 Mai 2006, 16:29
-
par bitonio » 02 Nov 2010, 19:59
fatal_error a écrit:en tout cas, on pourra vanter tout ce qu'on veut du caml, ca reste hautement illisible
Je suis pas d'accord du tout pour le coup, ca dépend ce que tu fais avec... Pour faire des choses assez proches des maths, je demande à voir le résultat en C/C++,Java ou compagnie... Après si tu veux faire des sokets, c'est une autre histoire (même si on peut en faire avec CamL, sisi!)
-
buzard
- Membre Relatif
- Messages: 274
- Enregistré le: 22 Mai 2006, 15:29
-
par buzard » 02 Nov 2010, 21:00
Bonsoir,
Oui plutôt d'accord, mais il faut comparer ce qui est comparable. Parmi les langages fonctionnels Caml est certainement le plus claire. La même chose en Lisp ça c'est carrément illisible.
la syntaxe caml ne fait que reprendre les principes de l'outil le plus puissant en logique et théorie des langages que sont les systèmes formels et les règles de réécritures.
C'est de loin la manière la plus naturel de programmer (du moins pour des besoins de matheux ou de logicien). Après c'est vrai que tu n'implémenteras pas le moteur 3D de quake en caml, par contre tu gagneras à en implémenter l'intelligence artificielle.
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 4 invités