プログラミングの基礎-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 > && > ||」