整数とか実数とか正確数とか

http://d.hatena.ne.jp/tkuro/20090604/1244149299#c
なるほど。。。

shiro 2009/06/05 12:26
「整数」と「整数型」を混同されてませんか? 
3も3.0も「整数」です。3.0は「整数型」では表現されませんが。

はい、、完全に混同してました。教えてもらったリンク先
http://practical-scheme.net/wiliki/wiliki.cgi?Scheme%3A非正確な整数
の一番最後のshiroさんのまとめが凄くわかりやすい。一つだけ言い訳をしておくと、あそこを読んだ段階では

gaucheは数値として以下の種類の数を扱えます。
・整数(例:100、3.0)
・有理数(例:1/2)
・実数(例:...)
:

だったので、反射的に内部表現の事だと思い込んでしまったのです。って本当にただの言い訳だ・・・ごめんなさい。
odd?, even? のところの説明を読んで何となく大まかには理解。ついでに気になって内部を見てみると, realはmodf()で fraction部が0なら、という感じに条件分岐のよう。

////////// cut from number.c

int Scm_IntegerP(ScmObj obj) 
{ 
    if (SCM_INTP(obj) || SCM_BIGNUMP(obj)) return TRUE; 
    if (SCM_RATNUMP(obj)) return FALSE; /* normalized ratnum never be integer */ 
    if (SCM_FLONUMP(obj)) { 
        double d = SCM_FLONUM_VALUE(obj); 
        double f, i; 
        if ((f = modf(d, &i)) == 0.0) return TRUE; 
        return FALSE; 
    } 

いろいろ勉強になって面白い。
ありがとうございました。