• ベストアンサー

LISP - (BCD) から B だけを取り出したいです。

学校でLISPを使ってのプログラミングの宿題が出ました。 初めてなので、わからないことだらけなのですが、 (A BCD)からAを取り出すには (CAR '(A BCD)) で取り出せますよね。 (BCD)からBだけ、もしくはCだけを取り出すにはどうすればよいのでしょうか? どうぞよろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • hpsk
  • ベストアンサー率40% (48/119)
回答No.2

専用の組み込み関数はなかったと思いますが、 (make-symbol (subseq (symbol-name 'bcd) 0 1)) とすればできます。 最後にできたシンボルを現在のpackageに登録したければ、make-symbol を intern にしてください。

momo256
質問者

お礼

ご回答ありがとうございました。 とても助かりました!

その他の回答 (1)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

あなたの処理系をしらないですが ATOM(シンボル)を分解する関数として explodeが使えたと思います。 (explode 'BCD) (explode (cadr '(A BCD)) とすればいずれも (B C D) または (b c d) の様になるはずです。 そうすれば、car で B、cadr で C が取り出せますね。

momo256
質問者

補足

回答ありがとうございます。 試してみたのですが、 Error: Undefined function EXPLODE called with arguments ((BCD)). というエラーが出ました。 授業ではCommon LISPを使ってプログラミングをということで、 よくわからないまま、LispWorks Personal Editionを使っています。 explodeはCommon LIPSに含まれているfunctionなのでしょうか? 何も知らなくてすみません。

関連するQ&A