2行目は等号(=)で始まると言っているので、コードをインタープリターに直接書き込んでいるように見えますか?
いずれにせよ、あなたは自分でパイプを書かなければなりません。パイプはSML構文の一部であり、さまざまな関数句を「示す」ために使用されますが、ここではセミコロンには2つの意味があります。SML構文の一部として(ここでは厳密には必要ありませんが)、インタプリタへの特別なインジケータとして(以下で説明するように)倍増します。
ほとんどのインタープリターは、セミコロンを読み取るまでstdinからデータを読み取り続け、その後、最初に、ユーザーが書き込んだ内容の解釈を開始します。SML / NJインタプリタの場合、最初の行は「-」で始まり、後続の行は「=」で始まります。「-」および「=」記号は、最終的なプログラムの一部として解釈されないことに注意してください。この例を以下に示します。
- fun foo 0 y = 0
= | foo 1 y = y
= | foo x y = x*y;
val foo = fn : int -> int -> int
ここで最後の行は、セミコロンを読み取るときのインタープリターからの出力です。ただし、セミコロンを作成する前に2つの関数を宣言することもできます。
- fun foo 0 y = 0
= | foo 1 y = y
= | foo x y = x * y
= fun fact 0 = 1
= | fact n = n * fact (n-1);
val foo = fn : int -> int -> int
val fact = fn : int -> int
パイプに関しては、shift + "\"と入力して取得できるかどうかは、キーボードのレイアウトによって異なります。ただし、投稿には複数のパイプが含まれているため、パイプの書き方はすでに知っていると思います。