プログラミングの基礎-1
プログラマーズホリデーにて情報を入手した「プログラミングの基礎/浅井健一」をしこしこやっていこうと思います。
関数型言語OCaml(オーキャムル)
- 関数型言語
- 単純、かつ強力 = より人間の思考レベルに近い記述が出来る
- 記述量が少ない
プログラミングは、関数型言語から初めて、オブジェクト指向に進む方が良いらしい。
OCamlのインストール後は、コマンドラインから
$ ocaml
でインタプリタが起動する。
日本語を表示させるために、文字エンコードをEUCに設定しておく。
というか、はてな記法のスーパーpre記法がOCamlに対応してる。。。
3 ;;
とやると
- : int = 3
という分かる様な分からない様な出力結果が表示される。
これは、「[3 ;;]という直前(-)の式の結果がint型で、値が3」と読む。
四則演算については、[+,-,*,mod(余)]が使われる。
# 7 - 3 * 4 ;; - : int = -5 # 7 / 2 * 2 ;; - : int = 6 # 7 * 2 / 2 ;; - : int = 7
末尾の[;;]は、入力の区切りでインタプリタはこの入力を見て実行を開始する。
[;;]を忘れると
# 7 - 3 * 4 ;; - : int = -5 #
のように入力待ちになる。
実数
# 3.145
のように「.(小数点)」を使えば表現できるが、四則演算をする場合には別の演算子を使う。
# 2.0 *. 3.14 *. 10.0
つまりは演算子に「.」をつける
また、2.0の様に小数点以下が0なら、0を省略できるが、小数点は書く必要がある。
# 2. *. 3.14 *. 10.
実行結果
- : float = 5.83333333333333304
べき乗の計算には「**」が使えるが、実数しか使えない。
# 1.73 ** 2.0 ;; - : float = 2.9929 # 1.73 ** 2 ;; Error: This expression has type int but is here used with type float
実際のエラー表示には、エラー箇所にアンダーラインが引かれるぽい。上の場合は、**のあとの2にアンダーラインが付く。
無限大?
OCamlには、無限大を表す特殊な実数がある。(!)
# infinity ;; - : float = infinity # infinity +. 3. ;; # neg_inifinity ;; - : float = neg_infinity # 3. -. infinity ;; - : float = neg_infinity
文字列
「" "」で囲めば文字列。文字列の結合は「^」を使う。
# "東京" ^ "特許" ^ "許可局" ^ "局長" ;; - : string = "東京特許許可局局長"
真偽値
true, falseを表す。
# 2 > 3 ;; - : bool = false # 3.1415 ** 2. < 10. ;; - : bool = true # 3 mod 2 = 2 ;; - : bool = false # 3 + 4 + 5 = 4 * 3 ;; - : bool = true
論理演算の順序は「not > && > ||」