データ型 一部だけ
整数
最大で1073741823だそうです。というか32bitCPUでは31ビット符号付整数という事みたいです。
64bitCPUだと63ビット符号付整数みたいです。
インタプリタで実行
# 1;; - : int = 1 # 1073741823;; - : int = 1073741823 # 1073741824;; - : int = -1073741824 <= コレは何?? # 1073741825;; Characters 0-10: 1073741825;; ^^^^^^^^^^ Error: Integer literal exceeds the range of representable integers of type int # -1;; - : int = -1 # -1073741823;; - : int = -1073741823 # -1073741824;; - : int = -1073741824 # -1073741825;; Characters 1-11: -1073741825;; ^^^^^^^^^^ Error: Integer literal exceeds the range of representable integers of type int
整数で演算
演算子は以下の4つ
- 加 +
- 減 -
- 乗 *
- 商 /
- 余り mod
数学と同じ計算。乗除が加減より優先、括弧で括ると括弧内優先。
インタプリタで実行
# 100 + 5;; - : int = 105 # 100 - 5;; - : int = 95 # 100 - 105;; - : int = -5 # 100 * 5;; - : int = 500 # 100 / 5;; - : int = 20 # 100 / 6;; - : int = 16 # 100 mod 5;; - : int = 0 # 100 mod 6;; - : int = 4 # (5 + 8) * 3;; - : int = 39 # 5 + 8 * 3;; - : int = 29 # 5 / 2 * 4;; - : int = 8 # 5 * 4 / 2;; - : int = 10
実数
OCamlでは整数と実数は厳格に区別されるそう。演算子が整数用のものは使用できません。
また、余りが無い代わりに、実数にはべき乗の演算子と無限大を表す値があります。
- 加 +.
- 減 -.
- 乗 *.
- 商 /.
- べき乗 **
- 無限大 infinity
- マイナス無限大 neg_infinity
無限大は実数と同じように扱えます。
# infinity;; - : float = infinity # 5.5 +. infinity;; - : float = infinity
また、実数の演算では、小数点以下が0の場合でも小数点は書く必要があります。
# 1.5 + 1.0;; Characters 0-3: 1.5 + 1.0;; ^^^ Error: This expression has type float but is here used with type int # 1.5 +. 1;; Characters 7-8: 1.5 +. 1;; ^ Error: This expression has type int but is here used with type float # 1.5 +. 1. ;; - : float = 2.5 # 1.5 +. 1.0;; - : float = 2.5
文字列
引用符"…"で囲みます。
# "Hello OCaml";; - : string = "Hello OCaml"
文字列を連結するには『^』を使います。
# "Hello " ^ "OCaml";; - : string = "Hello OCaml"
真偽値
true, falseで型はbool
論理演算
- かつ &&
- または ||
- 否定 not
論理演算の優先順は
- 『否定』
- 『かつ』
- 『または』
比較演算子
- 等しい =
- 等しくない <>
- より大きい >
- より小さい
- 以上 >=
- 以下 <=
とか。SQLみたいですね。
比較演算子は整数、実数のどちらにも使用できるようです。
ただし、比較する型は同じである必要があります。
# 10 < 100;; - : bool = true # 10.5 < 100;; Characters 7-10: 10.5 < 100;; ^^^ Error: This expression has type int but is here used with type float # 10.5 < 100.;; - : bool = true
とりあえずここまで。