2009-08-12 13 views
7

私は、インタラクティブな環境を好きなように設定するスタンダードML(SML/NJ)に "スクリプト"を書いています。スクリプトが最後に行うことは、すべてがスムーズに行われたことを示すメッセージを出力することです。基本的に、最後の行はこれです:私は、スクリプトを実行するとスタンダードMLの "val it"出力を抑制する

print "SML is ready.\n"; 

、すべてがうまく行くが、SMLインタプリタは、印刷関数からの戻り値を表示します。私は単に画面に何かを印刷していますので

SML is ready. 
val it =() : unit 
- 

は、どのように私は抑えることができる「ことをVAL =():ユニット」出力そうインタプリタが続く私が見るすべては「SMLの準備ができている」であることのメッセージプロンプト?

答えて

10

SML-NJのプロンプトと応答を抑制するには、次の割り当てを使用します。

Compiler.Control.Print.out := {say=fn _=>(), flush=fn()=>()}; 
print "I don't show my type"; 

I don't show my type 

なぜ型を返す印刷関数が悪いのかわかりませんが、

say機能は、印刷される内容を制御します。

以下SML/NJはhttp://www.cs.cornell.edu/riccardo/prog-smlnj/notes-011001.pdf

useSilently関数はファイルをロードするために使用することができるが、任意の出力ローディングに関連付け

fun useSilently (s) = let 
val saved = !Compiler.Control.Print.out 
fun done() = Compiler.Control.Print.out := saved 
in 
Compiler.Control.Print.out := {say = fn _ =>(), flush = fn() =>()} 
(use (s); done()) handle _ => done() 
end 

を表示することなく、これはノートの大きい例があります基本的にsay関数を何もしないように変更し、最後にそれを設定します。

2

使用この:

val _ = print "I don't show my type"; 
関連する問題