Ich versuche, SML / NJ zu verwenden, und ich verwende sml < source.sml
, um den Code auszuführen, aber es gibt zu viele Informationen aus.
Dies ist beispielsweise source.sml
:
Dies ist die Ausgabe:
%Vor%Von "val it" Ausgabe in Standard ML unterdrücken , So deaktivieren Sie SMLNJ-Warnungen? und SMLNJ möchte" val it = (): Einheit "aus jeder Druckanweisung Ausführung entfernen Ich habe ein paar Tipps, wie ich sie unterdrücken kann.
Ich führe CM_VERBOSE=false sml < $filename
aus und fügte eine Zeile von Control.Print.out := {say=fn _=>(), flush=fn()=>()};
in den Code ein, aber ich habe noch eine Nachricht:
Wie kann ich nur die Ausgabe ausdrucken?
Der Befehl sml
soll interaktiv verwendet werden. Es klingt für mich so, als ob Sie lieber eine eigenständige ausführbare Datei von Ihrem Programm erstellen würden.
Es gibt ein paar Optionen:
Wenn Sie auf SML / NJ-Erweiterungen vertrauen oder einfach keine andere ML-Implementierung verwenden können, befolgen Sie die Anweisungen in dieser Beitrag , um ein SML / NJ-Heap-Image zu erstellen, das mit haufen2exec .
Eine bessere Option könnte die Verwendung des Compilers MLton sein, eine weitere Implementierung von Standard ML. Es fehlt eine REPL, aber im Gegensatz zu SML / NJ benötigt es kein Boilerplate, um eine eigenständige ausführbare Datei zu generieren. Bauen ist so einfach wie das Ausgeben:
%Vor%