OCaml Druckanweisungen

8

Ist es möglich, Druckanweisungen zum Debuggen / Testen in Codeblöcke zu setzen? Zum Beispiel können Sie in Java System.out.println("") in der Mitte von Methoden verwenden, um Variablen oder andere Dinge zu überprüfen, aber in OCaml würde ein Befehl wie print_string funktionieren? Würde es nicht einen Wert vom Typ Einheit zurückgeben und damit einen Fehler verursachen, anstatt Ihnen zu erlauben, es zu drucken?

    
dxu 11.09.2011, 23:29
quelle

3 Antworten

15

Es wird Ihnen gut gehen, wenn Sie den Ausdruck in einen Ausdruck einbetten Reihenfolge .

AKTUALISIEREN

Hier ist ein konkretes Beispiel, weil die obige Antwort ziemlich kurz war und, nun, Antworten mit Links sind nur keine guten Antworten. Es ist die klassische tail-rekursive Formulierung faktoriell (ja, langweilig, aber vertraut):

%Vor%

Hier sehen Sie die Nebeneffekte des Drucks, aber das Ergebnis war immer noch wie erwartet 120.

    
Ray Toal 11.09.2011, 23:36
quelle
11

Da OCaml keine reine funktionale Sprache ist, gibt es viele Möglichkeiten, dies zu tun. Hier ist die Art, wie ich diese Art von Code schreibe, nur für ein konkretes Beispiel.

%Vor%

Nachdem es funktioniert, können Sie das Zeug in den Kommentaren (* DEBUG *) entfernen.

Beachten Sie die Verwendung von%! um den Puffer zu spülen. Wenn Sie mit printf viel Debugging durchführen (so wie ich), ist es sehr hilfreich, dies zu erfahren.

    
Jeffrey Scofield 12.09.2011 01:02
quelle
3

Hier ist ein einfaches Beispiel, das zeigt, dass Expression-Sequenzen wie in Ray Toals Antwort nicht erwähnt werden. Ich brauche unbedingt Klammern um sie herum:

%Vor%

Eine weitere Möglichkeit, den Rückgabewert einer Funktion zu verwerfen, ist die Verwendung von ignore :

%Vor%     
Matthias Braun 18.10.2015 18:33
quelle

Tags und Links