第2章 基本的なデータ型
2.1 整数
# 3 ;;
- : int = 3
# 3 + 4 * 2 ;;
- : int = 11
# (3 + 4) * 2 ;;
- : int = 14
# 2 - 3 ;;
- : int = -1
# 7 / 2 ;;
- : int = 3
# 7 mod 2 ;;
- : int = 1
問題2.1 次の整数値をOCamlインタプリタを使って計算せよ。
(1) 7 – 3 × 4
# 7 - 3 * 4 ;;
- : int = -5
(2) 7 ÷ 2 × 2
# 7 / 2 * 2 ;;
- : int = 6
(3) 7 × 2 ÷ 2
# 7 * 2 / 2 ;;
- : int = 7
2.2 実数
# 2.718 ;;
- : float = 2.718
# (3.0 +. 5.0) *. 8.0 /. 3.0 ;;
- : float = 21.3333333333333321
# (3. +. 5.) *. 8. /. 3. ;;
- : float = 21.3333333333333321
# 1.41421356 ** 2.0 ;;
- : float = 1.99999999328787381
# 1.41421356 ** 2 ;;
Error: This expression has type int but an expression was expected of type
float
# 1.41421356 ** 2.0 ;;
- : float = 1.99999999328787381
んんん、実数キモイ・・・。
問題2.2 次の実数値をOCamlインタプリタを使って計算せよ。
(1) 2・3.14・10
# 2. *. 3.14 *. 10. ;;
- : float = 62.8000000000000043
(2) 1.732
# 1.73 ** 2. ;;
- : float = 2.9929
(3) 7/2
(* 間違い *)
# 7 / 2 ;;
- : int = 3
(* 正解 *)
# 7. /. 2. ;;
- : float = 3.5
# infinity ;;
- : float = infinity
# infinity +. 3.0 ;;
- : float = infinity
# 2.0 /. infinity ;;
- : float = 0.
# neg_infinity ;;
- : float = neg_infinity
# 3.0 -. infinity ;;
- : float = neg_infinity
2.3 文字列
# "Yokohama" ;;
- : string = "Yokohama"
# "横浜" ;;
- : string = "横�\156"
# "横浜" ^ "駅" ;;
- : string = "横�\156�\133"
# "新" ^ "横浜" ^ "駅" ;;
- : string = "�\150�横�\156�\133"
# "" ;;
- : string = ""
問題2.3 次のそれぞれの文字列をOCamlインタプリタに入力せよ。次に、それらの文字列を結合してみよ。
(1) 「東京」、「特許」、「許可局」、「局長」
# "東京" ^ "特許" ^ "許可局" ^ "局長" ;;
- : string = "�\157�京�\137�許許�\143��\128�\128�\149�"
(2) 「関数」、「型」、「言語」
# "関数" ^ "型" ^ "言語" ;;
- : string = "�\150��\149��\158\139�\128�\158"
2.4 真偽値
# true ;;
- : bool = true
# false ;;
- : bool = false
# true && true ;;
- : bool = true
# true && false ;;
- : bool = false
# true || false ;;
- : bool = true
# false || false ;;
- : bool = false
# not true ;;
- : bool = false
# not false ;;
- : bool = true
# not (false || not false && not false) ;;
- : bool = false
# not (false || ((not false) && (not false))) ;;
- : bool = false
# 2 < 3 ;;
- : bool = true
# 2 < 3 && 2.0 > 3.0 ;;
- : bool = false
# 2 < 3 || 2.0 = 3.0 ;;
- : bool = true
# not (3 < 2) ;;
- : bool = true
# true > false ;;
- : bool = true
# false > true ;;
- : bool = false
# true > true ;;
- : bool = false
# 2 < 3.0 ;;
Error: This expression has type float but an expression was expected of type
int
問題2.4 次の文章の真偽をOCamlインタプリタを使って確認せよ。
(1) 2は3より大きい。
# 2 > 3 ;;
- : bool = false
(2) 3.1415の2乗より10は小さくない。
# not (3.1415 ** 2.0 > 10.0) ;;
- : bool = true
(3) 8を3で割った余りは2である。
# 8 mod 3 = 2 ;;
- : bool = true
(4) 3 4 5 と4 × 3は等しい。
# (3 + 4 + 5) = (4 * 3) ;;
- : bool = true
lispみたいvimで選択範囲を評価するみたいなプラグインがほしい・・・。