2007-07-25

[日記]ocaml勉強 -- catコマンド

今日もocaml勉強。
ちょっと基礎からやることにしよう。


(* 標準入力から一行ずつ読み込んで表示する *)

let rec mycat line = begin
print_endline line;
mycat (read_line ())
end;;

try
mycat (read_line ())
with
End_of_file -> None
;;

感想
* print_endlineという「出力&改行」という関数があるよ。
* 例外を補足して終了か、、、うーん、もっといい手はないだろうか。
* mycat (read_line ()) を、haskell風に mycat $ read_line () のように書けないものだろうか。。。


参考までにPythonだと以下の通り。(しかしこれはちょっと手抜きだな)

#標準入力から一行ずつ読み込んで表示する
import sys

for line in sys.stdin:
print line[:-1]


邪道だがほぼ一行にするなら以下でもよい。

import sys

map(sys.stdout.write, sys.stdin)


うーん、このPythonのコンパクトさに、自分のocaml能力が追いつくのはいつの日か、、、。