OCaml
https://gyazo.com/6d885e50a3e8528cec1d2a3678ddcd4f
install
https://qiita.com/oshuya/items/dd0faa707c5baf54249d
OCaml interpreter
OPAM
file
extension: .ml
run: $ ocaml hoge.ml
mrselin(未設定)
https://qiita.com/zenwerk/items/7bc6177adcbeb6990e60
http://no-maddojp.hatenablog.com/entry/2014/12/01/022007
https://github.com/zshipko/ocaml-rs
Rust
backend
Malfunction
Lambda言語
https://zehnpaard.hatenablog.com/entry/2022/11/01/200331
OCamlの型
OOP
https://xtech.nikkei.com/it/article/COLUMN/20061107/252787/
https://ocaml.xyz/book/
ocaml用のSciPy
基礎文法
http://mayah.jp/article/2010/ocaml-basic-syntax-master/#基礎
関数定義
code:Ocaml
let f = fun x y -> x + y;;
let f x y = x + y;; (* 上と同じ。 funを省略した記法 *)
https://qiita.com/takeohman/items/09eee9065a1b893f8bcb
http://www.fos.kuis.kyoto-u.ac.jp/~igarashi/class/pl/03-ocaml.html
グローバル変数的なものは、関数定義時のものになる
こういう方式を静的スコーピングと呼ぶ
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
再帰
https://camlspotter.hatenablog.com/entry/20110509/1304933919
match式
code:ml
match 〈式0〉 with 〈パターン1〉 -> 〈式1〉 | ... | 〈パターンn〉 -> 〈式n〉
〈式0〉の値を〈パターン1〉から順に照合していき,i番目でマッチしたら(形があったら),〈式i〉を計算しその値がmatch式全体の値となる
visual programming
https://harukamm.github.io/ocaml-blockly/
OCaml 5.0
参考
https://camlspotter.hatenablog.com/entry/20080906/1220723583
関数型プログラミングとOOP
https://xtech.nikkei.com/it/article/COLUMN/20061107/252787/
#プログラミング言語