一行読み込んで空白で切ったリストを作る

codeforces の問題を解きながらコード書く練習中。使えそうなパターンを蓄積してみたい。既出とか気にしませんよ。

let readWords fn = stdin.ReadLine().Split([|' '|]) |> Array.toList |> List.map fn

GCJ で拾ったコードの中にあったものを少し改造しただけですが。

元のコードは引数なし (正確には unit を受け取る) だったんですが,どうせ整数とかに変換したいことが多いと思うので,関数を受け取って単語ごとに適用したリストを返すようにしてみました。

こんな感じで使います。

let [a; b; c; d] = readWords int64 in ...

"1 2 3 4\n" という入力があると,a, b, c, d をそれぞれ 1, 2, 3, 4 に束縛して残りの式を評価。

渡す関数としては int 以外に int64, float, id などが使えそうです。