Bonsoir, voilà j'ai un souci qui me fait croire à une mauvaise imbrication des if else if else.
Si quelqu'un pouvait expliquer un peu la philosophie de la prog fonctionnelle à ce niveau et l'application à ocaml.
Il y a des moments où je ne vois vraiment pas comment traduire ce que je pense fonctionnellement enfin en Ocaml surtout.
Comment écrire cette partie proprement en ocaml en supprimant par la même occasion l'erreur bien entendu
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
20
21
22
23
24 let print_int_zipper (p ,l) = let rec aux = function |[] -> () |e::ls -> print_int e; print_string "; "; aux ls in print_string " ["; aux p ; print_string "] * ["; aux l; print_char ']'; print_newline() let read_char () = let c = String.get (read_line()) 0 print_char (read_char()); let lz = ([], [2;3;4;5;6;7;8;9]) print_int_zipper lz; while (true) do let c = read_char () in if c = 'd' then begin a_d lz ; print_int_zipper lz end else begin if c = 'g' then begin a_g lz ; print_int_zipper lz end else print_int_zipper lz end done ;; (* ligne 42 *)
Pour info c'est un fichier sur la structure de donnée zipper.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 File "zipper.ml", line 42, characters 5-7: Error: Syntax error
Je veux pouvoir naviguer sur ces structures via des commandes g:gauche, d:droite x:surplace etc... Et de voir après chaque opération, ma position.
Pour le moment c'est un zipper de liste juste après se trouve la définition pour les arbres binaires et les forets sans la posibilité de naviguer pour le moment.
Partager