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ならエラーになる.