Caml

Discutez d'informatique ici !
khadi8
Membre Relatif
Messages: 102
Enregistré le: 20 Aoû 2009, 13:33

Caml

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?

Avatar de l’utilisateur
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.

 

Retourner vers ϟ Informatique

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 4 invités

Tu pars déja ?



Fais toi aider gratuitement sur Maths-forum !

Créé un compte en 1 minute et pose ta question dans le forum ;-)
Inscription gratuite

Identification

Pas encore inscrit ?

Ou identifiez-vous :

Inscription gratuite