シーケンス式 (逐次実行)

exp1 と exp2 がそれぞれ型 T1 と T2 であり、T1 は void 型であったとしましょう。 このときシーケンス式 (exp1; exp2) を作ることができ、その型は T2 になります。 シーケンス式 (exp1; exp2) を評価すると、まずはじめに exp1 を void 値に評価し、 さらに exp2 を評価してなんらかの値を得ます。 またこの値はシーケンス式全体の値になります。 より多くの式を列にする場合、最後以外の式は全て void 型であるべきで、 やはり最後の式はシーケンス式の型になります。 より多くの式からなるシーケンス式を評価するのは、2つの式からなるシーケンス式を評価するのと似ています。 次の例はシーケンス式です。


(print 'H'; print 'e'; print 'l'; print 'l'; print 'o')

このシーケンス式を評価するとコンソールに5つの文字 "Hello" が印字されます。 小括弧のかわりにキーワード beginend を使ってシーケンス式を作ることもできます。


begin
  print 'H'; print 'e'; print 'l'; print 'l'; print 'o'
end // end of [begin]

好みによっては最後の式の直後にセミコロンを付けることもできます。 その場合、最後の式は void 型でなければなりません。 例えば、先の例は次のようにも書けます。


begin
  print 'H'; print 'e'; print 'l'; print 'l'; print 'o';
end // end of [begin]

また次のようなスタイルのシーケンスにも注目してください。


let
  val () = print 'H'
  val () = print 'e'
  val () = print 'l'
  val () = print 'l'
  val () = print 'o'
in
  // nothing
end // end of [begin]

これは関数型プログラミングで幾分一般的なものです。