Bonjour à tous !
Je dois réaliser un projet en Ocaml mias j'ai une erreur que je n'arrive pas à résoudre. Voici la fonction qui comporte cette erreur:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
let programme = 
  print_string "du texte du texte du texte\n";
  if !Sys.interactive then () else 
    begin 
      Graphics.open_graph "";
      Graphics.resize_window ( !xsize / !preview) ( !ysize / !preview);
      while true do
	let s = Graphics.wait_next_event[Key_pressed] in
	  if s.keypressed then match s.key with
	    |'f'-> string_of_expr !expression_en_cours
	    |'g'-> if (!colour == true) then (genere_preview_en_couleurs !preview (!xsize,!ysize)) else (genere_preview_en_gris !preview (!xsize,!ysize))
	    | 's' -> if (!colour == true)
	      then(sauvegarde_postscript_en_couleurs !expression_en_cours (!expression_rouge,!expression_vert,!expression_bleu) (!xsize,!ysize) !fich)
	      else(sauvegarde_postscript_en_gris !expression_en_cours (!xsize,!ysize) !fich)
	    |_->()
	    |'q' -> raise exit
	    
      done
    end
et voila, lors de l'évaluation de cette fonction ou meme de la compilation, j'ai cette erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
                                    Characters 845-979:
This expression has type unit but is here used with type string
donc sur la ligne en italique dans mon code.
Pourtant, quand je lance la commande seule dans la boucle interactive, ca fonctionne parfaitement !
string_of_expr est une fonction que j'ai écrite et expression_en_cours est une variable globale en "ref".

Il faut aussi dire que quand j'inverse l'ordre des lignes dans la match with, c'est toujours a partir de la 2eme condition que l'erreur interevient, c'est surement une erreur dans le match with mais je ne vois pas laquelle .......

PS: désolé pour le sujet mais je n'ai vraiment pas su comment décrire ca ...