Factor?連鎖性?知らない子ですね... (3. 数値リテラル)
期末テストも終わり、ある意味晴れ晴れとした気分で(?)更新を再開。
今回は、前回さらっと流してしまったリテラルについて。
ここではFactorにおける数値リテラルについて、話していきます。
Integer(整数)
10進数はもちろん64
-255
12345
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
分母が負の数であると怒られます。1つのwordとして処理されてしまう模様。(IN: scratchpad) 2/-5
No word named “2/-5” found in current vocabulary search path
このようにすると-が前に出るように表示してくれます。(IN: scratchpad) 2 -5 /
--- Data stack
-2/5
注意点3
[分子]≧[分母]の状態で入力が行われた場合[整数]+[分数]の形で表示されます。(なんか小学校で習った帯分数みたいですね。)(IN: scratchpad) 7/2
--- Data stack
3+1/2
特にn*[分子]=[分母] (nは整数)であるときはData stackには n として表示されます。
Float(浮動小数点)
指数部が5未満と以上で表示の仕方がわかれるようです。1.234
-4.22
1.0000
1.5e5
例としては以下の様
実際にやってみるとわかります。(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(複素数)
要素1が実数部、要素2が虚数部になります。C{ 1 5 }
C{ 2 -3 }
普通に手計算するように演算が可能。当たり前ですが。(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
float>integerは小数点以下切り捨て。ratio>integerも同じく(IN: scratchpad) 1/2 >float
--- Data stack
0.5
(IN: scrachpad) >integer
--- Data stack
0