2016-04-08 5 views
0

Gibt es eine Funktion gibt, die direkt auf die int Liste druckt? Ich muss Int-Liste für Debugging-Zwecke drucken. Ich weiß, dass ich dies erreichen kann, indem ich meine eigenen Funktionen schreibe, aber ich möchte wissen, dass es noch eine andere Methode gibt?Drucken int Liste in sml

Antwort

0

SML/NJ haben nicht so viele Funktionen für ziemlich Druck wie einige andere Implementierungen von SML aber seine PRINTCONTROL signature gibt eine gewisse Flexibilität.

Zum Beispiel mit den Standardeinstellungen müssen Sie dies:

enter image description here

Aber wenn in der REPL bewerten Sie

Control.Print.printLength := 500; 

und

Control.Print.linewidth := 80; 

dann:

enter image description here

0

Nein, gibt es keine integrierte Möglichkeit, etwas anderes als Strings in SML zu drucken. Entweder schreiben Sie Ihre eigenen Dienstprogramme oder brechen Sie Ihre Funktionen in kleinere Komponenten, die separat in der REPL getestet werden können, und dann werden Sie automatischen ziemlich Druck des Rückgabewertes erhalten.

Wenn Sie Ihre eigenen Dienstprogramme erstellen möchten, enthält das MLton-Wiki eine Seite, auf der beschrieben wird, wie eine kleine Bibliothek von Kombinatoren zum Drucken der meisten integrierten Typen erstellt wird: http://mlton.org/TypeIndexedValues#_signature.

Für Listen, erhalten sie bis zu dem Punkt, wo Sie schreiben können:

val "[3, 1, 4]" = 
    let open Show in show (list int) end [3, 1, 4] 
1

In Poly/ML gibt es eine spezielle Funktion PolyML.print, die die meisten Werte mit der entsprechenden Pretty-Print-Funktion drucken wird. Es ist nicht Teil von Standard ML, weshalb es in der PolyML Struktur ist. Möglicherweise müssen Sie eine Typbeschränkung verwenden, wenn die Funktion polymorph sein könnte.

> fun f (x: int list) = (PolyML.print x;()); 
val f = fn: int list -> unit 
> f [1,2,3,4]; 
[1, 2, 3, 4] 
val it =(): unit 

Sie können vollere Debugging-Informationen in Poly/ML mit dem Debugger erhalten. Siehe http://www.polyml.org/documentation/Tutorials/Debugging.html.