nojimaです。

ご指摘ありがとうございました。

KURODA Hisao <kuroda@msi.co.jp> writes:

> Takahide Nojima <nojima@taito.co.jp> writes:
> 
> >      3. cadd*r等使わざるを得ない場合はCommon Lispの場合
> >         defstructする方が何かと良い場合がある模様です。
> 
...中略...
> Common Lisp に関しては CLHS を読まれることをお薦めします。
> http://www.franz.com/support/documentation/6.2/ansicl/ansicl.htm

さらに上の指摘を考慮したものを以下にのせます。

[A] 現在はCommon Lispでfirst/restが採択されております。
    Common Lispに習った処理系であれば利用できるかもしれません。

    参考:Common LispのLispにおける立場は
       http://www.franz.com/support/documentation/6.2/ansicl/ansicl.htm
    を参照

    なお、

     1. car/cdrだけでは可読性がちょっと悪すぎなので、
     
         ・nth とか、
         ・first,second,third,...,rest

       とかにした方が良いという話があります。(補足1参照)

     2. 順列を意識する場合は、car/cdr使わずあえて

         ・nth とか、
         ・first,second,third,...,rest

       とかにした方が良いという話があります。

     3. Common Lispの場合、defstructという便利なものもあります
        (もちろん設計上の都合/ポリシーが優先されますが)

     4. firstに限りcarする人も多い模様です。

    さらに将来Lispからcar/cdrが消え去り、nthやらfirst/restに完全にとって変わる
   かはさすがにないそうです。

      補足:

        1. 可読性が犠牲になる例:

            ・ caddddrでd何個だからどこの要素だとか、
            ・ cdaddaaadrとか言われてもちょとすぐにわからん

        2. Winston-Horn の教科書 Lisp 2nd Ed (1988) が既に 
           car/cdr を使ってなかったりしてます。

        3.  caddr,caddddrに習って、firrest,firrrrestはさすがに無いもようです。

        4. common lispにある定義済みのcad*r等は以下の通りです。
           http://www.franz.com/support/documentation/6.2/ansicl/dictentr/carcdrca.htm