CommonLisp初心者スレ
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
NGNG0002デフォルトの名無しさん
NGNGと、 , ´ ・("▼)・ ヽノ
.> ,,, _フil=li=、_<
( /彡 ┃ ┃{i|
ゝ(|il(_, ''' ヮ''丿|
〆(⌒)-ーー-(⌒)>2ゲッシ!
( i⌒ヽ, i⌒ヽ,
ヽゝ、__ノー-ーゝ、__ノ
0003デフォルトの名無しさん
NGNG本家スレは高度過ぎて質問しずらい。
LISPやりけど、何していいかわからん。
他いろいろ。
な、初級LISPスレにしていきたいなぁ。
0004デフォルトの名無しさん
NGNG0005デフォルトの名無しさん
NGNG0006最凶VB厨房
NGNG0007デフォルトの名無しさん
NGNG0008デフォルトの名無しさん
NGNG0009デフォルトの名無しさん
NGNGSICP読書スレを立てるとか
0010デフォルトの名無しさん
NGNGWiLiKi に逝くとか何事も無かったのようにここで語るとか。
0011デフォルトの名無しさん
NGNG0012デフォルトの名無しさん
NGNGドキュメントが激しく読みにくいんだが・・・。
0013デフォルトの名無しさん
NGNGっつーかその程度しか環境しらん。
0014デフォルトの名無しさん
NGNGM-x run-lispでインタラクテチブだぜ!
0015デフォルトの名無しさん
NGNGttp://user.ecc.u-tokyo.ac.jp/~g340299/onlisp_j.pdf
0016デフォルトの名無しさん
NGNG0017デフォルトの名無しさん
NGNGHello World
"Hello World"
何で二回出力されるんだ!わからん!もういい寝る!
0018デフォルトの名無しさん
NGNGwrite-lineと式の評価の二つ実行されるからじゃないか?
0019デフォルトの名無しさん
NGNGこういうのも見つけたぜ。読みやすそうだぜ!
0020デフォルトの名無しさん
NGNGprint $a=sub{$_[0]*2}->(3);
CommonLisp
((lambda (x) (* x 2) 3)
Lispの方が(・∀・)イイ!!
0021デフォルトの名無しさん
NGNGhttp://www.franz.com/support/documentation/5.0.1/ansicl/ansicl.htm
Common Lisp the Language, 2nd Edition
っていう本がWebに公開されてたんだけど、いつのまにかネット上から消えてた。
まあ上のfranzのサイトにあるので十分っぽいけど。
0022デフォルトの名無しさん
NGNGcomon lispって処理系をいれられないっす
んっと、gclは「成功です」ってメッセージだけで
トップレベルにならない。
schemeは、インストールの失敗しないけど解説も
CommonLispより更に少ないんですよね
0023デフォルトの名無しさん
NGNGどうせ住人はかぶるんだし、このスレはcommon lisp中心でいきませんか。
0024デフォルトの名無しさん
NGNGdefunとdefineしか分らん。。。
0025デフォルトの名無しさん
NGNGちょっとや〜ねえ、というところ。〉scheme
0026デフォルトの名無しさん
NGNGインタプリタに打ち込みまくり。Emacsを最近覚えたから
少しは楽になったけど。
0027デフォルトの名無しさん
NGNG嘘だといって欲しいよ。
xyzzy使えばいいのかなぁ
win98からfedoraに移行したんだけどなんか
戻りたくないんですが。
0028デフォルトの名無しさん
NGNGCommonLispはclisp,cmucl,gcl,aclの四つが有名なんじゃないかな。
aclはお試しばんがインターネッツ上に公開されてまつ。
$telnet prompt.franz.com
これだけでOK。WindowsだろうとMacだろうと問題なし。
Linuxだったらどれでも普通に使える予感.
0029デフォルトの名無しさん
NGNG0030デフォルトの名無しさん
NGNG>>28はwindows系なんでしょ。UNIX系だったら
cmucl,sbcl,clisp...みたいになるかもしれないけどさ
0031デフォルトの名無しさん
NGNG有料
Allegro Common Lisp 日本語 http://jp.franz.com/ 英語 http://www.franz.com/
お試し版あり。 Windowsに限りVisual Basicみたいなフォームエディタ付き。
ネイティブコンパイラ付き。値段は交渉によって決まる。
LispWorks http://www.lispworks.com/
お試し版あり。
GUIは、Common Lispベンダで一応標準のCLIMか、独自のCAPI。
ネイティブコンパイラ付き。Professional edition $999 (academic $599)
Corman Lisp http://www.cormanlisp.com/
お試し版あり。ネイティブコンパイラ付き。$249.00. 学生 $125.00
無料
GNU CLISP http://clisp.cons.org/
バイトコードインタプリタ。
GNU Common Lisp (GCL) http://www.gnu.org/software/gcl/gcl.html
Kyoto Common Lisp family。
Cへ翻訳してからCコンパイラでネイティブコードにコンパイル。
ANSI Common Lispへの準拠の度合が他の処理系よりも遅れている。
Freeなら手軽さでGNU CLISPがおすすめ。
0032デフォルトの名無しさん
NGNG採用しているものにxyzzyがある。
同じくWindowsを含め幅広いOSで使えるエディタで、Common Lispに良く似たEmacs Lispという
言語をマクロ言語として採用しているEmacsもある。EmacsのWindowsへの移植で有名なのは
Meadow2がある。
Common Lispにこだわる必要が無くて、なんとなくLisp的なものの感触を掴みたい人はこれらの
エディタで、自分の欲しい機能を書いてみるというのが実践的な身に付け方としておすすめ。
0033デフォルトの名無しさん
NGNGhttp://www.shiro.dreamhost.com/scheme/trans/beating-the-averages-j.html
人気の言語を作るには ---Being Popular---
http://www.shiro.dreamhost.com/scheme/trans/being-popular-j.html
技術野郎の復讐---Revenge of the Nerds---
http://www.shiro.dreamhost.com/scheme/trans/icad-j.html
がんがっていきましょう
0034デフォルトの名無しさん
NGNG--CommonLispの実装--
[UNIX/Linux]
選択肢が豊富なので良く使われている(ような気がする)ものを
CMUCL
http://www.cons.org/cmucl/
ネイティブコードへのコンパイラが優秀で機能性も申し分無し。多くのプログラムはCMUCLには対応している。
SBCL
http://sbcl.sourceforge.net/
CMUCLの派生でかなりたくさんのパッケージがついてくるのでこちらもお薦め。
GCL
http://www.gnu.org/software/gcl/gcl.html
日本発のKyoto CommonLispの流れをくむ実装。
GCLで動かないプログラムが結構あって、何故か無視され気味な気がする。
ECL
http://ecls.sourceforge.net/
GCLと同じく日本発のKyoto CommonLispの流れをくむ実装。
自分があまり使っていないのでコメントできず。
CLISP
http://clisp.cons.org/
ポータブルな実装だが、バイトコードコンパイラであることが他の実装と比べて見劣りするのか、
UNIX上では意外に話題が出ないような気がする。Unicode対応という点は特筆すべきかと。
個人的にはcmuclかsbclがお薦め。
0035デフォルトの名無しさん
NGNGおっ、重なっちまった。
じゃ、Windowsは省く。
[Mac]
finkパッケージマネージャで、UNIX系の実装の幾つかが使えるので、そちらはUNIX/Linuxの方を参照。
SBCL
http://sbcl.sourceforge.net/
速いし、機能性も十分だし、多くのパッケージ付き。もっともお薦め。
OpenMCL
http://openmcl.clozure.com/
SBCLと比べたときの利点が分からないが、使われている。
MCL
http://www.digitool.com/
商用。トライアルバージョンが微妙だし、勉強用としては上の二つを薦める。
0036デフォルトの名無しさん
NGNGMeadow2 + ilisp + CLISP + HyperSpec + Common Lisp the Language 2ed(CLtL2)
という環境がおすすめ。調べたい関数や変数を説明した、HyperSpecやCLtL2の該当
ページを、補完機能つきで指定して、表示させるコマンドがilispにはあります。
CLISPが異常に重いと感じたら、Cygwin版のものを使うと軽くなるかも。
Cygwinのネットインストーラーのメニューに探せばCLISPがあるので簡単です。
0037デフォルトの名無しさん
NGNGSBCL の売りは Linux + SBCL だとネイティブスレッドが使える事〜.
GCL が無視され気味なのは単純に ANSI CL に準拠してないからだろう.
# Mac 用の CMUCL はもうスクリーンショットが出回ってるね.もうすぐかなー?
0038デフォルトの名無しさん
NGNGMac 界隈では SBCL より OpenMCL の方が人気あるっぽいよ。
スレッドも使えるし、Cocoa へのインターフェイスもあるし。
0039デフォルトの名無しさん
NGNG現在の米国規格協会(American National Standards Institute 略称ANSI)
が規定している、ANSI Common Lispが制定される途中の段階で、規格制定
委員会に参加しているGuy L. Steele Jr.という人が
"Common Lisp the Language"(CLtL1)という中間報告的な本を出版しました。
Kyoto Common LispはこのCLtL1に準拠するべく湯浅 太一、萩谷 昌己さんたち
によって書かれた処理系です。したがって、現在の規格とは微妙に動作が違っ
たり、必要な機能が欠けていたりします。
Kyoto Common Lispの目立った特徴は、独自のコンパイラは持たず、システムに
備わった既存のCコンパイラを使う点です。もちろん開発中、動的にある一つの
関数だけをコンパイルすることもできます。
Kyoto Common Lispはその後いろいろあって、GNU Common Lisp(GCL)や
Embedable Common Lisp (ECL)へと受け継がれ、今にいたります。
私が昔触った感じでは、ECLの方がより規格に準拠しているように感じました。
0040デフォルトの名無しさん
NGNG0041デフォルトの名無しさん
NGNGCommon Lisp と Scheme の違い
* T, NIL と #t, #f ←これの所為で互換性大幅ダウン
* 規格にパッケージシステムやオブジェクトシステムがあるかどうか
少々気にいらなくてもどこでも使えるタフなのが欲しいか,
処理系依存の気配がしても自分のお気に入りのがいいか
* 関数と変数の名前空間が分かれてるかいないか
Scheme は分かれてないから ((if pred? x y) 100) とか書ける
CL は分かれてるから (funcall (if pred? x y) 100) となる
そんかわり Scheme で大規模なものつくるときは名前にちょっと注意い
* 末尾再帰の最適化が
Scheme は規格で決まってる
CL は処理系のマニュアルを読まなきゃ(実装でどうするか決まってる)
↑(これをやる最適化オプションとか決めたいよね〜とかいう話もあった)
* (規格レベルで)コンパイラを意識しているか
CL : かなり
Scheme : あんまり
0042デフォルトの名無しさん
NGNGむこうのスレの奴が話をまとめに来てるだけだったりして。
#俺もそのうちの一人だけど
0043デフォルトの名無しさん
NGNG#'(lambda (x) (+ x n))) ・・・(a)
;(defun make-add (n)
; (lambda (x) (+ x n))) ・・・(b)
(setq add2 (make-add 2)) ;add2にはラムダ関数のリファレンス?
(funcall add2 3)
aとbどちらでも同じ結果が得られます。#'というのは関数への
リファレンスを取得するようなイメージを持っているのですが、
これは勘違いでしょうか。cmucl-18を使っています。
またfuncallとはPerlでいうろとこのデリファレンス(して関数呼び出し)
のように思っていたのですが、これもやっぱり見当違いかな。
#'の有無に関わらず(add2 3)の形式では呼び出せません。
0044デフォルトの名無しさん
NGNGmy $n
return sub{$_[0]+$n};
}
$add2 = make-add(2);
print $add2->(3);
Perlだとこんな風になるのかな。当然関数本体を
変数に格納することはできないので$add2には関数の
リファレンスしか入りません。
0045デフォルトの名無しさん
NGNGhttp://www.lispworks.com/reference/HyperSpec/Body/m_lambda.htm
> (lambda lambda-list [[declaration* | documentation]] form*)
> == (function (lambda lambda-list [[declaration* | documentation]] form*))
> == #'(lambda lambda-list [[declaration* | documentation]] form*)
つまり、#'(lambda () (foo))と(lambda () (foo))では同じ結果となります。
まず、Common Lispでは、シンボルのValue cellとFunction cellが分かれています。
> funcallとはPerlでいうろとこのデリファレンス(して関数呼び出し)
Value cellをデリファレンスして関数オブジェクトを取得したのちに
関数呼出しということでいいと思います。
(add2 3)の形式で呼び出せないのは、(add2 3)などのfunction formをeval
するときは、先頭(この場合add2)がシンボルのときは、そのfunction cell
をデリファレンスすると決められているからです。
(setf (symbol-function add2) (make-add 2))としてやれば、(add2 3)が
うまくいくでしょう。
0046デフォルトの名無しさん
NGNGCommon Lisp では一つのシンボルは変数としての値と関数名としての値
の二つを持つ.(それぞれ symbol-value と symbol-function でアクセス可能)
(setq add2 (make-add 2))
だとシンボル add2 の値(symbol-value で取り出すほう)に (lambda ...) が
入るわけ.で,
(add2 3)
ってやると add2 は関数だからシンボル add2 の symbol-function を
取り出そうとするわけだが,当然空なのでエラー.どうすりゃいいかっつーと
(funcall add2 3) ←こいつは add2 の symbol-value を使うので平気なわけ.
で,たとえば (funcall car '(1 2)) とかしたとき,シンボル car の
symbol-value は(普通)空っぽなんでダメポ.そこで function のほう,
と指定するために #' をつけるわけだ.
(funcall (symbol-function car) '(1 2))
なども可能ではあるがカコワル.
(funcall (funcion car) '(1 2))
の省略系として
(funcall #'car '(1 2))
なわけ.
CLHS によれば function (つまり #' ね)は "function name => function" で
名前が symbol だったら symbol と対応した関数を,lambda 式だったら
レキシカルクロージャを返すわけだ.
0047デフォルトの名無しさん
NGNG0048デフォルトの名無しさん
NGNG今なら、親切な講師陣が懇切丁寧にCommon Lispを説明します。>all
0049デフォルトの名無しさん
NGNGネタ初心者として自作自演に走らないと盛りあがらないかも。
0050デフォルトの名無しさん
NGNG>Common Lispでは、シンボルのValue cellとFunction cellが分かれています
>>41さんも書いていてくれましたね。よく読まないとだめですね。
add2という自由"変数"だからfuncallが必要のですね。関数はdefunで作られた
名前だけということになるのかな。
>(add2 3)などのfunction formをevalするときは、>先頭(この場合add2)がシンボルのときは、
>そのfunction cellをデリファレンスすると決められているからです。
その位置によってLISPが探すシンボルテーブルが異なるわけですね。
先頭だけがFunction Cellをみて、残りはすべてValue Cellになるのかな。
>>45-46さん
symbol-value,symble-functionについてはよく読んで勉強させてもらいます。
あと44に書いたPerlはめちゃくちゃでした。これが正しいかもしれません。
print sub{my $n=$_[0]; sub{$_[0]+$n}}->(2)->(3);
0051デフォルトの名無しさん
NGNG変数用に分かれてるんじゃなくて,シンボルが関数用と変数用の値を持ってるわけ.
シンボルに value cell と function cell があると理解して,アクセス方法もわかれば
defun 相当を作るのは簡単だ.
(setf (symbol-function 'hoge) (lambda (x y z) (+ x y z)))
でいいわけだからな.で hoge が名前(name)引数リスト(args) が (x y z) で
定義本体(body) が (+ x y z) だと見て,マクロを使えば
(defmacro my-defun (name args &body body)
`(setf (symbol-function ',name)
(lambda ,args ,@body)))
(my-defun hoge (x y)
(+ x y))
(hoge 1 2)
=> 3
で俺 defun の完成ってわけ.
# 本当の defun はもーちょいいろいろやるけど学習向けね
0052デフォルトの名無しさん
NGNG0053デフォルトの名無しさん
NGNGうわー、分ってる人の説明は分り易いです。
目から鱗です。OnLispをまだろくに読んでないのに
こんなに親切丁寧に、、申し訳ないです。。。
0054デフォルトの名無しさん
NGNGLispのsymbolを普通の言語における"変数"として理解しようとすると、ハマるかも。
むしろ、Perlでいうなら、名前がついたハッシュ値として解釈したほうが良いかも。
$my-symbol = \{ 'value' => nil, 'function' => sub{$_[0]+$n}, 'plist' => (),}
みたいにね。(Perlはもう忘れかけれるからmock perlね)
あと、Lispでは値はすべてリファレンス値として考えていいと思います。
だから明示的に演算子でデリファレンスすることはありません。
0055デフォルトの名無しさん
NGNG同じです。っていうか、スコープの何が知りたいの?
0056デフォルトの名無しさん
NGNGOnLisp は入門者が読む本ではないが….最初は
ANSI Common Lisp, Paradigms of Artificial Intelligence Programming (PAIP)
ウィンストンさんの Lisp 3 版(日本語版は訳が…)
あたりがオススメ.PAIP は AI の本としては古いけど Lisp の勉強用なら全然問題ない.
後半は高度な話題もあって楽しいよ.
>>52
質問の意味がよーわからんなぁ.修行が足りないのか?
Common Lisp ではダイナミックスコープとレキシカルスコープがサポートされてます.
本当はスコープとエクステント(変数の寿命)は別なんですが
ダイナミックスコープ : いわゆるグローバル変数
レキシカルスコープ : いわゆるローカル変数
という理解で最初はいいんじゃないでしょうか.
0057デフォルトの名無しさん
NGNGレキシカルスコープはどうやってやるの?
0058デフォルトの名無しさん
NGNGるものがたくさんあります。これらをまとめたウェブページがあればリンクを
張りたいところだけど、分からないや。気がむいたらまとめます。
>>57
レキシカルスコープをやるやりかたは、普通の言語と同じです。
Lispがレキシカルスコープを実装する方法が知りたいのかな?
それとも使い方かな? あなたが現状で堪能なプログラミング言語が
あればそれを書いてくれると、説明しやすいです。
0059デフォルトの名無しさん
NGNG(defun lexical2 ()
(labels ((f () (print "I'm f")))
;; (print f) ←変数 f は未定義
(f)
(labels ((f () (print "I'm f..:-)")))
;; (print f) ←変数 f は未定義
(print (symbol-value 'f)) ;; unbound ←この辺が疑問?
(print (symbol-function 'f)) ;; function は入ってる
(f))
(let ((f 10))
(print f) ;; それともこの辺?
(f))))
# というかこーゆうのは初心者の質問なのだろうか?
0060デフォルトの名無しさん
NGNG0061デフォルトの名無しさん
NGNG0062デフォルトの名無しさん
NGNGレキシカルスコープの実装はC, C++などの変数と同じです。
たしかに初心者スレから逸脱しそうな雰囲気なので、
これ以上の議論をするときは本スレへ移動しましょう。
0063デフォルトの名無しさん
NGNGC/C++の経験者には新しい概念だと思います。
0064デフォルトの名無しさん
NGNG0065デフォルトの名無しさん
NGNG0066デフォルトの名無しさん
NGNG0067デフォルトの名無しさん
NGNG0068デフォルトの名無しさん
NGNGvi なら % キーで GNU Emacs なら show-paren-mode とか.
あんま気にしないでインデントがそろうまで括弧入れるとか.
最初のうちはだれでもうまく行かないもんです.
(a (b c) ((d e) (f g) (h i)))
↑のツリーが理解できるくらいまで cons を理解できるように
なれば自然と見え方がかわるんじゃないかな.漏れは師匠に最初に
cons セルを手書きさせられたもんです.これも学習法としては
オススメ.
0069デフォルトの名無しさん
NGNG初心者向け cons セルドリル(こんなの→http://perez.cs.vt.edu/usna.navy.mil/HW3P1.gif)
1. (a b c)
2. (a (b c))
3. (a ((b c)))
4. ((a b) (c d))
5. (+ a b)
6. (* (+ a b c) (+ (/ d e) f g))
7. (defun foo () (bar))
8. (let ((x 10) (y 20)) (+ x y))
全部できたら Lisp の構文木を脳内イメージできるようにしましょう.
マクロが構文木へのパターンマッチであるという事が理解できるれば
面白くなってくる筈です.きっと.
# どうしても駄目なら Python でもどーぞ.
0070デフォルトの名無しさん
NGNGGCL は今は ANSI CL 準拠へ向けてがんがってるところだから
初心者にはお勧めできない。環境がわからんのでとりあえず
CLISP のバイナリパッケージをお勧めする。
0071デフォルトの名無しさん
NGNG上から順に短め・初心者向け、て感じで並べてあります。
ちなみに全部英語。日本語でも大学の講義資料とかでいいなら結構転がってたりします。
Common LISP Hints
ttp://www.n-a-n-o.com/lisp/cmucl-tutorials/LISP-tutorial.html
Lisp and elements of style.
ttp://www.fast-index.com/declarative/lectures/
Chapter 2 of ANSI Common Lisp
ttp://lib1.store.vip.sc5.yahoo.com/lib/paulgraham/acl2.txt
Loving Lisp
ttp://www.markwatson.com/opencontent/lisp_lic.htm
Common Lisp:A Gentle Introduction to Symbolic Computation
ttp://www-2.cs.cmu.edu/afs/cs.cmu.edu/user/dst/www/LispBook/index.html
Successful Lisp
ttp://www.psg.com/~dlamkins/sl/cover.html
上記の中では A Gentle Introduction... が一番丁寧でお勧めかなあ、という感じがします。
図版が多いので英語が苦手でも安心かもしれません。
text というより tips な感じなのがこの辺。
Lisp style guide
ttp://www-2.cs.cmu.edu/afs/cs/project/ai-repository/ai/lang/lisp/txt/style/ht_guide.txt
Common Lisp Pitfalls
ttp://www.aiai.ed.ac.uk/~jeff/lisp/cl-pitfalls
The Common Lisp Cookbook
ttp://cl-cookbook.sourceforge.net/
0072デフォルトの名無しさん
NGNG'((1 3 4) (3 4 5) (1 1 1) (1 0 1)
(4 5 5) (4 1 0) (3 2 3) (4 5 4)
(4 2 1) (4 9 0) (0 0 1) (0 9 1)
(0 8 1) (3 4 5)))
(my-sort *data*)
=> ((0 0 1) (0 8 1) (0 9 1) (1 0 1) (1 1 1) (1 3 4) (3 2 3) (3 4 5) (3 4 5) (4 1 0) (4 2 1) (4 5 5) (4 5 4) (4 9 0))
こんな感じで1番目の要素と2番目の要素でソートしたいんですが、
どうすればいいの?
0073デフォルトの名無しさん
NGNG渡せばいいかと。
0074デフォルトの名無しさん
NGNGあのLisp版て無いの?
0075デフォルトの名無しさん
NGNG環境依存な質問です。
xyyzzyで、任意のディレクトリ名を指定して、そのディレクトリ内に
存在するファイル名を取得する方法って何がありますかね?
0077デフォルトの名無しさん
NGNGxyzzyスレで聞けば?
0078デフォルトの名無しさん
NGNG(if (= (car x) (car y))
(< (cadr x) (cadr y))
(< (car x) (car y)))))
0079デフォルトの名無しさん
NGNG確かに初心者向けと銘打ってはいるが、質問の初心者は…。Windows 板に
xyzzy スレってなかったか?でも親切がモットーのスレなので答えておこう。
(directory "ディレクトリ名")
だ。c:\ の一覧が欲しいなら (directory "c:\\") ね。
>>76
cmucl も入れたのか?ならそっちのほうが性能いいけどな。
でも clisp は起動も速いから性能に不満がでるまで clisp でもいいかもな。
開発環境のセットアップは大丈夫か?Emacs + ilisp がないとマンドクサだぞ。
慣れてきたら Emacs + SLIME がお勧め。
SLIME はドキュメントがないので素人にはおすすめできない。
0080デフォルトの名無しさん
NGNG今のところありません。Lisp 人気が急上昇でもしない限り今後もでないでしょう。
開発時に参照するなら Emacs から HyperSpec を引くのがコマンド一発
なわけですが。ハンディリファレンスの Lisp 版があったらどう嬉しい
ですか?
0081デフォルトの名無しさん
NGNGあと sort は破壊的な関数なので引数で渡されたリストが壊れるって事
に注意。
(setf *data2* (sort *data* (lambda (x y) ....)))
*data2*
=> ウマー
*data*
=> アレ?ナニコレ?マズー
となっちゃう。*data* が壊れるのが嫌な場合は
(setf *data2* (sort (copy-list *data*) (lambda (x y) ....)))
とかしてやれば ok。まぁ、
(setf *data* (sort *data* (lambda (x y) ...)))
みたいに *data* を更新に使う用途ならいいんだけど。
0082デフォルトの名無しさん
NGNG0083デフォルトの名無しさん
NGNG>ハンディリファレンスの Lisp 版があったらどう嬉しいですか?
寝る前に布団の中で暗記したりとか・・・。
全体像を掴むのに要点だけかいつまんである紙があるといいじゃん?
あとコマンド名が思い出せない時とか。
0084デフォルトの名無しさん
NGNGなるほど布団の中で暗記ね。我々小市民がオライリーに頼んでも
無駄でしょうから自作しますか。 PDF でよければ。
どっかの Lisper に頼めば Web スペースを借りるくらいできるでしょう。
では欲しい要点と忘れやすいコマンド名(関数の事?)をどーぞ。
0085デフォルトの名無しさん
NGNGCLtL2 とか CLHS, CMUCL User's Manual がそれに当たるのかなぁ。
0086デフォルトの名無しさん
NGNGだからそれらは全部却下だろう。要点ねぇ。まぁ、>>835 の欲しい要点を
聞こうじゃないか。
漏れはハンディリファレンスとやらの類は読んだ事無いが、
構文とかエラーチェックとかリスト処理とかカテゴリ別に重要なやつだけ
ちょこちょこ解説があればいいのかな?
0087デフォルトの名無しさん
NGNG>開発環境のセットアップは大丈夫か?Emacs + ilisp がないとマンドクサだぞ。
ilisp拾って来て解凍した後が訳分りません
/usr/share/emacs/21.3/site-lisp
あたりに突っ込むのやら、.emacsに何か書くのか、
他になにか設定ファイルか必要なのか全くダメです。
レベルが低くて申し訳ないのですが教えて頂けないでしょうか?
0088デフォルトの名無しさん
NGNG.emacsに自分の使っているインタプリタのフルパスを
(setq lisp-program-name "/usr/bin/lisp")
と一行入れるだけで、あとは
M-x run-lisp
として、Emacsバッファ内でインタラクティブにLispが使えるようになるよ。
CommonLispの日本語リファレンスマニュアル本としてこんなのはどうでしょうか?
http://www.amazon.co.jp/exec/obidos/ASIN/4320025881/
英語のは持っていますが、翻訳がいいなら買おうかと思います。
Lispは数学のように用語がしっかり統一されているイメージがあるので
なるべくちゃんとしたリファレンスを用意しておくべきかなと思ってます。
0089デフォルトの名無しさん
NGNG置けたってことは Emacs は少しは使えるってことなのかな。とりあえず
1. ilisp ディレクトリで make してバイトコンパイル
2. ↓のを .emacs に追加。
(require 'completer)
(require 'ilisp)
(load "completion")
(initialize-completions)
(setq clisp-hs-program "clisp -I") ;; clisp のパスね。-I は ilisp 用で起動ってこと。
(set-default 'auto-mode-alist
(append '(("\\.lisp$" . lisp-mode)
("\\.lsp$" . lisp-mode)
("\\.cl$" . lisp-mode))
auto-mode-alist))
(add-hook 'lisp-mode-hook (lambda () (require 'ilisp)))
(load-library "cl-indent")
(add-hook 'ilisp-load-hook
(lambda ()
(setq lisp-indent-function 'common-lisp-indent-function)
(setf ilisp-*prefix* "\C-c"
lisp-no-popper t
ilisp-*arglist-message-lisp-space-p* t)))
くらいでどーだ?後は M-x ilisp-mode とかやると ilisp が起動すると思うのだが。
これが出来たら次は HyperSpec と CLtL2 が ilisp からコマンド一発で参照できるように
するわけだが、まずは(スペースの都合でね)これくらいから。どう?
0090デフォルトの名無しさん
NGNG翻訳もいいんじゃねーの。意味は通じるし、英語版と比較すりゃ勉強にもなる。
だが、やっぱり足りない部分もあるので、
http://www.lispworks.com/reference/HyperSpec/Front/Contents.htm
が本物だという事は忘れるな。調べるときは日本語→HyperSpec でも
当分イイが、段々と HyperSpec を当たる癖をつけるように。
0091デフォルトの名無しさん
NGNG0092デフォルトの名無しさん
NGNGhttp://www.lispworks.com/reference/HyperSpec/Body/14_.htm
Consesときたよ。
Consesて、なんて読むの?
つーかこれ造語?
0093デフォルトの名無しさん
NGNG... conses are the fundamental building blocks of lists. ;-)
0094デフォルトの名無しさん
NGNG0095デフォルトの名無しさん
NGNGそのうち本は見なくなりますよ。
0096デフォルトの名無しさん
NGNG本当ですか?
0097デフォルトの名無しさん
NGNG0098デフォルトの名無しさん
NGNG(setq lisp-program-name "/usr/bin/clisp")
で、
M-x run-lisp
だとcmuclが起動しました。こっちでもいいんですけど、
(/usr/local/bin/lispでcmucl起動します)
(exit)も(quit)も効きませんね。
>>89
.emacsに入れてみました。一度は打ち込んだんですが括弧の対応を
間違えましたのでコピペして、clispのpathの所だけ変えました。
(write-line "hello world")とだけ書いたhello.clというファイルを
開いた状態で
M-x ilisp-mode
とするとミニバッファに
Dialect:
と表示されて入力待ちのなるようです。Dialectは方言って意味みたいなので
clispと入れると、画面が二分割されて下半分にILISPモードの*clisp-hs*バッファが
開きました。
0099デフォルトの名無しさん
NGNG> Lispは人工知能の研究専用の言語だと言っている人がいました。
人工知能の研究くらい難しいことにも柔軟に対応できる能力がある言語と
いうことで、汎用の言語として使う事もできます。
他の言語では、複雑すぎて実現できそうもないことが出来たりするので
大きくて複雑なアプリケーションを書く事にも向いているし、
また例えばGNU CLISPなどの比較的軽い処理系を使えば、Perl, Python,
Rubyなどのスクリプト言語と同じような使い方もできるのではないか
という議論もあります。
0100デフォルトの名無しさん
NGNG残念ながら汎用目的の言語です。歴史的に Lisp (または Lisp を採用)
したプロジェクトで有名なものは一般向けでは
- エディタ(Emacs 系列とか)
- CAD(AutoCAD とかね)
- コンパイラ(パーサーの後の構文木から先の辺とか)
- 数式処理ソフト(Maxima)
と人工知能に関連しそうなものはありません。最近のプロジェクトとしては
NASA の宇宙開発関連(http://ic.arc.nasa.gov/projects/remote-agent/)
とかが比較的人工知能っぽいかもしれません。まぁ、Lisp の開発者が
人工知能の偉い人だったので当然そっち方面で使われたという歴史も
ありますが。
0101デフォルトの名無しさん
NGNGあとMaximaと被ってるけど、代数システムとしてAXIOMとか。
どっちにしても「計算」っていう言葉を連想させる分野が
多いですね。
■ このスレッドは過去ログ倉庫に格納されています