let 系
んで let はなんか二つの用途に使える感じで、変数束縛と関数定義です。引数が無い場合は変数束縛になる。
let tsuhai_name = [| "東"; "南"; "西"; "北"; "白"; "發"; "中" |]
とかがそれ。引数は括弧とかつけずにコンマとかも無しで空白でくぎってならべる。呼ぶ時も同じような感じ。
let add x y = x + y let _ = print_int (add 1 2)
とかそんなの。最後に評価された値が返り値になります。括弧とかコンマとかが無い理由はたぶんカリー化が見やすいからだと思います。2引数関数を1引数だけ与えてやると1引数関数に変化するっていうアレですね。
let add x y = x + y let add2 = add 2 let _ = print_int (add2 3)
再帰させたい関数は let rec で始めますが、これがもう絶対忘れます。
let hoge () = hoge ()
とかコンパイルすると Unbound value hoge とかいう非常に意味のわからんエラーメッセージが出てやる気なくなりポイントの1つな気がします。だいたい再帰スキーな関数型なのになんでそんなめんどいの自動で適当になんかやってよとか思うんですけどなんか必要なんですかね。