Factor?連鎖性?知らない子ですね... (3. 数値リテラル)

期末テストも終わり、ある意味晴れ晴れとした気分で(?)更新を再開。

今回は、前回さらっと流してしまったリテラルについて。

ここではFactorにおける数値リテラルについて、話していきます。


Integer(整数)

64

-255

12345

10進数はもちろん

2進数,16進数の入力も可能です(それぞれ0b1111,0x1fのように)。

が、注意したいのは

(IN: scratchpad) 0x1f

のように入力すると

--- Data stack

31

というような具合になります。

対話環境ではData stackが10進表記で表現されるということをお忘れなきよう。

他のスタック指向言語のことをよく知りませんがおそらく他でもこうなんだろうと思います。

まあ普通の整数リテラルです。

Ratio(分数)

1/2

-3/5

111/113

使う場面とかあるのかな?

でもあったらあったで便利そう、といった感じ。

"/"とか含めて、間にスペースとか挟むと怒られます。

注意点もいくつか。

注意点1

(IN: scratchpad) 5/10

--- Data stack

1/2

のように既約分数でない分数を入力すると既約分数となって表示されます。

注意点2

(IN: scratchpad) 2/-5

No word named “2/-5” found in current vocabulary search path

分母が負の数であると怒られます。1つのwordとして処理されてしまう模様。

(IN: scratchpad) 2 -5 /

--- Data stack

-2/5

このようにすると-が前に出るように表示してくれます。

注意点3

(IN: scratchpad) 7/2

--- Data stack

3+1/2

[分子]≧[分母]の状態で入力が行われた場合[整数]+[分数]の形で表示されます。(なんか小学校で習った帯分数みたいですね。)

特にn*[分子]=[分母] (nは整数)であるときはData stackには n として表示されます。

Float(浮動小数点)

1.234

-4.22

1.0000

1.5e5

指数部が5未満と以上で表示の仕方がわかれるようです。

例としては以下の様

(IN: scratchpad) 1.1e4 1.1e5

---Data stack

0.00011

1.1e5

(IN:scratchpad) 0.00011 0.000011

---Data stack

0.00011

1.1e5

実際にやってみるとわかります。

Complex(複素数)

C{ 1 5 }

C{ 2 -3 }

要素1が実数部、要素2が虚数になります。

(IN: scratchpad) C{ 1 -1 } sq

--- Data stack

C{ 0 -2 }

普通に手計算するように演算が可能。当たり前ですが。

電子回路の回転ベクトルとか複素数平面の計算に使う?直感的ではあるかもしれません。

個人的に遊んでただけだけどいろいろ組み合わせると楽しい。

(IN: scrachpad) 2/0.5 7/0.3

--- Data stack

4.0

23.33333333333334

(IN: scrachpad) C{ 1 3 } C{ 2 5 } /

--- Data stack

C{ 17/29 1/29 }

とくに複素数計算がはまる。

楽しい。


追記 12/12 23:16

(IN: scratchpad) 1/2 >float

--- Data stack

0.5

(IN: scrachpad) >integer

--- Data stack

0

float>integerは小数点以下切り捨て。ratio>integerも同じく