プロが教える店舗&オフィスのセキュリティ対策術

初めまして.

大学の授業のレポートでプログラミング課題が課されました.
その中で参考になりそうな書籍を図書館で見つけ,そこに書かれていたLISPのコードを移しCLISPで実行しようとしたのですが,Common LISPでは使用されていない関数(put, unpackなど)が含まれており,実行出来ずに困っています.
なので,そもそもCommon LISPの処理系ではなくLISP自体の処理系を用いて実行できないかと思っているのですが,調べてみてもCommon LISPの処理系ばかりが出てきてしまい困っています.

そこで,Common LISPではないLISPの処理系について教えていただければと思い質問しました.

よろしくお願い致します.

A 回答 (2件)

うーん、多分まずその本が「古くて」ダメなんじゃないか、って思うんですが・・・(笑)。


unpackってのは聞いたことないんですが、恐らくputってのは大昔のLisp処理系での属性リストに値を入れる時に使ってた関数だと思います。
Common Lispにも属性リストはありますが、基本的には汎用マクロのsetfを使って値をセットするようになっています。
いずれにせよ、cautionです。基本的には、80年代から以前に書かれたLispの本は使わない方が無難でしょう。90年代以降に書かれた本を使うようにした方が良いです(その方が紛れが少ないです)。

現在、Common Lisp以外のLisp方言だと次の3つが有名でしょう。

・Emacs Lisp・・・テキストエディタEmacs( http://th.nao.ac.jp/MEMBER/zenitani/emacs-j.html がMacでは有名だったけど今じゃちと古い?)で使われているLisp方言
・Scheme・・・Common Lispを双璧を成すLisp方言。日本ではGauche( http://practical-scheme.net/gauche/index-j.html )が有名だけどMac版はどーなんだろうなぁ。他にSchemeのこれまた方言であるRacket( http://racket-lang.org/ )があります。うーん他にもScheme実装あることはあるけど、Macだとどうなんでしょう。ソースからビルドする、って手もあるこたぁあるんですが・・・Racketが無難ですかねぇ。
・Clojure・・・新しく出てきたLisp方言でアツい。これはJVM(Java Virtual Machine)上で動きます。つまり、MacでJavaが動かせるなら基本的にはこいつも動く、って事です。公式サイトは http://clojure.org/

とまぁ、この3つが基本的なLisp方言ですが、取り敢えず悪いことは言わないんで(笑)、あまり古い本でLispやるのは避けた方が良いですね。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます!

>基本的には、80年代から以前に書かれたLispの本は使わない方が無難でしょう。90年代以降に書かれた本を使うようにした方が良いです(その方が紛れが少ないです)。

そうだったのですね…
改めて書籍を見てみると1988年発行だったので,現在のものと仕様が違うのだと思います.

また,補足していただいたNo.2の回答ですが,Lisp言語というのは存在しないのですね.
今まで扱っていたのがCやRubyなどだったためLispも言語の一種だと思っていました…

Lispについての詳しい説明までしていただき大変参考になりました.
とても助かりました!良いお年をお過ごしください!

お礼日時:2015/12/31 22:05

あ、それと、・・・・ああそうか、



> そもそもCommon LISPの処理系ではなくLISP自体の処理系を用いて実行できないかと思っている

って書いてるんで、多分勘違いされてると思うんですが・・・・。
「LISP自体の処理系」ってのは存在しません。Lispってのは「プログラミング言語」の名前じゃなくってプログラミング言語の一形態、ないしは「プログラミング言語族」名だ、って思ってた方が間違い無いです。
つまり、例えばC言語に対してLisp言語ってのが「ある」わけじゃないんですよ。Lisp言語「族」なんで、Common LispやScheme、Emacs Lispはその「Lisp言語族」に属してるんです。
だからその、恐らく「古い」本でも「✗✗と言うLisp方言を使って下さい」って書いてると思うんですよね。そう書いてないと「どのLispなんだ?」ってのは昔も今も起きてる事で、読者は混乱します。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!