文字列からintを読み込む

'16.3 書式付き書き出し処理'(SML版printf)の解説読み込み中….
なんだけど他の章に比べて練習問題がほとんど無い.

一つだけ地味な問題があるので回答しておく.

何回か前に作成した読み込みの関数から, 「整数を読み出してコンテキストも一緒に返す」関数を作る.

(* 問 16.8 *)
fun scanInt (s:substring) : int option * substring =
  let
    val ss = s
  in
    case intScan ss of
         SOME (i,sub) => (SOME i,sub)
       | NONE         => (NONE  ,ss )
  end

使い方

- scanInt $ Substring.full "123hoge";
val it = (SOME 123,-) : int option * substring
- scanInt $ Substring.full "hoge";
val it = (NONE,-) : int option * substring

関数宣言(?)のとこから型注釈を書くようにし始めてる. 書式はださいけど書かないと,どんなデータ渡していいのか分からないしね.