Common-Lisp では、この最初/最後のことがわかりません。はい、それがどのように機能するかはわかりますが、なぜそのように機能するのかわかりません。
基本的に、リストの最初の項目を取得するには、 を使用できます(first mylist)
。ただし、最後のアイテムが必要な場合は、それ(last mylist)
が得られません。代わりに、リストの最後の項目を含むリストが表示されます!
(私は Clozure-CL を使用していますが、これには他にもバグのように見える奇妙な点がいくつかありますが、私は Lisp-n00b であるため、古い「インタープリターが壊れている!」というトリックに引っかからないようにしています。 :) )
たとえば、次のようになります。
? (setq x '((1 2) (a b)))
=> ((1 2) (A B))
? (first x)
=> (1 2) ; as expected
? (last x)
=> ((A B)) ; why a list with my answer in it?!
? (first (last x))
=> '(A B) ; This is the answer I'd expect from plain-old (last x)
なぜ最後にこれを行うのかを誰かが理解するのを手伝ってくれますか? これらのアイテムを間違って使用していますか? 本当にfirst
オッドボールなのか!?
ありがとう!