Common Lisp勉強中・・・ (3)
本で言う第4章, 数値の取り扱い.
本は, 「やさしいLisp入門」.
ホントただのメモ.
数値の種類.
など.
整数は, Lisp処理系の許す限り, 負数を含むどんな大きさの整数も誤差なく扱える.
一定の範囲内に収まる整数データを, 大きさの決まった記憶領域に格納して扱う機能もある.
- 固定長整数(fixnum)
- 無限長整数(bignum)
両者の境界は, most-positive-fixnum と most-negative-fixnum で調べられる.
私の環境では, 以下の通り.
> most-positive-fixnum 16777215 > most-negative-fixnum -16777216
分数とか中々使わないだろうからメモらないけど, これはスゴイわ.
うちの大学の数学系の研究室がLisp使ってる理由がよく分かった.
floorって2つ意味があんの?
> (floor 5 1) 5 ; 0 > (floor 11 3) 3 ; 2 > (floor 1.5) 1 ; 0.5
(floor 5 1)だと5が返戻される. つまり, 5/1の結果. 最後の0はあまり.
(floor 1.5)だと1が返戻される. つまり, 数値の小数部を切り捨てている.
あっ, これって引数が1つだと, 第2引数は, 1が省略されているものと見なしているのかな?
> (floor 1.5) 1 ; 0.5 > (floor 1.5 1) 1 ; 0.5 > (floor 4/3) 1 ; 1/3 > (floor 4/3 1) 1 ; 1/3
なんかそう考えてよさそう.
借りてきた本の演習やってみてるけどほんのちょっとだけ違うね.
> (setq pi 100) > (set 'pi 100)
これが本(KCL)ならばエラーになるらしいけど, 家のclispだと全く問題なく書換えれてる.
おっ, gclならエラーになる.