|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Membre actif
![]() Inscription : février 2007 Messages : 202 ![]() |
Bonsoir à tous,
J'ai un tout petit problème de compilation d'une de mes fonctions en CamlLight, erreur du genre "This expression has type int but is used with type unit"... Cette erreur est causée par ce bout de code: Code :
Je pense que cela vient d'un mauvais usage des exceptions (que je n'ai jamais utilisé, mais que j'aimerais beaucoup employer ici). Toute aide est la bienvenue! Merci à vous. |
||
|
|
00
|
|
|
#2 | ||||
|
Membre actif
![]() Valentin RobertÉtudiant Inscription : juin 2004 Messages : 70 ![]() |
Code :
Le problème est que les deux dernières instructions sont parsées comme la suite du gestionnaire d'exceptions, plutôt que comme deux instructions à part. Une solution au problème consiste à rajouter un begin...end comme ceci : Code :
__________________
Apprendre Haskell vous fera le plus grand bien ! |
||||
|
10
|
|
|
#3 |
|
Membre actif
![]() Inscription : février 2007 Messages : 202 ![]() |
Merci beaucoup, c'était bien ça
Est-ce que tu pourrais me révéler ce que tu penses de ce code? En quoi il est moche et tout pourri ^^ ? Je suis un gros débutant en Caml, et ce code est une traduction - certainement malheureuse - d'un code en C. |
|
|
00
|
|
|
#4 |
|
Membre actif
![]() Valentin RobertÉtudiant Inscription : juin 2004 Messages : 70 ![]() |
Non en fait j'avais pas cherché à comprendre, ma remarque voulait juste dire que je ne m'étais pas attardé sur ces détails, juste sur la résolution de ton problème.
Je viens de jeter un oeil un peu plus réfléchi. Ca semble raisonnable, j'ai un peu de mal à voir ce qu'il se passe dans les cas limites. J'imagine que g et d signifient gauche et droite, et que le tout sert à implémenter un quick-sort ou un tri assez semblable. Je te laisse le loisir de tester pour te convaincre que le code est correct.
__________________
Apprendre Haskell vous fera le plus grand bien ! |
|
00
|
|
|
#5 |
|
Membre actif
![]() Inscription : février 2007 Messages : 202 ![]() |
Oui, c'est bien la fonction de partitionnement pour un tri rapide.
Qui marchait très bien en C alors j'espère bien qu'elle fonctionne en Caml Pour voir comment ça marche, un dessin convient: on cherche dans la partie gauche un élément superieur au pivot, un élément avec qui permuter dans la partie droite. Les tests évitent le croisement des deux indexs de parcours et le cas où tous les éléments sont supérieurs (ou inférieurs inmplicitement) au pivot. Et on répète tant que les indexs ne se sont pas croisés. Me reste plus qu'à faire l'amélioration de la médiane de trois et du non traitement des petits tableaux, et hop. |
|
|
00
|
Copyright © 2000-2013 - www.developpez.com