第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で選択範囲を評価するみたいなプラグインがほしい・・・。

Comments


Option