OCaml
https://gyazo.com/6d885e50a3e8528cec1d2a3678ddcd4f
install
file
extension: .ml
run: $ ocaml hoge.ml
backend
OOP
基礎文法
関数定義
code:Ocaml
let f = fun x y -> x + y;;
let f x y = x + y;; (* 上と同じ。 funを省略した記法 *)
グローバル変数的なものは、関数定義時のものになる
こういう方式を静的スコーピングと呼ぶ
code:ml
let pi = 3.14;;
let circle_area r = pi *. r *. r;;
let pi = 3.0;; -- ここで変数名piを再利用しているが関数circle_areaには影響がない(と、言う意味で純粋なのか(?)
circle_area 2.0;;
- : float = 25.12
let式による局所定義
code:ml
let 〈変数〉 = 〈式1〉 in 〈式2〉
let n = 5 * 2 in n + n;;
〈式2〉の計算中,〈変数〉を〈式1〉(の値)とする
〈式1〉を計算し,その値に〈変数〉という名前をつけ,〈式2〉の値を計算する.
この〈変数〉の有効範囲は〈式2〉だけで,〈式2〉の外側では使用することができない.
思考の順序としては、まず最初にやりたいことが〈式2〉で、
あ、コレ変数まとめたほうがよくね、って気づいてlet 〈変数〉 = 〈式1〉を書くのか?
let rec
再帰
match式
code:ml
match 〈式0〉 with 〈パターン1〉 -> 〈式1〉 | ... | 〈パターンn〉 -> 〈式n〉
〈式0〉の値を〈パターン1〉から順に照合していき,i番目でマッチしたら(形があったら),〈式i〉を計算しその値がmatch式全体の値となる
visual programming
参考