1 名前:デフォルトの名無しさん [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 pc8.2ch.net/test/read.cgi/tech/1101386936/l50 :part 1) (url pc11.2ch.net/test/read.so/tech/1140012484/l50 :part 2) (url pc11.2ch.net/test/read.so/tech/1181479267/l50 :part 3) (url pc11.2ch.net/test/read.cgi/tech/1201402366/l50 :part 4) (url pc11.2ch.net/test/read.cgi/tech/1215834213/l50 :part 5) (url pc12.2ch.net/test/read.cgi/tech/1234884136/l50 :part 6) (url hibari.2ch.net/test/read.cgi/tech/1270370267/l50 :part 7) □テンプレート置き場□ ttp://wiki.fdiary.net/lisp/ (id:guest pass:cl)
459 名前:デフォルトの名無しさん mailto:sage [2011/11/30(水) 02:51:28.78 ] 一冊目は?
460 名前:デフォルトの名無しさん mailto:sage [2011/11/30(水) 02:55:10.84 ] >>457 それハードカバー版じゃない? ペーパーバックの国際版なら7kちょいだよ
461 名前:デフォルトの名無しさん mailto:sage [2011/11/30(水) 08:48:17.78 ] >>460 ホントだ、知らなかった。
462 名前:デフォルトの名無しさん [2011/11/30(水) 13:53:30.75 ] sbclのスクリプトを実行可能にするとき、
463 名前:デフォルトの名無しさん [2011/11/30(水) 13:59:40.00 ] 途中で切れてしまいましたので、改めて書きます sbclのスクリプトを実行可能にするとき、アイコンを埋め込むことはできますか? sbclが作り出す実行ファイルにはアイコンが設定されていないと思うので、 ただそれに指定したアイコンを埋め込みたいです windowsxpで、外部ツール(ReplaceVistaIcon.exe)を使ってアイコンをコマンドで書き換えましたが 書き換え後の実行ファイルが"can't find core file"となってしまいます 外部ツールなしに実行ファイルのアイコンを書き換えられればベストですが、 それができないとき、外部ツール(できればコマンドラインから扱えるツール)を使って書き換えれるでしょうか
464 名前:デフォルトの名無しさん mailto:sage [2011/11/30(水) 14:30:39.75 ] うーん。できるのかなー。コアファイルが見付からないってのは、 コアイメージ部分を外部ツールがパージ、あるいは変更しちゃったからだと思う。 ファイルサイズがスリムになってたりしない? stripとかしてもそうなるはず。 多分、そういうの考えた人自体があんまりいないと思う。 ウィンドウとかタスクバーに表示されるアイコンを変えたいだけなら、 Windows APIで動的に読み込めたと思うけど、そういうんでもないんだよね? あとはショートカットに対してアイコンとかを設定しとけば、 実用上は気にならない気もするけども。 それ以外だと、手当たり次第に外部ツールを試すくらいしか思い付かない。
465 名前:デフォルトの名無しさん mailto:sage [2011/11/30(水) 20:52:14.00 ] たしかにファイルサイズが小さくなっていました 20MB台->1MB台 エクスプローラーでアイコン付きのexeファイルを表示させたかったのですが、 API経由でタスクトレイにアイコンを表示させるのがよさそうですね やってみます
466 名前:デフォルトの名無しさん [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と言うのも見つけたのですが 可変長とは相性が悪そうに思いました。違いますかね?
467 名前:デフォルトの名無しさん mailto:sage [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)))
468 名前:デフォルトの名無しさん mailto:sage [2011/12/01(木) 10:56:40.51 ] >>465 Win用のexeファイルでは、コアイメージをWin32リソースに突っ込んでいて、 そのアイコン付加ツールはアイコンをリソースに突っ込んだ後、 知らないリソースを捨ててしまってるのかもね。
469 名前:デフォルトの名無しさん mailto:sage [2011/12/01(木) 11:07:05.60 ] 木構造、全然わからんなあ。 car, cdrで原始的にゴリゴリやるしか思いつかん。
470 名前:デフォルトの名無しさん mailto:sage [2011/12/01(木) 11:52:07.48 ] map系を使おうとすることは筋がいいよ。 * (apply #'concatenate 'list '((a) (b c) (d))) (A B C D) これを応用させてみ。
471 名前:デフォルトの名無しさん mailto:sage [2011/12/01(木) 11:58:04.81 ] m-v-bは多値を返す関数の時に使うんだよ。 listをletで変数に分けるみたいなときにはdestructuring-bindを使う。 この辺はちょっと慣れてこないと感覚はつかめないかも。
472 名前:デフォルトの名無しさん [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とか使う場面でしょうか。
473 名前:デフォルトの名無しさん mailto:sage [2011/12/01(木) 12:59:03.79 ] >>467 さり気なく痴漢と変態にしてんじゃねーよw
474 名前:デフォルトの名無しさん mailto:sage [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)
475 名前:デフォルトの名無しさん mailto:sage [2011/12/01(木) 13:54:32.26 ] 'が一つ余分だったな。^^;
476 名前:デフォルトの名無しさん mailto:sage [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"を今日初めて見てソースを見ちゃった方がわかりやすい じゃんと思ってしまった。
477 名前:デフォルトの名無しさん [2011/12/01(木) 20:11:09.54 ] >>472 は急いで書いたんでぶっきらぼうな感じになってしまいましたが 皆様のお陰で何とかなりそうです。 >>473 触れるべきか考えたまま調べたりしてたら失念しました。 私が触れとくべきでしたね。「なに!変態ですと!!!」 >>474 機会があったら使ってみます。 「こんなのもある」みたいな抽出しを増やさないとダメですよね。
478 名前:デフォルトの名無しさん mailto:sage [2011/12/01(木) 23:49:07.05 ] 次に、sublisもhyperspecで調べてみ。
479 名前:デフォルトの名無しさん mailto:sage [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を使わせる方法がわかりません どこを修正すればよいでしょうか
480 名前:デフォルトの名無しさん mailto:sage [2011/12/02(金) 00:37:24.41 ] >>476 A1. function-lambda-expressionのこと? A2. シンボルの上で M-. 。SBCLならdescribeでソースの位置とか表示される A3. SLDB(SLIMEのデバッガ)については前に書いた物があるんで、下をどうぞ cl.cddddr.org/index.cgi?SLIME%3ASLDB A4. ソースは読むに越したことはないと思う。勉強になる
481 名前:デフォルトの名無しさん mailto:sage [2011/12/02(金) 00:59:07.46 ] >>479 HyperSpec曰く、 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")) みたいなのじゃ駄目なんでしょうか?
482 名前:デフォルトの名無しさん mailto:sage [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 が分からないけれど、みたいな感じで……。
483 名前:デフォルトの名無しさん mailto:sage [2011/12/02(金) 01:16:06.08 ] >>468 そういうことでしたら、無理にいじくらないようにしなくてはなりませんね 勉強になりました
484 名前:デフォルトの名無しさん mailto:sage [2011/12/02(金) 01:36:00.09 ] >>481 分かりました 道理でよくありそうな処理なのに (eval (read-from-string という例がほとんど無いのですか evalを使わずにできないものかと考えていましたが、 単に*standard-output*を利用するということを失念していました >>482 eval外部のstreamをletを使ってeval内部に持ち込むのですか ただ、そうなると>>481 の説明に反してしまうような… >>481 が簡単というか簡潔なのでそちらを使うことにします
485 名前:デフォルトの名無しさん mailto:sage [2011/12/02(金) 02:00:11.93 ] >>484 えーと、>>482 はローカル変数を参照してません。 リストを作る際に値(ストリームオブジェクト)を展開してるので、 >>481 とは矛盾しないと思います。
486 名前:466 [2011/12/02(金) 12:25:25.85 ] >>482 ぴったりな関数があったのですね。
487 名前:デフォルトの名無しさん mailto:sage [2011/12/02(金) 23:46:00.60 ] >>485 勘違いしていました リスト生成後にevalで評価していますね 失礼しました
488 名前:デフォルトの名無しさん mailto:sage [2011/12/03(土) 13:10:38.61 ] > Evaluates form in the current dynamic environment and the null lexical environment. Evalのこの制約は静的展開コンパイル最適化のため?
489 名前:デフォルトの名無しさん mailto:sage [2011/12/03(土) 22:30:55.64 ] evalはダイナミック変数ならその値を得られたような気がする それを考えると、コンパイルを必要な限りにおいてコンパクトに行うようにする、というのはしっくりくるね
490 名前:デフォルトの名無しさん mailto:sage [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の誤表記でしょうか?
491 名前:デフォルトの名無しさん mailto:sage [2011/12/04(日) 00:19:44.66 ] >>490 typoだねー。原書の時点で間違えてるみたい。 www.gigamonkeys.com/book/practical-an-html-generation-library-the-interpreter.html www.lispworks.com/documentation/HyperSpec/Body/f_open.htm#open あと、そっちは実践Common Lisp(通称PCL)。実用Common Lisp(通称PAIP)とは違うので注意。
492 名前:デフォルトの名無しさん mailto:sage [2011/12/04(日) 00:21:13.21 ] >>491 たしかに実践の間違いでした。ご指摘ありがとうございます。
493 名前:デフォルトの名無しさん mailto:sage [2011/12/04(日) 01:19:20.11 ] >>492 正誤表提案よろしく pcl.lispuser.net/wiliki.cgi?%E6%AD%A3%E8%AA%A4%E8%A1%A8.%E6%A1%88
494 名前:デフォルトの名無しさん mailto:sage [2011/12/04(日) 03:07:09.18 ] >>493 追加しておきました
495 名前:デフォルトの名無しさん mailto:sage [2011/12/04(日) 12:46:19.07 ] >>491 の1つめのサイトトップページに that book is dead sexy ?Xach on #lisp と書いてあるのですが、どういう意味なのでしょう xachという英単語は存在しないようですし
496 名前:デフォルトの名無しさん mailto:sage [2011/12/04(日) 12:55:21.24 ] >>495 Quicklispとか書いたり色々やってるLisperのZach Beane(ハンドルがXach)が、 IRCの#lispでそう言ってたってこと。
497 名前:デフォルトの名無しさん mailto:sage [2011/12/04(日) 13:32:00.48 ] >>496 なにそれ。 知らんがなって感じだな。 ハンドル名じゃなくて実名で書けよ。 pgってどれだけ浸透しているのか知らないけど、pgだけだと迷惑だな。
498 名前:デフォルトの名無しさん mailto:sage [2011/12/04(日) 13:59:39.95 ] 何を過剰に反応してるか知らんけど、RubyでのMatzとか、日本のSchemeでのShiroさんとか、 別に通りの良いあだ名で人を識別するのなんて普通だろ。 そもそも、事情が分かる人向けに「あの有名人もこう言ってますよ」っていう宣伝なんだから。
499 名前:デフォルトの名無しさん mailto:sage [2011/12/04(日) 14:37:35.60 ] Matzだったら認知度高いと思うけど、非日本諸国でShiroだけでどれだけの人が認知できるのかね。 竹内関数の竹内さんの通り名知らないけど、その通り名で英語圏でどれだけ認知されているの? ちゃんとその本人のリンクが貼ってあるならわかりやすいだがな。
500 名前:デフォルトの名無しさん mailto:sage [2011/12/04(日) 14:42:45.70 ] チョン鮮人乙
501 名前:デフォルトの名無しさん mailto:sage [2011/12/04(日) 14:52:50.60 ] >>500 Es lebe die koreanische
502 名前:490 mailto:sage [2011/12/04(日) 15:15:45.19 ] sbcl最新版をwindowsで使っています おかげさまで実践common lispを読み終えたのですが、 実際にコードを動かそうと思って 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 となってしまいました どうすればよいのでしょうか
503 名前:デフォルトの名無しさん mailto:sage [2011/12/04(日) 16:18:44.40 ] Warum bist du so serene?
504 名前:デフォルトの名無しさん mailto:sage [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経由でロードできます。
505 名前:デフォルトの名無しさん mailto:sage [2011/12/04(日) 16:35:46.21 ] >>499 別に全世界でどうこうとか知名度とか、そういうのはまったく関係ないわけよ。 「特定のコミュニティ」の中で十分に共通の認識がある通り名なら、 「中の人同士」でのコミュニケーションに使っても何の問題もないっしょ? 「この道では知る人ぞ知るアイツもこう言ってるぜ、買えよ」って売り文句に、 「俺は知らないんだけど」って言ってる状況なんだけど、不毛だと思わんか? その広告のターゲットじゃないんだから、無理に分かろうとしなくていいんだよ。
506 名前:デフォルトの名無しさん mailto:sage [2011/12/04(日) 16:48:28.25 ] lispbox、emacsの操作だけ覚えれば使える感じだな。 これはかなり良い入門者向き環境かもしれない。
507 名前:デフォルトの名無しさん mailto:sage [2011/12/04(日) 16:53:40.02 ] >>505 ヌーディストビーチのWeb上でのコミュニケーションなんだから 腋毛、マン毛等を手入れしたりした方が良いんじゃないの。 部外者はみるなと立看板をわかりやすいところに立てているなら 勝手にすればいいよ。
508 名前:デフォルトの名無しさん mailto:sage [2011/12/04(日) 17:06:43.44 ] >>507 裸なのは君の方なんじゃないの?
509 名前:デフォルトの名無しさん mailto:sage [2011/12/04(日) 17:17:29.64 ] 気に入らなくてどうにかしたいなら直接そのコミュニティに言えよ
510 名前:デフォルトの名無しさん mailto:sage [2011/12/04(日) 17:25:18.90 ] 語学力不足で読み取れなかったのに、 コミュニティの閉鎖性にして誤魔化すのはみっともないと思います。
511 名前:デフォルトの名無しさん mailto:sage [2011/12/04(日) 17:25:26.19 ] 言えないからここで自分の馬鹿さをひけらかしてる訳で
512 名前:デフォルトの名無しさん mailto:sage [2011/12/04(日) 17:54:21.06 ] >>506 Emacsを好きになれるかがLisp入門にあたっての鬼門だったりするね 自分はvimから入ったから正直きつかった 好きになったのはEmacs Lispを書くようになってからだ
513 名前:デフォルトの名無しさん mailto:sage [2011/12/04(日) 18:04:13.66 ] >>488 Common Lispはlexical bindingセマンティクスだからでしょう。 引数にquoteされた式が書かれた場合はlexical bindingではあるんだけど、 引数が一般の式の時には、外のlexical environmentをアクセスしにいくのは、 Common Lispのセマンティクス上まずい。 統一的にlexical environmentはアクセスできないようにしておけば わかりやすい性質を持ったevalになる。
514 名前:デフォルトの名無しさん mailto:sage [2011/12/04(日) 18:27:48.47 ] >>512 pgはvi派だし、vimの方がサラッと書くときには便利じゃないのかな。 環境を整えて書いたことないけど。 emacs自体は強い支援環境とemacs lispを組む楽しさがあるぐらい。 emacsは四輪でいつも信号に捕まって渋滞。vimはバイクですり抜けして 信号に捕まらずに快適。良い景色があって停車してデジカメに収めよう としても両者の違いは明らか。
515 名前:デフォルトの名無しさん mailto:sage [2011/12/04(日) 18:33:24.68 ] 環境を整えなくても・・・viはもともとlispモードがついてるし、 screenと組み合わせれば、それとなく使い勝手の良いものになってくれる。
516 名前:デフォルトの名無しさん mailto:sage [2011/12/04(日) 18:39:07.08 ] 操作がネックになってるvi使いはviper-mode使えば良いのに。
517 名前:512 mailto:sage [2011/12/04(日) 19:01:30.40 ] 言われてみてvimでも平気だったんじゃないかって気がしてきたよ なんかくやしいわ
518 名前:デフォルトの名無しさん mailto:sage [2011/12/04(日) 19:09:15.80 ] Lisp向けのvim scriptたくさんあるよ。気に入ったものがあればどうぞ。 ↓www.vim.org/scripts/ での検索結果 www.google.com/cse?cx=partner-pub-3005259998294962%3Abvyni59kjr1&q=Lisp
519 名前:デフォルトの名無しさん mailto:sage [2011/12/04(日) 19:30:37.86 ] slimevよさげですね。もっと早く出てたらEmacsに移らなかったかも
520 名前:デフォルトの名無しさん mailto:sage [2011/12/04(日) 19:57:47.77 ] slimvは利用してるけど、emacs+slimeのほうが使い勝手はいい感じがした。 うちの.emacsをチューニングしてるからかもしれないが。 vim使っててよくわからんと思ってるのは自動的に括弧を閉じるようにした時に 括弧の外に移動する方法が矢印キー以外のことがよくわからん^^;ところ vimも適当な書物をかって学んだほうがええんかなぁ。オライリーのvi/vim第7版は原著しか無いけd.
521 名前:デフォルトの名無しさん mailto:sage [2011/12/04(日) 21:37:08.33 ] emacs+slimeでcclを使っていますが、 common lispの閉じ括弧から開き括弧に移動するショートカットキーはあるのでしょうか? 逆に、well-formedなs式で、開き括弧から閉じ括弧に飛ぶということはどうでしょうか
522 名前:デフォルトの名無しさん mailto:sage [2011/12/04(日) 22:09:10.47 ] >>516 vipper-modeかと思った
523 名前:デフォルトの名無しさん mailto:sage [2011/12/04(日) 22:25:38.24 ] >>521 lispuser.net/emacs/lisphacking.html#sec-1.1
524 名前:デフォルトの名無しさん mailto:sage [2011/12/04(日) 22:30:23.11 ] >>523 まさに探していた機能が載っていました ありがとうございます。
525 名前:デフォルトの名無しさん mailto:sage [2011/12/04(日) 22:50:47.85 ] >>504 できました!丁寧に解説して下さってすみません
526 名前:デフォルトの名無しさん mailto:sage [2011/12/05(月) 00:00:32.88 ] CLOSの:aroundメソッドがよくわかりません :before と :afterのそれぞれのメソッドは説明を見ても分かるのですが… どういう意味でaround(周囲)なのでしょうか
527 名前:デフォルトの名無しさん mailto:sage [2011/12/05(月) 00:15:03.95 ] 中でcall-next-methodを呼び出せる。 call-next-methodで呼び出されるmethodを覆うように実行されるからaround。
528 名前:デフォルトの名無しさん mailto:sage [2011/12/05(月) 01:45:09.14 ] そういうことですか 周囲ではなくて覆うというイメージなら分かる気がします
529 名前:デフォルトの名無しさん mailto:sage [2011/12/06(火) 16:00:52.40 ] PAIPを読み続けてるけどNorvigのコードって抽象化力が際立ってるね。 惚れ惚れするコードを書くよ。
530 名前:デフォルトの名無しさん [2011/12/07(水) 07:41:56.65 ] doがどうも理解しずらいのですが コツなどありますか?
531 名前:デフォルトの名無しさん mailto:sage [2011/12/07(水) 11:38:02.20 ] do*がCのforループと一緒。 doはbodyの実行順序が規定されてない。(依存してはいけない)
532 名前:デフォルトの名無しさん mailto:sage [2011/12/07(水) 12:31:47.74 ] >>531 紛らわしいかきかたすんな DO : ループ変数の束縛がパラレルに行われる DO* : ループ変数の束縛がシーケンシャルに行われる
533 名前:デフォルトの名無しさん mailto:sage [2011/12/07(水) 13:26:49.32 ] common lispのおおざっぱな内容はつかんだと思うのですが、 それからどういうものを作ればいいのかピンときません できれば10~100行のソースの小さなプログラムで、 common lispの使いどころがよくわかるようなものを複数探しているのですが、 そういうものはありますか?
534 名前:デフォルトの名無しさん mailto:sage [2011/12/07(水) 15:10:13.11 ] >Webで読めるCommon Lisp情報まとめ >Common Lispの情報を得られるWebサイトや書籍をまとめました。 matome.hatena.ne.jp/mt/761 paipが無いのが残念だけど、 いい感じにまとまっているね
535 名前:デフォルトの名無しさん mailto:sage [2011/12/07(水) 15:10:25.11 ] こういう複数の言語の実装と比較できるものを読んでみるとか。 shootout.alioth.debian.org/u32/benchmark.php?test=revcomp&lang=sbcl
536 名前:デフォルトの名無しさん mailto:sage [2011/12/07(水) 16:03:05.72 ] >>534 深町さんも頑張ってまとめたね。おっしゃるように、Norvigのpaipや Norvig&Pitmanのlisp作法に書いたドキュメントがないのが残念。とく に作法のは和訳もされてて読まれやすだけにな。 (*) www010.upp.so-net.ne.jp/okshirai/tutorial-on-good-lisp-programming-style-ja.txt オレイリーの本って幻っぽい。あの作者が早く健康を取り戻すことをお祈りしておくよ。
537 名前:デフォルトの名無しさん mailto:sage [2011/12/07(水) 16:06:24.88 ] Pitman=Hyperspecの中の人。
538 名前:デフォルトの名無しさん mailto:sage [2011/12/07(水) 16:25:10.53 ] >>533 PAIPは100行程度でこんなことできるのかと驚かされるものはのってるけど 今の貴方の状況で進められるものかどうか判断できない。 Common Lispだけはいろんな人がいろんな個性のコードを書くから、それが 良いかどうかをみるポイントは>>536 でも参考にしてほしい。柔軟性を上手に 使って、最適化も上手なものって案外センスが問われるから。 https://github.com/languages/Common%20Lisp にはいっぱいコードが転がっ てるけど、お目当てのものが有りそうかどうかはわからん。 速いコードを書く人ならEdi Weitzさんを見るといいかも。でも100行程度じゃないな。^^;
539 名前:デフォルトの名無しさん mailto:sage [2011/12/07(水) 17:24:49.34 ] >>533 使いどころって高尚な使い方の話? 雑多な処理なら随時実装していけばいいんじゃないの。とりあえず、どう書く.org?は例文として 参考になるんじゃないかな。 ttp://www.amazon.co.jp/dp/4874084141/ 実装するネタがないならこの名著から適当につまみ食いして実装すればいい。 lispのいい所は慣用句を覚えれば形にするの(実装)が速いことだと思うから、形にして動かして 必要性があれば不満な部分を1から再実装しても良いし、不満な部分を我慢して違う興味のあるモノを 作っても良いという気楽さがある。
540 名前:デフォルトの名無しさん mailto:sage [2011/12/07(水) 17:55:33.62 ] なんか文章捻れちまったなあww lispのいい所は慣用句を覚えれば形にするの(実装)が速いことだと思う。形にして動かして必要性が あれば不満な部分を1から再実装しても良いし、不満な部分を我慢して違う興味のあるモノを作って も良いという気楽さがある。
541 名前:533 mailto:sage [2011/12/07(水) 22:38:43.46 ] 皆さん丁寧に教えて下さりありがとうございます。 >>538 のgithubを見た感じでは読み進めるのに難がありそうなので、 paipとどう書く.orgを手がかりに勉強していきます
542 名前:デフォルトの名無しさん [2011/12/08(木) 07:32:22.36 ] >>532 簡単な用例などありますか?
543 名前:デフォルトの名無しさん mailto:sage [2011/12/08(木) 19:19:45.33 ] >>536 >オレイリーの本って幻っぽい。あの作者が早く健康を取り戻すことをお祈りしておくよ。 作者がどうかしたのですか?倒れたとか…
544 名前:デフォルトの名無しさん mailto:sage [2011/12/08(木) 20:09:49.07 ] >>543 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. 遠まわしな言い方も含まれてるけど、健康がガタガタでオレイリーの著者に なるのを捨てさせられて、本を書くことを中止した と書いてるのね。ひどい健康問題みたいね。
545 名前:デフォルトの名無しさん mailto:sage [2011/12/08(木) 22:59:01.24 ] >>544 そういうことですか 残念ですね
546 名前:デフォルトの名無しさん mailto:sage [2011/12/08(木) 23:11:54.76 ] < O'Reillyの著者になることは諦めざるを得なくなり、その本に関することは全てやめました。
547 名前:デフォルトの名無しさん mailto:sage [2011/12/08(木) 23:20:03.51 ] >>546 Thanks よく考えたら、 健康であきらめざる負えなくなったことが、 お礼リーかなんかにやめされられたと受け取れん書き方になってた^^;
548 名前:デフォルトの名無しさん mailto:sage [2011/12/08(木) 23:23:24.16 ] オレイリーって発音も許容されるの?
549 名前:デフォルトの名無しさん mailto:sage [2011/12/08(木) 23:27:54.90 ] 研究社のリーダーズを調べた O'・Reil・ly /ouraili/ ouでは英語で母音が連続するから、 オウライリーとオーライリーの中間?って感じか
550 名前:デフォルトの名無しさん mailto:sage [2011/12/08(木) 23:43:46.15 ] 社名 株式会社オライリー・ジャパン www.oreilly.co.jp/index.shtml
551 名前:デフォルトの名無しさん mailto:sage [2011/12/09(金) 00:13:08.63 ] aeだとおもってたけどaやった?
552 名前:デフォルトの名無しさん mailto:sage [2011/12/09(金) 00:15:39.80 ] ja.forvo.com/word/o%27reilly/ しらべた
553 名前:デフォルトの名無しさん mailto:sage [2011/12/09(金) 00:28:42.72 ] >>542 >>532 じゃないけど、一例。あんま簡単じゃないかも。 (let ((x 0)) (do ((x 1 (1+ x)) (y x x)) ((> x 5)) (print y))) ;-> 0 ; 1 ; 2 ; 3 ; 4 (let ((x 0)) (do* ((x 1 (1+ x)) (y x x)) ((> x 5)) (print y))) ;-> 1 ; 2 ; 3 ; 4 ; 5
554 名前:デフォルトの名無しさん mailto:sage [2011/12/09(金) 05:48:22.25 ] >>553 doって何者だ? CL-USER> (let ((x 9)) (do ((x 1 (1+ x)) (y x x)) ((> x 5)) (print y))) 9 1 2 3 4 NIL CL-USER> (let ((x 9)) (do* ((x 1 (1+ x)) (y x x)) ((> x 5)) (print y))) 1 2 3 4 5 NIL
555 名前:デフォルトの名無しさん mailto:sage [2011/12/09(金) 09:53:45.07 ] lの二列目だけを抽出できないでしょうか? CL-USER> (let ((l (ql:system-list))) (first l)) #<QL-DIST:SYSTEM 3b-swf / 3b-swf-20110110-git / quicklisp 2011-12-03>
556 名前:デフォルトの名無しさん mailto:sage [2011/12/09(金) 12:02:18.15 ] Pythonの対話式シェルで > (import os) エラーが出て、5分ぐらい悩んじまった。
557 名前:デフォルトの名無しさん mailto:sage [2011/12/09(金) 16:10:58.03 ] xachさんがl1sp.org/ を作ったみたい。便利 slimeのファジー補完と同じ事を使って検索もできる。
558 名前:デフォルトの名無しさん mailto:sage [2011/12/09(金) 16:47:22.71 ] オラ入り
559 名前:デフォルトの名無しさん mailto:sage [2011/12/09(金) 22:35:20.44 ] カツマーが高校時代にlisperだったというんだけど、 勝間和代さんと語る─キャリア形成にSNSをどう使う?/Tech総研 rikunabi-next.yahoo.co.jp/tech/docs/ct_s03600.jsp?p=002018 日本の高校生が扱うことの出来たlispってどういう種類があるの? 16歳のときに1984年だから高校時代とcommon lispの制定とかぶると思うんだけど、 そのときに一般人(かどうか知らないけど)がlispの環境をどれくらい触れたのか知りたい common lispはその中でもレアだったのかも