Inscription / Connexion Nouveau Sujet
Niveau algorithmique
Partager :

CAML: problème fonction itere: f n -> f^n=fofo...of

Posté par
Stef-
07-03-10 à 14:06

salut à tous,

je dois programmer une fonction itere, qui a une fonction f et un entier n associe la fonction f^n=fofo....of. le problème, c'est que j'y arrive pas. et surtout, que je ne vois pas ce qui cloche dans ce que j'écris, à savoir:

let rec itere f n= match n with
|0 -> function x -> x
|_ -> function x -> f ((itere f (n-1)) x);;

et le message d'erreur de Caml "Error: This expression has type ('a -> 'b) -> 'a -> 'b but is here used with type 'a -> 'c" qui va avec... qui m'aide moyennement on va dire.

bref, j'éspère que quelqu'un pourra me débloquer, je pense pas au vu du problème que ça doit être très dur, mais je vois pas... d'avance merci

Posté par
Drysss
re : CAML: problème fonction itere: f n -> f^n=fofo...of 07-03-10 à 14:42

crée toi une fonction compose qui marche à côté pour avoir plus précisément où ca bug.

Par exemple :
let compose f g = function
|x-> f (g x);;

et après tu fais le programme :

let rec itere f = function
|0-> (function |x -> x)
|n -> compose f (itere f (n-1));;

Je n'ai pas caml donc je ne peux pas tester.

Posté par
Stef-
re : CAML: problème fonction itere: f n -> f^n=fofo...of 07-03-10 à 15:19

sur tes conseils, j'ai fait:

let compose f g x = f (g x);;

let rec itere f n = match n with
|0-> (function x -> x)
|n -> compose f (itere f (n-1));;

et ça marche bien merci. par contre je ne comprend toujours pas ce qui a pu cloché pour ce que j'avais fait dans mon 1er post

Posté par
Drysss
re : CAML: problème fonction itere: f n -> f^n=fofo...of 07-03-10 à 18:50

Il est possible qu'il y ait des problemes avec le parenthesage.

Sinon je ne vois pas...



Vous devez être membre accéder à ce service...

Pas encore inscrit ?

1 compte par personne, multi-compte interdit !

Ou identifiez-vous :


Rester sur la page

Désolé, votre version d'Internet Explorer est plus que périmée ! Merci de le mettre à jour ou de télécharger Firefox ou Google Chrome pour utiliser le site. Votre ordinateur vous remerciera !