Closed4
プログラミング in OCamlメモ
やろうと思ったきっかけ
年末年始だし関数型プログラミングの考え方学ぼうかと、前にこの書籍が考え方を学ぶのにはとても良いと聞いたので
M1 MacでOcamlのインストール
brewでいけるらしい
brew install ocaml
$ ocaml
OCaml version 4.12.0
# 1 + 1;;
- : int = 2
いけた
1章メモ
- OCamlは関数型かつ強く型付けされた言語
- 関数型プログラミングは
プログラムから挙動を読み取ったり確かめたりするのが楽
というのが大きい利点 -> このためには再帰
の考え方が必須、この本では重点的に扱うよ - 静的型付け言語の中には弱い型付けと強い型付けがある。
- 弱い型付けはコンパイル通っても型に関する安全性が担保されない、C言語はこれらしい
- OCamlは強い静的型付け言語
- 強い型付け言語は柔軟性が損なわれやすいけど、OCamlは
多相的型システム
なので、柔軟性高い(ジェネリクスとかかな?) - OCamlは型推論もあるよ
- GCあり、オブジェクト指向プログラミング可能
2章メモ
- 行末に
;;
タイプして、Enter押すと評価される(REPLだけ?普通のファイルでも?) - OCamlではプログラムを構成する基本かつ中心要素が
式
である- OCamlプログラムの実行は式を評価して値を求めること
- OCamlでも
文
はあるけど、式の特殊な場合という扱いらしい
- OCamlの関数適用は
()
省略可能、以下どちらの呼び方も可能
abs 2;;
abs(3 - 5);;
- 値の型が一意に決まる式はいい式(実行できる)、決まらない式は悪い式->typing error起きる
- これはコンパイル時に静的検査される。型づけに成功したプログラムは型エラーを起こさない
-
#quit
のように#
で始まる入力はディレクティブ- 対話式コンパイラに対する入力となる
- float型で四則演算する場合は演算子の後ろに
.
をつける ->2. +. 4.021 ;;
みたいに - char型はASCII文字のみで日本語は含めれない, string型は含めれる
練習問題
2.3.3がよく分からない
# int_of_float -0.7;;
Error: This expression has type float -> int
but an expression was expected of type int
# -0.7;;
- : float = -0.7
-0.7がint解釈されてる?
2.4.3
// sqrt 3*3 +4*4
# sqrt(float_of_int((3*3) + (4*4)));;
- : float = 5.
OCaml結構型厳密でめんどいな、、例題だからわざとややこしくしてるとかであってほしい
- 変数束縛は
let <変数名> = <式>;;
- OCamlにおける変数束縛は
値そのものに名前をつけること
であり値の格納されるメモリ領域に名前をつけるものでない
- 変数の再定義できるけど、メモリ領域の値を書き換えたわけでなく、新しい値を生成して束縛しただけらしい
- その性質上、ある変数に別の型の値で束縛できたりする
3章メモ
このスクラップは2023/08/05にクローズされました