OCamlを書くときに気をつけていること
OCamlを書くときに気をつけていることをまとめてみる 1行が長くなりすぎないようにする
オフサイドルールのない言語なので空白や改行の融通がききやすい
適宜改行をして1行が長くなりすぎないようにする
括弧をできるだけ少なくする
関数合成が長くなりそうなら@@や|>を使って分ける
とくに|>は関数適用が左から右の順に行われることが見えるので多用しがち
パターンマッチがネストするときはbeginとendを使うと(見た目上の)括弧が増えない
引数に対してパターンマッチを行う関数はfunctionで始める
let rec f x = match x with ...よりもlet rec f = functionを好む
継続渡しなどで難しい場合はmatchでよい
パターンマッチの1つ目を|で始める
パターンマッチは網羅的に書く
unreachableならそのことを明示する
無理にポイントフリーにしない
ほとんど自明なところだけにする
あまりやりすぎると多相性を失う(そんなコードを書かない気もするが……)
例外とoption型について
なにかがおかしいというときは例外を送出する
なければデフォルト値で ぐらいのニュアンスのときはoption型にする
値があればそれを使って何かする、なければ別のことをする、というときはmatchを使いがち
code:match.ml
match some_or_none with
| Some x -> 1
| None -> 2
例外になりうるけどとりあえず値だけ欲しいみたいなときはtry-catchを使いがち
code:try-catch.ml
let x =
try value_or_raise
with Error -> default
参照を多用しない
これは自戒でもあるんですが……
コードの挙動が予想できなくならないように(どこまで?)
状態を持たなくても実現できる(引数を持ちまわす)けど、参照を使ったら簡潔に書けるなら書く