Was ist das Problem mit dem Code unten? Ich kämpfe sehr mit dem Wissen, wann ich ';' oder ';;' oder benutze begin ende in OCaml. Hier muss ich einige Kanten lesen und in Graphen einfügen, aber ich muss dies mit dem Rest des Programms verbinden, so dass es g (ein Graph) mit allen Kanten verwenden kann. Wenn ich dies tun, sagt sie Fehler: SyntaxfehlerSyntaxfehler while-Schleife in OCaml
let i = ref n in
while !i > 0 do
(
let pair = read_edge Scanning.stdin in
let g = insert_edge (fst pair) (snd pair) g in
i := !i - 1
)
done in (* giving error in this line *)
let rec do_stuff l =
match l with
| [] ->()
| h::t -> print_int h;do_stuff t in
(* more functions)
Eigentlich ';' ist nur syntaktischer Zucker für 'let() = in' wenn ich mich nicht irre. –
RichouHunter
Meine Idee von 'let g = ....' war es, g so zu aktualisieren, dass es nach Beendigung der while-Schleife vom Rest des Programms benutzt werden kann. Ich wollte es mit 'done in' verbinden, wenn ich es nicht kann, wie kann ich das lösen? Ich glaube, ich habe 'vorher 'gesehen, aber jetzt, wo ich daran denke, war es in einer For-Schleife, nicht in einer While-Schleife. –
@power_output Die einzige Möglichkeit, in der Sie "done" sehen würden, wäre, wenn die Schleife als Wert in einem 'let' Ausdruck verwendet würde, d. H.' Let etwas = while cond do ... done in ... '. Wie auch immer, 'let' erzeugt eine neue Variable - sie beeinflusst nicht den Wert einer existierenden Variablen (was Sie nicht tun können). Wenn du etwas neu zuweisen willst, brauchst du ein 'ref' (oder irgendwas mit einem veränderbaren Mitglied). – sepp2k