トップページtech
991コメント414KB

【入門】Common Lisp その8【質問よろず】

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2011/07/06(水) 17:15:15.55
lispを触ってみたい入門者のQ&A
初心者のQ&A
本スレでは恥ずかしくて聞けない人のQ&A
本スレは高度すぎて割り込めない人のQ&A
linuxでなくてwindowsでやりたいんですが・・・Q&A
lispを使用してC#やJAVAの代替にするための方法(おまけ)

ま、ゆっくりたりましょう。

「いいものの本質は、いかなる時代においても変わらない」byパワーズ

(list
(url http://pc8.2ch.net/test/read.cgi/tech/1101386936/l50 :part 1)
(url http://pc11.2ch.net/test/read.so/tech/1140012484/l50 :part 2)
(url http://pc11.2ch.net/test/read.so/tech/1181479267/l50 :part 3)
(url http://pc11.2ch.net/test/read.cgi/tech/1201402366/l50 :part 4)
(url http://pc11.2ch.net/test/read.cgi/tech/1215834213/l50 :part 5)
(url http://pc12.2ch.net/test/read.cgi/tech/1234884136/l50 :part 6)
(url http://hibari.2ch.net/test/read.cgi/tech/1270370267/l50 :part 7)


□テンプレート置き場□
ttp://wiki.fdiary.net/lisp/ (id:guest pass:cl)
04464432011/11/29(火) 11:28:14.54
>>443
(sb-ext:run-program "c:/Windows/System32/cmd.exe"
'("/c" "start" "http://www.google.co.jp/")
:wait nil)
と書き換えればokでした
0447デフォルトの名無しさん2011/11/29(火) 13:02:06.70
>>445
下手なLISP本やるよりわかりやすいから、とりあえずやれ。
あと2chのリンクは参考資料な。
0448デフォルトの名無しさん2011/11/29(火) 13:05:36.47
あと無料でhtml形式の英語版があるから辞書片手にやりなさい。
そして、その次にOn lisp.pdfかな。
0449デフォルトの名無しさん2011/11/29(火) 13:53:18.07
>>445
いきなりあの本に手を出すのは疑問かな。447さんと意見が違って来る。
やるならば3章まではなんども復習してじっくり鍛えてからそのあと
に進めばいいよ。ネットの勉強ブログを見てると4章くらいで挫折が
多い本だから。だからあの本はある程度身につけたlisperが更に腕を
磨く本という位置づけ。最初の2章の位置づけは、他の言語やってましたよ
という人にとっては良い入門だと思う。
on lispを初心者に勧めるのもどうかと思うな。
おれはANSI common lisp(グレアム)で最初勉強したほうだけどね。
竹内さんの本は見てないから評価できない。
0450デフォルトの名無しさん2011/11/29(火) 13:59:11.02
プログラムの洗練のさせ方やデバッグの技法などを身につけるにはうってつけなん
だけどね。
むしろ、lisp経験をある程度積んでるのにPAIPを読んでないのは不幸だと思うくらい
の本だよ。値段は高いからそれ相当の価値があるかと言われると、あるんだろうな。
買って損したって気分しないんだから。ただし和訳版は持ってないので、和訳の質
などわかりません。(洋書版で7千円ちょっと、和書で9千円ちょっと)
0451デフォルトの名無しさん2011/11/29(火) 20:49:32.97
>>445
初心者でもとりあえずまずは、公式HPをみとくべき
http://lisp.dive2ent.com/
0452デフォルトの名無しさん2011/11/29(火) 23:38:38.06
>>451
踏んでしまったw
0453デフォルトの名無しさん2011/11/29(火) 23:46:05.95
>>445-448ってPractical Common Lispのことでは?
日本語では『実践Common Lisp』と翻訳されているやつ

PAIPは無料配布されていなかったかと

>>451については俺もやられたw
音楽が流れてびくっとしてしまった
0454デフォルトの名無しさん2011/11/29(火) 23:46:15.45
むしろ赤(ry
0455デフォルトの名無しさん2011/11/29(火) 23:57:48.53
http://opac.ndl.go.jp/recordid/000009415975/jpn
人工知能 第二版 1108p,17000円とこっちも分厚いんだな。
0456デフォルトの名無しさん2011/11/30(水) 00:57:06.16
>>453
PCLのことか^^; 和書のタイトルがに過ぎてて混乱してた。
PCL萌え絵本ですね。(もええ本ですねと書いたんだが。)
0457デフォルトの名無しさん2011/11/30(水) 01:05:17.86
>>455
原著は第三版がでて11000円相当で売ってるけど、あんなでかいの
電子ブックじゃないと持ち歩く気がせんかも。
PAIP/AIMAコンボで漬物石だよな。(+ Introduction to Algorithms)
0458デフォルトの名無しさん2011/11/30(水) 01:14:35.37
実用(PAIP)は入門にはもったいないな。ある程度基礎を知ってからのほうが楽
しいし、役にたつよ。できれば、じっくり味わってほしい。
今なら実践(PCL)→実用(PAIP)が個人的オススメかな。Paul Graham のスタイル
はどちらかといえば Scheme 寄りだからね。ド入門よりは二冊目以降がいいような気がする。
0459デフォルトの名無しさん2011/11/30(水) 02:51:28.78
一冊目は?
0460デフォルトの名無しさん2011/11/30(水) 02:55:10.84
>>457
それハードカバー版じゃない?
ペーパーバックの国際版なら7kちょいだよ
0461デフォルトの名無しさん2011/11/30(水) 08:48:17.78
>>460
ホントだ、知らなかった。
0462デフォルトの名無しさん2011/11/30(水) 13:53:30.75
sbclのスクリプトを実行可能にするとき、
0463デフォルトの名無しさん2011/11/30(水) 13:59:40.00
途中で切れてしまいましたので、改めて書きます
sbclのスクリプトを実行可能にするとき、アイコンを埋め込むことはできますか?
sbclが作り出す実行ファイルにはアイコンが設定されていないと思うので、
ただそれに指定したアイコンを埋め込みたいです

windowsxpで、外部ツール(ReplaceVistaIcon.exe)を使ってアイコンをコマンドで書き換えましたが
書き換え後の実行ファイルが"can't find core file"となってしまいます
外部ツールなしに実行ファイルのアイコンを書き換えられればベストですが、
それができないとき、外部ツール(できればコマンドラインから扱えるツール)を使って書き換えれるでしょうか
0464デフォルトの名無しさん2011/11/30(水) 14:30:39.75
うーん。できるのかなー。コアファイルが見付からないってのは、
コアイメージ部分を外部ツールがパージ、あるいは変更しちゃったからだと思う。
ファイルサイズがスリムになってたりしない? stripとかしてもそうなるはず。

多分、そういうの考えた人自体があんまりいないと思う。
ウィンドウとかタスクバーに表示されるアイコンを変えたいだけなら、
Windows APIで動的に読み込めたと思うけど、そういうんでもないんだよね?
あとはショートカットに対してアイコンとかを設定しとけば、
実用上は気にならない気もするけども。

それ以外だと、手当たり次第に外部ツールを試すくらいしか思い付かない。
0465デフォルトの名無しさん2011/11/30(水) 20:52:14.00
たしかにファイルサイズが小さくなっていました
20MB台->1MB台
エクスプローラーでアイコン付きのexeファイルを表示させたかったのですが、
API経由でタスクトレイにアイコンを表示させるのがよさそうですね
やってみます
0466デフォルトの名無しさん2011/12/01(木) 05:49:59.47
ここは教えて君が許されるスレですよね?
始めてLISPでプログラムを書こうとしているのですが、うまく行きません。

'((A B C) A B C (A (B C)))

と言うリストに対して
A<=a
B<=b
C<=a b
として以下の様になるよう置換したいのです。

'((a b a b) a b a b (a (b a b)))


ところが以下の様にうまくいきません。
* (defun henkan(x)(
cond
((equal x 'A) (list 'a))
((equal x 'B) (list 'b))
((equal x 'C) (list 'a 'b))
(t nil)))
* (defun chikan(x) (if (atom x) (henkan x) (mapcar #'chikan x )))
* (chikan '((A B C) A B C (A (B C))) )
(((A) (B) (A B)) (A) (B) (A B) ((A) ((B) (A B))))

「括弧が増えないやり方」はありますか?
もしくは「一番内側の括弧を外す方法」でも構いません。
なお1つのアトムが最大2つのアトムに変換されるとは限りません。
よろしくお願いします。

ちなみにmultiple-value-bindと言うのも見つけたのですが
可変長とは相性が悪そうに思いました。違いますかね?
0467デフォルトの名無しさん2011/12/01(木) 10:01:07.58
>>466
(defun chikan (x)
   (labels ((hentai (x)
              (if (atom x)
           (case x
                    (a (list '|a|))
                    (b (list '|b|))
                    (c (list '|a| '|b|)))
                  (list (loop for y in x
                           append (hentai y))))))
     (hentai x)))
0468デフォルトの名無しさん2011/12/01(木) 10:56:40.51
>>465
Win用のexeファイルでは、コアイメージをWin32リソースに突っ込んでいて、
そのアイコン付加ツールはアイコンをリソースに突っ込んだ後、
知らないリソースを捨ててしまってるのかもね。
0469デフォルトの名無しさん2011/12/01(木) 11:07:05.60
木構造、全然わからんなあ。
car, cdrで原始的にゴリゴリやるしか思いつかん。
0470デフォルトの名無しさん2011/12/01(木) 11:52:07.48
map系を使おうとすることは筋がいいよ。

* (apply #'concatenate 'list '((a) (b c) (d)))
(A B C D)

これを応用させてみ。
0471デフォルトの名無しさん2011/12/01(木) 11:58:04.81
m-v-bは多値を返す関数の時に使うんだよ。
listをletで変数に分けるみたいなときにはdestructuring-bindを使う。
この辺はちょっと慣れてこないと感覚はつかめないかも。
0472デフォルトの名無しさん2011/12/01(木) 12:55:58.28
沢山の回答ありがとうございます。

>>467
動きました。labelsや縦棒で区切るとか勉強になります。
括弧が一つ多いみたいなんで
(car (chikan '((A B C) A B C (A (B C))) ))
とすれば大丈夫ですね。
所でlabels使わなくても行けませんか?
(defun chikan(x) (if (atom x) (henkan x) (list (loop for y in x append (chikan y)))))

>>470
ヒントありがとうございます。
(defun chikan(x) (if (atom x) (henkan x) (list (apply #'concatenate 'list (mapcar #'chikan x )))))
(car (chikan '((A B C) A B C (A (B C))) ))

>>471
リストで受けてfirst,second,thirdでばらすイメージですかね。

--
carで受けるのは格好悪いですね。labelsとか使う場面でしょうか。
0473デフォルトの名無しさん2011/12/01(木) 12:59:03.79
>>467
さり気なく痴漢と変態にしてんじゃねーよw
0474デフォルトの名無しさん2011/12/01(木) 13:47:32.64
簡単に言えば?次のような感じで使ったりする。
(defun translator (tr)
  (destructuring-bind  (in . out) tr
    (lambda(c)
      (if (eql in c) out in ))))

CL-USER> (funcall (translator '(c .'(a b))) 'b)
C
CL-USER> (funcall (translator '(c .'(a b))) 'c)
'(A B)
0475デフォルトの名無しさん2011/12/01(木) 13:54:32.26
'が一つ余分だったな。^^;
0476デフォルトの名無しさん2011/12/01(木) 14:38:19.17
よろしくお願いします。
sbclでclojureと同じようにソースを出したいんですが、どうやればいいんでしょうか?
あとソースを参照しているファイルの場所を知ることはできないでしょうか?
user=> (source first)
(def
^{:arglists '([coll])
:doc "Returns the first item in the collection. Calls seq on its
argument. If coll is nil, returns nil."
:added "1.0"
:static true}
first (fn ^:static first [coll] (. clojure.lang.RT (first coll))))
nil
あとemacs23で(first 3)を評価すると*Backtrace*が出て実際のソースに飛べて便利なんですが、
こういうことはsbcl+slime+linuxでできないのでしょうか?
Debugger entered--Lisp error: (wrong-type-argument listp 3)
first(3)
eval((first 3))
eval-last-sexp-1(nil)
eval-last-sexp(nil)
call-interactively(eval-last-sexp nil nil)
あと公式リファレンスを読むのを前提ですが、clojure, sbcl, emacs lispのソースを直接読んだ方が
あるテーマの操作関数について関数の語彙が増えるんでしょうか?
"/usr/share/sbcl-source/src/code/list.lisp"を今日初めて見てソースを見ちゃった方がわかりやすい
じゃんと思ってしまった。
0477デフォルトの名無しさん2011/12/01(木) 20:11:09.54
>>472は急いで書いたんでぶっきらぼうな感じになってしまいましたが
皆様のお陰で何とかなりそうです。

>>473
触れるべきか考えたまま調べたりしてたら失念しました。
私が触れとくべきでしたね。「なに!変態ですと!!!」

>>474
機会があったら使ってみます。
「こんなのもある」みたいな抽出しを増やさないとダメですよね。
0478デフォルトの名無しさん2011/12/01(木) 23:49:07.05
次に、sublisもhyperspecで調べてみ。
0479デフォルトの名無しさん2011/12/01(木) 23:49:52.10
s式のテキストを読み込み評価して他のテキストデータを書き出したいのですが、
書き出す部分の処理がうまくいきません
読み込むファイルと書き出すファイルのパスは、
外部から与えるようにしたいです

(defun from-lisp-to (input-file output-file)
(with-open-file (stream output-file
:direction :output
:if-does-not-exist :create
:if-exists :supersede)
(eval
(read-from-string
(format nil "(progn ~A)" (parse-lisp-file input-file))))))

このような形で組み立てて
最終的にはinput-file内の(format stream "hoge")をoutput-file のstreamに書き出すよう処理させたいのですが
文字列内のstreamとして(with-open-file)のstreamを使わせる方法がわかりません
どこを修正すればよいでしょうか
0480デフォルトの名無しさん2011/12/02(金) 00:37:24.41
>>476
A1. function-lambda-expressionのこと?
A2. シンボルの上で M-. 。SBCLならdescribeでソースの位置とか表示される
A3. SLDB(SLIMEのデバッガ)については前に書いた物があるんで、下をどうぞ

http://cl.cddddr.org/index.cgi?SLIME%3ASLDB

A4. ソースは読むに越したことはないと思う。勉強になる
0481デフォルトの名無しさん2011/12/02(金) 00:59:07.46
>>479
HyperSpec曰く、

http://www.lispworks.com/documentation/HyperSpec/Body/f_eval.htm#eval
> Evaluates form in the current dynamic environment and the null lexical environment.

なので、evalでローカル変数を参照することはできません。本当にありがとうございました。

ちなみに、それは単に

(with-open-file (*standard-output* "out.txt" ...)
(load "code.lisp"))

みたいなのじゃ駄目なんでしょうか?
0482デフォルトの名無しさん2011/12/02(金) 01:14:08.56
>>477
(defun chikan (x)
(labels ((f (x)
(if (atom x)
(henkan x)
(list (mapcan #'f x)))))
(car (f x))))
mapcan 使うとこうなる。
labels 使うと (car (chikan hoge)) と呼ばなくてもOK.

>>479
(eval `(let ((stream ,stream))
,(with-open-file (s input-file)
(read s))))
parse-lisp-file が分からないけれど、みたいな感じで……。
0483デフォルトの名無しさん2011/12/02(金) 01:16:06.08
>>468
そういうことでしたら、無理にいじくらないようにしなくてはなりませんね
勉強になりました
0484デフォルトの名無しさん2011/12/02(金) 01:36:00.09
>>481
分かりました
道理でよくありそうな処理なのに
(eval (read-from-string という例がほとんど無いのですか
evalを使わずにできないものかと考えていましたが、
単に*standard-output*を利用するということを失念していました

>>482
eval外部のstreamをletを使ってeval内部に持ち込むのですか
ただ、そうなると>>481の説明に反してしまうような…

>>481が簡単というか簡潔なのでそちらを使うことにします
0485デフォルトの名無しさん2011/12/02(金) 02:00:11.93
>>484
えーと、>>482はローカル変数を参照してません。
リストを作る際に値(ストリームオブジェクト)を展開してるので、
>>481とは矛盾しないと思います。
04864662011/12/02(金) 12:25:25.85
>>482
ぴったりな関数があったのですね。
0487デフォルトの名無しさん2011/12/02(金) 23:46:00.60
>>485
勘違いしていました
リスト生成後にevalで評価していますね
失礼しました
0488デフォルトの名無しさん2011/12/03(土) 13:10:38.61
> Evaluates form in the current dynamic environment and the null lexical environment.

Evalのこの制約は静的展開コンパイル最適化のため?
0489デフォルトの名無しさん2011/12/03(土) 22:30:55.64
evalはダイナミック変数ならその値を得られたような気がする
それを考えると、コンパイルを必要な限りにおいてコンパクトに行うようにする、というのはしっくりくるね
0490デフォルトの名無しさん2011/12/03(土) 23:46:10.74
実用common lispのp.427の

(with-open-file (out "foo.html" :direction output)
(with-html-output (out :pretty t)
(emit-html *some-foo-expression*)))

のoutputは:outputの誤表記でしょうか?
0491デフォルトの名無しさん2011/12/04(日) 00:19:44.66
>>490
typoだねー。原書の時点で間違えてるみたい。

http://www.gigamonkeys.com/book/practical-an-html-generation-library-the-interpreter.html
http://www.lispworks.com/documentation/HyperSpec/Body/f_open.htm#open

あと、そっちは実践Common Lisp(通称PCL)。実用Common Lisp(通称PAIP)とは違うので注意。
0492デフォルトの名無しさん2011/12/04(日) 00:21:13.21
>>491
たしかに実践の間違いでした。ご指摘ありがとうございます。
0493デフォルトの名無しさん2011/12/04(日) 01:19:20.11
>>492
正誤表提案よろしく
http://pcl.lispuser.net/wiliki.cgi?%E6%AD%A3%E8%AA%A4%E8%A1%A8.%E6%A1%88
0494デフォルトの名無しさん2011/12/04(日) 03:07:09.18
>>493
追加しておきました
0495デフォルトの名無しさん2011/12/04(日) 12:46:19.07
>>491の1つめのサイトトップページに
that book is dead sexy ?Xach on #lisp
と書いてあるのですが、どういう意味なのでしょう
xachという英単語は存在しないようですし
0496デフォルトの名無しさん2011/12/04(日) 12:55:21.24
>>495
Quicklispとか書いたり色々やってるLisperのZach Beane(ハンドルがXach)が、
IRCの#lispでそう言ってたってこと。
0497デフォルトの名無しさん2011/12/04(日) 13:32:00.48
>>496
なにそれ。
知らんがなって感じだな。

ハンドル名じゃなくて実名で書けよ。
pgってどれだけ浸透しているのか知らないけど、pgだけだと迷惑だな。
0498デフォルトの名無しさん2011/12/04(日) 13:59:39.95
何を過剰に反応してるか知らんけど、RubyでのMatzとか、日本のSchemeでのShiroさんとか、
別に通りの良いあだ名で人を識別するのなんて普通だろ。

そもそも、事情が分かる人向けに「あの有名人もこう言ってますよ」っていう宣伝なんだから。
0499デフォルトの名無しさん2011/12/04(日) 14:37:35.60
Matzだったら認知度高いと思うけど、非日本諸国でShiroだけでどれだけの人が認知できるのかね。
竹内関数の竹内さんの通り名知らないけど、その通り名で英語圏でどれだけ認知されているの?

ちゃんとその本人のリンクが貼ってあるならわかりやすいだがな。
0500デフォルトの名無しさん2011/12/04(日) 14:42:45.70
チョン鮮人乙
0501デフォルトの名無しさん2011/12/04(日) 14:52:50.60
>>500
Es lebe die koreanische
05024902011/12/04(日) 15:15:45.19
sbcl最新版をwindowsで使っています
おかげさまで実践common lispを読み終えたのですが、
実際にコードを動かそうと思って
http://www.gigamonkeys.com/book/のDownload source codeを取得して
Chapter31の動作を確かめようとしたのですが、chapter31/ディレクトリにあるcss.lispをloadしようとすると

The variable COM.GIGAMONKEYS.HTML::CSS-STYLE is unbound.

というエラーが出てしまいます
当初.macro-utilitiesが見つからないと言われて (ql:quickload "com.gigamonkeys.macro-utilities")によって解決はしたのですが、htmlの方は
System "com.gigamonkeys.html" not found
となってしまいました
どうすればよいのでしょうか
0503デフォルトの名無しさん2011/12/04(日) 16:18:44.40
Warum bist du so serene?
0504デフォルトの名無しさん2011/12/04(日) 16:24:18.32
>>502
先にpackages.lispとhtml.lispを手動でロードするか、ASDF経由でロードしてください。

(asdf:initialize-source-registry
'(:source-registry
(:directory ("practicals-1.0.3/Chapter31")) ; コードのあるディレクトリを指定
:inherit-configuration))

評価してから(asdf:load-system :html)すればASDF経由でロードできます。
0505デフォルトの名無しさん2011/12/04(日) 16:35:46.21
>>499
別に全世界でどうこうとか知名度とか、そういうのはまったく関係ないわけよ。
「特定のコミュニティ」の中で十分に共通の認識がある通り名なら、
「中の人同士」でのコミュニケーションに使っても何の問題もないっしょ?

「この道では知る人ぞ知るアイツもこう言ってるぜ、買えよ」って売り文句に、
「俺は知らないんだけど」って言ってる状況なんだけど、不毛だと思わんか?
その広告のターゲットじゃないんだから、無理に分かろうとしなくていいんだよ。
0506デフォルトの名無しさん2011/12/04(日) 16:48:28.25
lispbox、emacsの操作だけ覚えれば使える感じだな。
これはかなり良い入門者向き環境かもしれない。
0507デフォルトの名無しさん2011/12/04(日) 16:53:40.02
>>505
ヌーディストビーチのWeb上でのコミュニケーションなんだから
腋毛、マン毛等を手入れしたりした方が良いんじゃないの。

部外者はみるなと立看板をわかりやすいところに立てているなら
勝手にすればいいよ。
0508デフォルトの名無しさん2011/12/04(日) 17:06:43.44
>>507
裸なのは君の方なんじゃないの?
0509デフォルトの名無しさん2011/12/04(日) 17:17:29.64
気に入らなくてどうにかしたいなら直接そのコミュニティに言えよ
0510デフォルトの名無しさん2011/12/04(日) 17:25:18.90
語学力不足で読み取れなかったのに、
コミュニティの閉鎖性にして誤魔化すのはみっともないと思います。
0511デフォルトの名無しさん2011/12/04(日) 17:25:26.19
言えないからここで自分の馬鹿さをひけらかしてる訳で
0512デフォルトの名無しさん2011/12/04(日) 17:54:21.06
>>506
Emacsを好きになれるかがLisp入門にあたっての鬼門だったりするね
自分はvimから入ったから正直きつかった
好きになったのはEmacs Lispを書くようになってからだ
0513デフォルトの名無しさん2011/12/04(日) 18:04:13.66
>>488
Common Lispはlexical bindingセマンティクスだからでしょう。
引数にquoteされた式が書かれた場合はlexical bindingではあるんだけど、
引数が一般の式の時には、外のlexical environmentをアクセスしにいくのは、
Common Lispのセマンティクス上まずい。
統一的にlexical environmentはアクセスできないようにしておけば
わかりやすい性質を持ったevalになる。
0514デフォルトの名無しさん2011/12/04(日) 18:27:48.47
>>512
pgはvi派だし、vimの方がサラッと書くときには便利じゃないのかな。
環境を整えて書いたことないけど。
emacs自体は強い支援環境とemacs lispを組む楽しさがあるぐらい。
emacsは四輪でいつも信号に捕まって渋滞。vimはバイクですり抜けして
信号に捕まらずに快適。良い景色があって停車してデジカメに収めよう
としても両者の違いは明らか。
0515デフォルトの名無しさん2011/12/04(日) 18:33:24.68
環境を整えなくても・・・viはもともとlispモードがついてるし、
screenと組み合わせれば、それとなく使い勝手の良いものになってくれる。
0516デフォルトの名無しさん2011/12/04(日) 18:39:07.08
操作がネックになってるvi使いはviper-mode使えば良いのに。
05175122011/12/04(日) 19:01:30.40
言われてみてvimでも平気だったんじゃないかって気がしてきたよ
なんかくやしいわ
0518デフォルトの名無しさん2011/12/04(日) 19:09:15.80
Lisp向けのvim scriptたくさんあるよ。気に入ったものがあればどうぞ。

http://www.vim.org/scripts/での検索結果
http://www.google.com/cse?cx=partner-pub-3005259998294962%3Abvyni59kjr1&q=Lisp
0519デフォルトの名無しさん2011/12/04(日) 19:30:37.86
slimevよさげですね。もっと早く出てたらEmacsに移らなかったかも
0520デフォルトの名無しさん2011/12/04(日) 19:57:47.77
slimvは利用してるけど、emacs+slimeのほうが使い勝手はいい感じがした。
うちの.emacsをチューニングしてるからかもしれないが。
vim使っててよくわからんと思ってるのは自動的に括弧を閉じるようにした時に
括弧の外に移動する方法が矢印キー以外のことがよくわからん^^;ところ
vimも適当な書物をかって学んだほうがええんかなぁ。オライリーのvi/vim第7版は原著しか無いけd.
0521デフォルトの名無しさん2011/12/04(日) 21:37:08.33
emacs+slimeでcclを使っていますが、
common lispの閉じ括弧から開き括弧に移動するショートカットキーはあるのでしょうか?
逆に、well-formedなs式で、開き括弧から閉じ括弧に飛ぶということはどうでしょうか
0522デフォルトの名無しさん2011/12/04(日) 22:09:10.47
>>516
vipper-modeかと思った
0523デフォルトの名無しさん2011/12/04(日) 22:25:38.24
>>521
http://lispuser.net/emacs/lisphacking.html#sec-1.1
0524デフォルトの名無しさん2011/12/04(日) 22:30:23.11
>>523
まさに探していた機能が載っていました
ありがとうございます。
0525デフォルトの名無しさん2011/12/04(日) 22:50:47.85
>>504
できました!丁寧に解説して下さってすみません
0526デフォルトの名無しさん2011/12/05(月) 00:00:32.88
CLOSの:aroundメソッドがよくわかりません
:before と :afterのそれぞれのメソッドは説明を見ても分かるのですが…
どういう意味でaround(周囲)なのでしょうか
0527デフォルトの名無しさん2011/12/05(月) 00:15:03.95
中でcall-next-methodを呼び出せる。
call-next-methodで呼び出されるmethodを覆うように実行されるからaround。
0528デフォルトの名無しさん2011/12/05(月) 01:45:09.14
そういうことですか
周囲ではなくて覆うというイメージなら分かる気がします
0529デフォルトの名無しさん2011/12/06(火) 16:00:52.40
PAIPを読み続けてるけどNorvigのコードって抽象化力が際立ってるね。
惚れ惚れするコードを書くよ。
0530デフォルトの名無しさん2011/12/07(水) 07:41:56.65
doがどうも理解しずらいのですが
コツなどありますか?
0531デフォルトの名無しさん2011/12/07(水) 11:38:02.20
do*がCのforループと一緒。
doはbodyの実行順序が規定されてない。(依存してはいけない)
0532デフォルトの名無しさん2011/12/07(水) 12:31:47.74
>>531 紛らわしいかきかたすんな

DO : ループ変数の束縛がパラレルに行われる
DO* : ループ変数の束縛がシーケンシャルに行われる
0533デフォルトの名無しさん2011/12/07(水) 13:26:49.32
common lispのおおざっぱな内容はつかんだと思うのですが、
それからどういうものを作ればいいのかピンときません

できれば10~100行のソースの小さなプログラムで、
common lispの使いどころがよくわかるようなものを複数探しているのですが、
そういうものはありますか?
0534デフォルトの名無しさん2011/12/07(水) 15:10:13.11
>Webで読めるCommon Lisp情報まとめ
>Common Lispの情報を得られるWebサイトや書籍をまとめました。
http://matome.hatena.ne.jp/mt/761

paipが無いのが残念だけど、
いい感じにまとまっているね
0535デフォルトの名無しさん2011/12/07(水) 15:10:25.11
こういう複数の言語の実装と比較できるものを読んでみるとか。
http://shootout.alioth.debian.org/u32/benchmark.php?test=revcomp&lang=sbcl
0536デフォルトの名無しさん2011/12/07(水) 16:03:05.72
>>534
深町さんも頑張ってまとめたね。おっしゃるように、Norvigのpaipや
Norvig&Pitmanのlisp作法に書いたドキュメントがないのが残念。とく
に作法のは和訳もされてて読まれやすだけにな。
(*) http://www010.upp.so-net.ne.jp/okshirai/tutorial-on-good-lisp-programming-style-ja.txt

オレイリーの本って幻っぽい。あの作者が早く健康を取り戻すことをお祈りしておくよ。
0537デフォルトの名無しさん2011/12/07(水) 16:06:24.88
Pitman=Hyperspecの中の人。
0538デフォルトの名無しさん2011/12/07(水) 16:25:10.53
>>533
PAIPは100行程度でこんなことできるのかと驚かされるものはのってるけど
今の貴方の状況で進められるものかどうか判断できない。
Common Lispだけはいろんな人がいろんな個性のコードを書くから、それが
良いかどうかをみるポイントは>>536でも参考にしてほしい。柔軟性を上手に
使って、最適化も上手なものって案外センスが問われるから。
https://github.com/languages/Common%20Lisp にはいっぱいコードが転がっ
てるけど、お目当てのものが有りそうかどうかはわからん。
速いコードを書く人ならEdi Weitzさんを見るといいかも。でも100行程度じゃないな。^^;
0539デフォルトの名無しさん2011/12/07(水) 17:24:49.34
>>533
使いどころって高尚な使い方の話?

雑多な処理なら随時実装していけばいいんじゃないの。とりあえず、どう書く.org?は例文として
参考になるんじゃないかな。
ttp://www.amazon.co.jp/dp/4874084141/
実装するネタがないならこの名著から適当につまみ食いして実装すればいい。

lispのいい所は慣用句を覚えれば形にするの(実装)が速いことだと思うから、形にして動かして
必要性があれば不満な部分を1から再実装しても良いし、不満な部分を我慢して違う興味のあるモノを
作っても良いという気楽さがある。
0540デフォルトの名無しさん2011/12/07(水) 17:55:33.62
なんか文章捻れちまったなあww

lispのいい所は慣用句を覚えれば形にするの(実装)が速いことだと思う。形にして動かして必要性が
あれば不満な部分を1から再実装しても良いし、不満な部分を我慢して違う興味のあるモノを作って
も良いという気楽さがある。
05415332011/12/07(水) 22:38:43.46
皆さん丁寧に教えて下さりありがとうございます。
>>538のgithubを見た感じでは読み進めるのに難がありそうなので、
paipとどう書く.orgを手がかりに勉強していきます
0542デフォルトの名無しさん2011/12/08(木) 07:32:22.36
>>532
簡単な用例などありますか?
0543デフォルトの名無しさん2011/12/08(木) 19:19:45.33
>>536
>オレイリーの本って幻っぽい。あの作者が早く健康を取り戻すことをお祈りしておくよ。
作者がどうかしたのですか?倒れたとか…
0544デフォルトの名無しさん2011/12/08(木) 20:09:49.07
>>543
http://lisp-book.org/
Nine months into the project my rubbish state of health forced me to abandon being an O'Reilly author and all work on the book ceased.

遠まわしな言い方も含まれてるけど、健康がガタガタでオレイリーの著者に
なるのを捨てさせられて、本を書くことを中止した

と書いてるのね。ひどい健康問題みたいね。
0545デフォルトの名無しさん2011/12/08(木) 22:59:01.24
>>544
そういうことですか
残念ですね
■ このスレッドは過去ログ倉庫に格納されています