Summary 3(Re: Thank you too(Re: Thank you!(Re: [Q] missing car/cdr)))
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
Fnews-brouse 1.9(20180406) -- by Mizuno, MWE <mwe@ccsf.jp>
GnuPG Key ID = ECC8A735
GnuPG Key fingerprint = 9BE6 B9E9 55A5 A499 CD51 946E 9BDC 7870 ECC8 A735