副作用はなるべくないほうがよい。
それはそうなんですが、副作用を使ったほうが効率がよかったり、コードの見通しが良くなったりすることもよくある話です。
例えば、以下のような単純な表示関数printを考えます。

let print s =
  Format.printf "%s@." s

当然ながら、呼び出すと以下のように引数の文字列をそのまま表示します。

# print "a";;
a
- : unit = ()
# print "b";;
b
- : unit = ()
# print "c";;
c

Continue reading