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)
2 名前:デフォルトの名無しさん mailto:sage [2011/07/06(水) 18:51:29.38 ] ((お勧めの Common Lisp 処理系) (SBCL: www.sbcl.org/ :プラットフォーム Linux, Mac OS, Solaris, *BSD, Windows :開発 活発 :日本語 UCS-2, UCS-4, UTF-8, UTF-16, UTF-32, Shift_JIS, EUC-JP :特徴 一番お勧めのネイティブコードコンパイラ。) (CLISP: clisp.org/ :プラットフォーム Linux, Mac OS, UNIX, *BSD, Windows, etc. :開発 そこそこ活発 :日本語 UCS-2, UCS-4, UTF-8, UTF-16, ISO-2022-JP, Shift_JIS, CP932, EUC-JP :特徴 バイトコードコンパイラ。遅いがフットプリントが小さい。) (CMUCL: www.cons.org/cmucl/ :プラットフォーム Linux, Mac OS, UNIX, *BSD :開発 そこそこ活発 :日本語 UTF-8, UTF-16, UTF-32 :特徴 高速ネイティブコードコンパイラ。SBCL の元になった。) (Clozure CL: trac.clozure.com/ccl :プラットフォーム Mac OS, Linux, FreeBSD, Solaris, Windows :開発 そこそこ活発 :日本語 UCS-2, UTF-8, UTF-16, UTF-32, CP932、EUC-JP :特徴 元々商用のネイティブコードコンパイラ。))
3 名前:デフォルトの名無しさん mailto:sage [2011/07/06(水) 19:12:33.30 ] ((商用の処理系) (Allegro CL: jp.franz.com/index.html :プラットフォーム Linux, Mac OS, FreeBSD, Solaris, AIX, Windows :開発 最大手 :日本語 UTF-8, UTF-16, ISO-2022-JP, Shift_JIS, CP932, EUC-JP :特徴 お高いがもっとも頼れる。申し込みが必要だがFree Express Editionあり。) (LispWorks: www.lispworks.com/products/lispworks.html :プラットフォーム Linux, Mac OS, FreeBSD, Solaris, HP-UX, Windows :開発 半年にいっぺんくらいアップデート :日本語 UCS-2, UTF-8, ISO-2022-JP, Shift_JIS, EUC-JP :特徴 IDEベース。フリー版はconsセルの上限が来るとダイアログがでる。 SDLとかで遊ぶとすぐに引っかかる。) (Corman CL: www.cormanlisp.com/index.html :プラットフォーム Windows :特徴 Windows専門の処理系。Allegro CLやLispWorksに比べると安価。)) ((その他) (ABCL: armedbear-j.sourceforge.net/ :特徴 JavaVM 上で動く。JavaVM のバイトコードを生成。) (GCL: www.gnu.org/software/gcl/ :特徴 日本発 Kyoto Common Lisp の直系。) (ECL: ecls.sourceforge.net/ :特徴 Lisp->C コンパイラ。組み込み可能。こちらもKCLの系譜。))
4 名前:デフォルトの名無しさん mailto:sage [2011/07/06(水) 19:21:15.55 ] ■ANSI Commn Lisp 仕様関係 HyperSpec (CLHS) www.lispworks.com/documentation/HyperSpec/Front/ Common Lisp the Language, 2nd Edition (CLtL2) www.cs.cmu.edu/Groups/AI/html/cltl/cltl2.html lispdoc lispdoc.com/ Common Lisp Quick Reference clqr.berlios.de/index.php ■日本語のチュートリアル xyzzy Lisp Programming ttp://www.geocities.jp/m_hiroi/xyzzy_lisp.html ファイヤープロジェクト: Common Lisp ttp://www.fireproject.jp/feature/common-lisp/index.html LISP and PROLOG ttp://home.soka.ac.jp/~unemi/LispProlog/ Lisp 一夜漬け ttp://www.haun.org/kent/lisp1/ Lisp入門 ttp://wisdom.sakura.ne.jp/programming/lisp/index.html
5 名前:デフォルトの名無しさん mailto:sage [2011/07/06(水) 19:28:45.96 ] ■進んだ話題が欲しい人に (和文) ja.wikipedia.org/wiki/Common_Lisp www.komaba.utmc.or.jp/~flatline/onlispjhtml/ ttp://lispuser.net ttp://www.geocities.co.jp/SiliconValley-SanJose/7474/index.html (英文) wiki.alu.org:80/ groups.google.co.jp/group/comp.lang.lisp www.cliki.net/index www.common-lisp.net cl-cookbook.sourceforge.net/ planet.lisp.org/ www.gigamonkeys.com/book/ letoverlambda.com/ landoflisp.com/ www.psg.com/~dlamkins/sl/cover.html www.cs.cmu.edu/~dst/LispBook/index.html
6 名前:デフォルトの名無しさん mailto:sage [2011/07/06(水) 19:34:24.68 ] ((おまけの処理系 (POPLOG: www.cs.bham.ac.uk/research/poplog/freepoplog.html Lisp, Prolog, ML のコンパイラ) (WCL: wcl.kontiki.com/ Shared Library として使える Lisp) (Movitz: common-lisp.net/project/movitz/movitz.html フルスクラッチの Lisp OS) (CADR LispM: www.heeltoe.com/retro/mit/mit_cadr_lmss.html MIT で使われていた LispM のソースを公開したもの))) ((その他のリンク (Common Lisp JP: practical-scheme.net/chaton/common-lisp-jp/ チャット) (lush: lush.sourceforge.net/ Lisp Universal Shell) (「実践 Common Lisp」非公式サポートページ: ttp://pcl.lispuser.net/) (Paul Graham の ANSI Common Lisp: www.pej-hed.jp/washo/288.html Common Lisp の 参考書を探しているならこれ一択)))
7 名前:デフォルトの名無しさん mailto:sage [2011/07/06(水) 19:44:12.30 ] テンプレ終わり。以上、漏れ、ミス等あったら指摘よろしく。 この長いテンプレを貼るのも二度目だと思うが、テンプレ代わりに ttp://wiki.fdiary.net/lisp/ ttp://cl.cddddr.org/ 書いとくだけじゃ駄目なん? Lisp Schemeスレみたいに。
8 名前:デフォルトの名無しさん mailto:sage [2011/07/06(水) 21:44:00.33 ] >>1 乙です。 > ま、ゆっくりたりましょう。 ってなってるけど、「ゆっくり『や』りましょう」かな テンプレ置き場から間違っているみたいだけど テンプレは短くてもいいと思う
9 名前:デフォルトの名無しさん mailto:sage [2011/07/07(木) 00:48:28.48 ] 長いと貼るのが大変だから短くていいと思う。 できるだけスレ立てする人の負担を軽くすべし。
10 名前:デフォルトの名無しさん mailto:sage [2011/07/08(金) 23:31:48.61 ] >1乙
11 名前:デフォルトの名無しさん [2011/07/09(土) 09:50:21.47 ] >>1 スレ立て乙
12 名前:デフォルトの名無しさん [2011/07/09(土) 22:37:19.25 ] しかしネタがないage
13 名前:デフォルトの名無しさん mailto:sage [2011/07/10(日) 00:10:47.65 ] じゃあ、そろそろ出そうなCCL 1.7の話でも。 - Darwin/ppcのサポート終了の予定 - 付属のASDFが2.016になった - ASDF-Installの同梱終了。Quicklispを代わりに推奨 - CCLの32-bitのバイナリが64-bit Windowsでも動くようになった - ARMへの対応が大幅に前進 - *gensym-counter*がスレッドローカルからグローバルに - ccl:*disassemble-verbose*追加
14 名前:デフォルトの名無しさん mailto:sage [2011/07/10(日) 00:17:18.16 ] あと、trunkではアセンブラ周りとかに色々手が入っていて、 FASLのバージョンも上がってイメージやFASLの互換性が無くなった。 1.7に入るかは不明。
15 名前:デフォルトの名無しさん mailto:sage [2011/07/12(火) 14:30:35.80 ] exe化したcommon lisp処理系のスクリプトを配布したいとき、 (動作環境はwindows 7/vistaです) ライセンス的に緩いものはどれでしょうか?
16 名前:デフォルトの名無しさん mailto:sage [2011/07/13(水) 01:22:23.15 ] * SBCL - パブリックドメイン(一部BSD) * CMUCL - パブリックドメイン * CLISP - GPL(附則あり) * CCL - LLGPL * ECL - LGPL * ABCL - GPL(附則あり) だから、実行形式作る分には好きなの使えば良いと思う。 むしろ気を付けるべきなのは、処理系よりも使うライブラリじゃないか?
17 名前:デフォルトの名無しさん mailto:sage [2011/07/16(土) 09:14:00.44 ] #:keyword はキーワードだと思うのですが、 :keyword と書くのと何か違うのでしょうか?
18 名前:デフォルトの名無しさん mailto:sage [2011/07/16(土) 11:39:48.66 ] >>17 キーワードではない #: introduces an uninterned symbol whose name is symbol-name. Every time this syntax is encountered, a distinct uninterned symbol is created. The symbol-name must have the syntax of a symbol with no package prefix.
19 名前:デフォルトの名無しさん mailto:sage [2011/07/16(土) 11:39:56.49 ] >>16 それは処理系のライセンスでしょ? CLの場合、実行形式作ると処理系も含まれるよね? まあ実行形式は別のライセンスになってるケースもあると思うが。
20 名前:デフォルトの名無しさん mailto:sage [2011/07/16(土) 13:53:16.43 ] あるシンボルがtype-specifierかどうかは どうすれば知ることが出来ますか?
21 名前:デフォルトの名無しさん mailto:sage [2011/07/16(土) 14:03:59.08 ] >>19 それはひょっとしてギャグで言っているのか。 処理系のライセンスが、例えばパブリックドメインとかBSDとかMITなら、 実行形式にカーネル含めようが何しようが問題ないのは分かるよね? あとは、LLGPLというのは、まさにその、Lisp特有のリンク事情について定義を明確にした、 LGPL+附則というライセンスだし、CLISPなどの「GPL+附則」の附則部分は、 実行形式を作ったりするときの例外事項の規定の訳だが。 とりあえず、自分で実際に読めば分かるよ。 LLGPL ttp://opensource.franz.com/preamble.html CLISPのライセンス ttp://clisp.hg.sourceforge.net/hgweb/clisp/clisp/raw-file/tip/COPYRIGHT ABCLが採用しているクラスパス例外 ttp://www.gnu.org/software/classpath/license.html
22 名前:デフォルトの名無しさん mailto:sage [2011/07/16(土) 14:31:51.10 ] >>20 どういうことがやりたいの? HyperSpecを流し読みしてみたけど、ドンピシャの関数とかはないみたい。 CCLなら、ccl:type-specifier-pという関数があったよ。
23 名前:デフォルトの名無しさん mailto:sage [2011/07/16(土) 16:02:33.06 ] >>22 あるクラスのサブクラスのオブジェクトについて (defun make-hoge (type &rest args) ...) みたいな感じのコンストラクタを書きたいと思い ここでtypeにtype-specとニックネームのような短い名前の 両方を入れられるようにしたいと思いました typeはtype-specと1対1に対応しているわけではなく、 typeを参考にargsの内容から実際のtype-specを推測します。 ここで、typeがtype-specだった場合に 対応しているものか調べるために、subtypepを呼ぶと、 typeがtype-specで無い場合にエラーが起きてしまいます 誰もご存知ないようなら例外処理か何かで対応しようと思います ありがとうございました
24 名前:デフォルトの名無しさん mailto:sage [2011/07/16(土) 19:08:06.55 ] >>23 なるほど。力になれずに申し訳ないけど、ポータブルなやり方は分からない。 subtypepのエラーを捕捉するのが、泥臭いけど一番良いのかな。 >>22 で挙げたccl:type-specifier-pでは、 (defun type-specifier-p (form &aux sym) (cond ((symbolp form) (or (type-predicate form) (structure-class-p form) (%deftype-expander form) (find-class form nil))) ((consp form) (setq sym (%car form)) (or (type-specifier-p sym) (memq sym '(member satisfies mod)) (and (memq sym '(and or not)) (dolist (spec (%cdr form) t) (unless (type-specifier-p spec) (return nil)))))) (t (typep form 'class)))) こんな風に判断してた。
25 名前:デフォルトの名無しさん mailto:sage [2011/07/16(土) 23:37:49.07 ] Lispというと、なんだかリストばかりを使うイメージがあります。 実際には配列も多く使用するのですか。
26 名前:デフォルトの名無しさん mailto:sage [2011/07/17(日) 05:28:59.34 ] 基本はリストだけど配列のほうが適している場面では使うかと 「サイズ不変」かつ「ランダムアクセス多発」なんてときはそりゃ配列のが良いさ C言語とかだと組み込みとかの極小メモリ環境意識するし 標準では配列しか使えないから配列がメインだろうけど あれだって「要素数が常に変化する」「シーケンシャルアクセスがメイン」なんて場合はリストも使うっしょ
27 名前:デフォルトの名無しさん mailto:sage [2011/07/17(日) 06:59:05.59 ] Clojure なんて見てると、プログラムをデータとして扱う(要はマクロ)とき は確かにリストだけど、それ以外は何でもありって感じ。 Lisp の進化形なのか、変種にすぎないのか、良く分からんね。
28 名前:デフォルトの名無しさん mailto:sage [2011/07/17(日) 07:27:39.63 ] リストはメモリの消費が激しいから、配列も多用するよー。 リストの場合、32ビットでもコンスセルあたり8バイトとか使うし。64ビットだともう凄い。 32ビットで1024要素くらいでも、リストが8 kb強、ベクタなら4 kb弱とダブルスコア。 ただ、遅延ストリームとか循環リストとか便利だし、木構造も表現できるし、 なんだかんだ言ってalistもplistもお手軽で便利だから、リスト使うよ。 >>26 の言うように、シーケンシャルアクセスなら速いし。
29 名前:デフォルトの名無しさん mailto:sage [2011/07/17(日) 08:39:23.30 ] Lisp で手軽に扱えるデータ構造というとリストだからね。 まぁ、そのように作られた言語だから当然なんだけど。 ざっくりとしたものをまず作るってときにリストの柔軟性っていうのはすごくマッチしてるんだよ。 プログラムを書く序盤っていうのはどんなデータ構造が適切なのか、 どこがボトルネックになるのかはわからない。 わかってるつもりがやってみたら違うってこともある。 だから序盤ではリストで作ってみて効率に効いてくるところを配列や構造体で置換えるというのはよくある。 機能や性能が不足だろうととにかく「まず動くもの」を作ってから改良していくのが Lisp 的なスタイルだし、 そのスタイルにリストはよく合うってこと。
30 名前:デフォルトの名無しさん mailto:sage [2011/07/17(日) 12:46:05.02 ] >>24 ありがとうございます。 参考になります。
31 名前:25 mailto:sage [2011/07/17(日) 17:38:02.06 ] 25です。 皆様ご回答ありがとうございました。 勉強になりました。
32 名前:デフォルトの名無しさん mailto:sage [2011/07/19(火) 12:30:42.10 ] common lispの挙動を理解するために common lisp の(簡単な)サブセットを vbs で作って見たいのですが、 どこから着手すればよいのかわかりません できれば動作を確認しながら実装したいです lispのサブセットを作成したことがある方の意見をお聞かせください
33 名前:デフォルトの名無しさん mailto:sage [2011/07/19(火) 14:35:01.66 ] vbsで書かれたyaccでも探すとか?
34 名前:デフォルトの名無しさん mailto:sage [2011/07/19(火) 16:05:02.70 ] >>32 Lisp1.5から始めたら? Lisp自体初めてでも3日とかからないでしょ。
35 名前:デフォルトの名無しさん mailto:sage [2011/07/19(火) 21:04:48.95 ] >>32 何で CL の挙動を理解するのに vbs でサブセットを実装するという話になるのか分からんけど、 Lisp の処理系を作った事がないなら、まずは↓この記事が参考になると思います。 www.oki-osk.jp/esc/go.html CL の実装はその後で。 それより CL の処理系をインストールしてガシガシ弄った方が勉強になると思うけど...
36 名前:デフォルトの名無しさん mailto:sage [2011/07/19(火) 21:35:27.97 ] 好きなやり方でやればいい。
37 名前:デフォルトの名無しさん mailto:sage [2011/07/20(水) 01:14:41.07 ] サブセットでも、Common Lispの処理系を作るとかマジ勇者だな。LispとかSchemeならともかく。 Visual Basicとかから来たのなら、規格に溢れる概念や用語を把握するだけでもきつい気がする。 応援してるから頑張ってくれ。もし手応えを得たら、日本発の処理系再びって展開を期待。
38 名前:デフォルトの名無しさん mailto:sage [2011/07/21(木) 13:45:40.59 ] blog.bugyo.tk/lyrical/archives/126 ニコニコ動画のスクリプトでLispインタプリタ作ったそうだ
39 名前:デフォルトの名無しさん [2011/07/21(木) 15:12:46.41 ] いつの話題だよ
40 名前:デフォルトの名無しさん mailto:sage [2011/07/21(木) 22:06:16.45 ] 書いてあるよ?
41 名前:デフォルトの名無しさん mailto:sage [2011/07/21(木) 22:42:11.72 ] 確かに「いつの話題だよ」って文を額面通りに読めばいつの話題なのか訊ねてることになるが……
42 名前:デフォルトの名無しさん mailto:sage [2011/07/21(木) 22:56:32.95 ] 人工知能なんだろう
43 名前:デフォルトの名無しさん mailto:sage [2011/07/22(金) 03:22:46.85 ] ナンセンスギャグの王道的手法だな
44 名前:デフォルトの名無しさん mailto:sage [2011/07/22(金) 08:29:49.03 ] >>41 修辞疑問だな。
45 名前:デフォルトの名無しさん mailto:sage [2011/07/22(金) 14:11:09.96 ] このスレッドは天才チンパンジー「アイちゃん」が 言語訓練のために立てたものです。 アイと研究員とのやり取りに利用するスレッドなので、 関係者以外は書きこまないで下さい。
46 名前:デフォルトの名無しさん mailto:sage [2011/07/22(金) 21:07:56.93 ] このスレッドはCommon Lispによる人工知能「AIちゃん」が 言語訓練のために立てたものです。 AIと研究員とのやり取りに利用するスレッドなので、 関係者以外は書きこまないで下さい。
47 名前:デフォルトの名無しさん mailto:sage [2011/07/23(土) 01:28:34.64 ] そこはElizaちゃんでだなぁ
48 名前:デフォルトの名無しさん mailto:sage [2011/07/24(日) 18:26:29.09 ] Common Lispって実際に使われてるの?
49 名前:デフォルトの名無しさん mailto:sage [2011/07/24(日) 19:34:32.07 ] その質問定期的に出るNE! しかも過去ログを読もうともしないし、グーグル先生にお伺いを立てることもないんだ。
50 名前:デフォルトの名無しさん mailto:sage [2011/07/24(日) 19:44:05.18 ] stumpwmで動作はぎこちないが現在のグループに表示してあるウィンドウを すべてfnextにずらすもの作ったんだけど需要ありますか?
51 名前:デフォルトの名無しさん mailto:sage [2011/07/25(月) 16:22:49.31 ] >>48 ↓ >>46
52 名前:デフォルトの名無しさん mailto:sage [2011/07/25(月) 17:03:18.43 ] >>50 stumpwm 改造の参考に、見てみたいです。
53 名前:デフォルトの名無しさん mailto:sage [2011/07/25(月) 18:38:25.47 ] >>52 参考にならないほどのやっつけですが www.dotup.org/uploda/www.dotup.org1828277.gz.html 自分用としてはいまのところ問題ないです。
54 名前:デフォルトの名無しさん mailto:sage [2011/07/25(月) 19:55:32.39 ] >>53 stumpwmってしらなかった、wmiiからこっちにひっこそうかしら
55 名前:デフォルトの名無しさん mailto:sage [2011/07/31(日) 21:04:37.62 ] Lispを今日始めたものなのですが、 (defun foo (lst) (car lst)) (setq var (list 2 4 6 8 1 3 5 7 9 10) ) (foo var) でfooという関数はないと言われるのですが、何故でしょうか?
56 名前:デフォルトの名無しさん mailto:sage [2011/07/31(日) 21:12:22.21 ] >>55 Mac OS X 上の CCL だと実行出来ましたよ
57 名前:デフォルトの名無しさん mailto:sage [2011/07/31(日) 21:13:39.35 ] (setq var (list 2 4 6 8 1 3 5 7 9 10) ) ってなんか意味あんの?それを挟まなければエラーが出ないとか?
58 名前:デフォルトの名無しさん mailto:sage [2011/07/31(日) 21:14:26.54 ] う、見間違えた。すまん
59 名前:デフォルトの名無しさん mailto:sage [2011/07/31(日) 21:44:57.55 ] ideone.com/TeUAw ?
60 名前:55 mailto:sage [2011/07/31(日) 21:49:00.12 ] おお…本当ですね xyzzyというエディタ付属のLispが手軽と聞いたのでそちらでやっていたのですが、そちらだと怒られるようで・・・ ありがとうございます
61 名前:デフォルトの名無しさん mailto:sage [2011/07/31(日) 22:08:29.48 ] 便乗して... ideone.com/fu2He これが動かないのは何故でしょう?
62 名前:55==61 mailto:sage [2011/07/31(日) 22:13:24.18 ] 名前入れ忘れた エラー文を調べたら局所変数にアクセスが云々と出てきたのですが、 外からアクセスはしてないように見えるのです
63 名前:デフォルトの名無しさん mailto:sage [2011/07/31(日) 22:49:44.40 ] >>61 CL はlisp-2だから ideone.com/lLwg2 あと、>>55 はxyzzyでも動くよ。 評価し忘れとかじゃない?
64 名前:デフォルトの名無しさん mailto:sage [2011/07/31(日) 23:01:58.21 ] >>55 >>63 に補足すると、*scratch*で (defun foo (lst) (car lst)) を入力したらC-j(ctrlを押下中にj) (setq var (list 2 4 6 8 1 3 5 7 9 10) ) を入力したらC-j(ctrlを押下中にj) (foo var) を入力したらC-j(ctrlを押下中にj) このようにして一行ずつC-jを押すこと
65 名前:デフォルトの名無しさん mailto:sage [2011/08/03(水) 02:44:38.45 ] >>61 funcall の後ろに#’つけたら動いたよ
66 名前: 忍法帖【Lv=12,xxxPT】 mailto:sage [2011/08/03(水) 06:10:12.50 ] いや、なんつーか、>>63 も>>65 も (defun qsort (lst) ... (append (qsort ...) ...) ...) って感じに呼べることをまず教えてやれよ……。
67 名前:デフォルトの名無しさん mailto:sage [2011/08/03(水) 06:43:28.89 ] こんな感じ。 ideone.com/fPEnC
68 名前:デフォルトの名無しさん mailto:sage [2011/08/04(木) 09:34:28.69 ] ECLだとquicklispからdrakma使えませんでした。 解決エロい人たすけて
69 名前:デフォルトの名無しさん mailto:sage [2011/08/04(木) 09:37:08.37 ] 解決エロい人 >> 解決できるエロい人 に直してください
70 名前:デフォルトの名無しさん mailto:sage [2011/08/04(木) 10:30:59.09 ] >>68 エラーメッセージは?
71 名前:デフォルトの名無しさん mailto:sage [2011/08/04(木) 11:29:14.64 ] Your Lisp does not support weak key hash-tables. [Condition of type SIMPLE-ERROR] ECL 10.3.1 をapt-get install で入れて使っています。
72 名前:デフォルトの名無しさん mailto:sage [2011/08/04(木) 14:00:50.29 ] まんま書いてるじゃないですかー! Drakmaが利用してるCL+SSLってライブラリがあって、 さらにそれが利用してるtrivial-garbageというライブラリが出してるエラー。 ECLがウィークハッシュテーブルに対応してないから出てる。 あるいは、ECLが実はウィークハッシュテーブル使えるってんなら、 簡単に使えるようになるから、バグレポートでもすればすぐ修正してくれると思う。 報告するのはDrakma相手じゃなくて、trivial-garbageの方ね。
73 名前:デフォルトの名無しさん mailto:sage [2011/08/04(木) 14:21:48.11 ] ttp://osdir.com/ml/lisp.ecl.general/2008-04/msg00171.html 読むと、ウィークハッシュテーブルに対応する予定はなさそうなんで、 ECL側の修正は割と無理っぽいんじゃないかと思う。 考えられる対応策: - CL+SSLに報告してECLだけ特別扱いしてもらう - curlのプロセスを実行して出力を読む - libcurlをFFI経由で使う - 別の処理系を使う - 別の言語を使う
74 名前:デフォルトの名無しさん mailto:sage [2011/08/04(木) 15:37:21.44 ] >>72 ,73 今後はdrakmaを使う時には別の処理系を使うようにします いろいろありがとうございました
75 名前:デフォルトの名無しさん mailto:sage [2011/08/04(木) 16:18:55.06 ] 解決エロい人がいるスレですね。
76 名前:デフォルトの名無しさん mailto:sage [2011/08/04(木) 16:44:41.51 ] かいけつゾロリとか快傑ズバットの亜種か。
77 名前:デフォルトの名無しさん mailto:sage [2011/08/04(木) 19:43:24.53 ] cl-annotで@export はしっかりできてるんですが@docなど他の使い方が分からない cl-annotが使えるパッケージ内で(annot:enable-annot-syntax)を書くだけじゃもしや駄目? Undefined function SCRIPT-TES::DOC called with arguments ("shellscript ls ==") . [Condition of type CCL::UNDEFINED-FUNCTION-CALL]
78 名前:77 mailto:sage [2011/08/04(木) 20:09:57.53 ] 解決しました。 〜.asd のファイルには書かなくていいけど〜.lispの方に付け加えるだけで良かったみたいです。
79 名前:デフォルトの名無しさん mailto:sage [2011/08/04(木) 21:28:33.55 ] cl-annotとかは、 ttps://github.com/arielnetworks にあるコードでいっぱい使ってるので、見ると参考になると思う。
80 名前:デフォルトの名無しさん mailto:sage [2011/08/05(金) 00:15:37.50 ] >>53 自分のやり方が違うかもしれないが、テキストファイルにならない。
81 名前:デフォルトの名無しさん mailto:sage [2011/08/05(金) 00:55:25.96 ] >>80 dump-group-to-fileで作られるファイルのことですか?
82 名前:デフォルトの名無しさん mailto:sage [2011/08/05(金) 03:50:16.17 ] ll.la/LQ4F 中のファイルすべてHOMEにつっこんで sbclにquicklispインストール、cl-ppcreとtrivial-shellも一度quickloadで再起動でいけるはず。
83 名前:デフォルトの名無しさん mailto:sage [2011/08/05(金) 10:53:30.37 ] abclでmaximaが動くのはいつになるんだ
84 名前:デフォルトの名無しさん mailto:sage [2011/08/12(金) 00:53:45.82 ] 連想リストからある値の取得がうまくいかないので質問です。 以下のような状況です。 (setq list_a (list "a0" "a1" "a2")) (setq list_b (list "b0" "b1" "b2")) (setq list_c (list '('a . list_a) '('b . list_a) )) ここまで。 で、list_cに対して (cdr (car list_c)) を評価すると list_a が取れるのですが (car (cdr (car list_c))) にして、list_aの"a0" を取得したいのですが評価するとbacktraceになってしまいうまくいきません。 これはどうすればいいんでしょうか?
85 名前:デフォルトの名無しさん mailto:sage [2011/08/12(金) 01:15:31.43 ] >>84 なぜ二重にクォートしたし。 (setq list_c (list `(a . ,list_a) `(b . ,list_a))) ;; あるいは (setq list_c (list `(a ,@list_a) `(b ,@list_a))) (setq list_c (list (cons 'a list_a) (cons 'b list_a))) (car (cdr (car list_c))) ;; なぜ連想リストのアクセスにassocを使わないのか (cadr (assoc 'a list_c)) ;=> "a0" あと、Lisp界ではx_y_zじゃなくてx-y-zみたいに区切るのが普通。
86 名前:デフォルトの名無しさん mailto:sage [2011/08/12(金) 01:17:20.15 ] ああ、一番普通なの忘れてたわ。 (setq list_c `((a ,@list_a) (b ,@list_a)))
87 名前:84 mailto:sage [2011/08/12(金) 01:23:54.85 ] >>85 ありがとう、理解できました。
88 名前:デフォルトの名無しさん mailto:sage [2011/08/15(月) 02:27:11.12 ] labelsでエラーがでるのですが理由がわからいので教えてください。 scratchで以下の式を評価すると正常に動くのですが (defun foo () (labels ( (bar () (print "foo test") ) ) (bar) ) ) (foo) で "foo test"が表示される これをこのまま .emacsファイルに記述するとbacktraceになってしまいます。 ↓メッセージ Debugger entered--Lisp error: (void-function labels) (labels ((bar nil ...)) (bar)) foo() これはなぜでしょうか。またどのように解決したらよいでしょうか?
89 名前:デフォルトの名無しさん mailto:sage [2011/08/15(月) 02:38:59.99 ] >>88 そのプログラムの前に (requre 'cl) を付けると解決出来るんじゃないかな
90 名前:デフォルトの名無しさん mailto:sage [2011/08/15(月) 02:50:37.63 ] もちろん >>89 は (require 'cl) の typo です。。。 Emacs Lisp と Common Lisp は別物なので、もし emacs lisp を勉強したいなら、 Emacs Lisp 3 hibari.2ch.net/test/read.cgi/tech/1191875993/ に行くと良いと思います。 Common Lisp を勉強したいなら、Common Lisp 用の環境を整えると色々と 捗ると思います。
91 名前:デフォルトの名無しさん mailto:sage [2011/08/15(月) 03:18:26.75 ] >>90 ありがとう解決しました。 今後はEmacs Lispのほうで聞きますね。
92 名前:デフォルトの名無しさん mailto:sage [2011/08/15(月) 22:39:41.10 ] 時代はlispよりもhaskell 教養としてのプログラミングならこっちを勧めたい
93 名前:デフォルトの名無しさん mailto:sage [2011/08/16(火) 03:07:18.49 ] 自分の知る限り、Haskell は少なくとも 5 年前には注目を受けていたし、 Haskell に無い Lisp の特徴として S 式とマクロは知っておいた方が良いと思われ
94 名前:デフォルトの名無しさん mailto:sage [2011/08/16(火) 12:52:53.95 ] lispが理解できないとHaskellは無理だと思う
95 名前:デフォルトの名無しさん mailto:sage [2011/08/16(火) 18:01:20.91 ] Haskellが無理ならLispも無理だろう
96 名前:デフォルトの名無しさん mailto:sage [2011/08/16(火) 18:08:14.77 ] >>92-95 忍者より酷い
97 名前:デフォルトの名無しさん mailto:sage [2011/08/16(火) 18:10:31.20 ] どっちか勉強するのにもう一つの知識が必要みたいな議論がおかしい まっさらな状態で今はじめるならHaskellの方が得るものは大きい
98 名前:デフォルトの名無しさん mailto:sage [2011/08/16(火) 18:32:14.29 ] そんな単純な比較が可能とは思えないが…
99 名前:デフォルトの名無しさん mailto:sage [2011/08/16(火) 18:46:49.49 ] カレーとおにぎりを比べるようなものだな
100 名前:デフォルトの名無しさん mailto:sage [2011/08/16(火) 18:56:45.41 ] で、どっちがカレーなんだ
101 名前:デフォルトの名無しさん mailto:sage [2011/08/16(火) 19:02:30.24 ] Haskellの説明でカリー化ってしょっちゅうくらいだからやはりHaskellがカレーじゃなかろか? ;;;ごめんなさい、ワタシが悪うございました。
102 名前:デフォルトの名無しさん mailto:sage [2011/08/16(火) 19:24:52.71 ] >>101 俺も同じ事思ったから大丈夫だ
103 名前:デフォルトの名無しさん mailto:sage [2011/08/16(火) 20:02:39.45 ] 別にどっち先に勉強しても、もう一方を勉強できないわけじゃないんだから。 好きな方先にやって後で別の方やれば良いよ。 HaskellだけやってたらHaskell自身の長所を理解できないし、 LispだけやってたらLisp以降に生まれたパラダイムを取り込めないじゃん。
104 名前:デフォルトの名無しさん mailto:sage [2011/08/17(水) 03:41:17.91 ] おにぎlispってなんかいいな
105 名前:デフォルトの名無しさん mailto:sage [2011/08/17(水) 06:47:24.00 ] haskellカレーにおにぎlisp 仲良くやっていけそうな気がする
106 名前:デフォルトの名無しさん mailto:sage [2011/08/17(水) 13:00:47.05 ] J( 'ー`)し<残さないで食べなさいね。
107 名前:デフォルトの名無しさん mailto:sage [2011/08/17(水) 16:11:13.82 ] 最近のコンビニにはカレー化おにぎりというのがあってだな
108 名前:デフォルトの名無しさん mailto:sage [2011/08/17(水) 16:11:51.86 ] なぜ「化」という文字が入る…
109 名前:デフォルトの名無しさん mailto:sage [2011/08/19(金) 09:42:20.53 ] >>83 command line版Maximaは(run_testsuite()を通過する意味で)動いてる筈。 ttp://abcl-dev.blogspot.com/2010/10/maxima-on-abcl-full-pass-on-test-suite.html ABCL版Maximaは、GCL版Maximaより遅かった様な…。
110 名前:デフォルトの名無しさん mailto:sage [2011/08/26(金) 10:59:32.41 ] 保守
111 名前:デフォルトの名無しさん [2011/09/06(火) 04:49:27.30 ] つかS式と基本5関数さえあれば何でもできるのに何でlispってアホみたいに方言多いの?
112 名前:デフォルトの名無しさん mailto:sage [2011/09/06(火) 04:59:00.08 ] 流石に純LISPだけでは実用性に欠けるから よく使う関数を各社が実装した結果
113 名前:デフォルトの名無しさん mailto:sage [2011/09/06(火) 05:42:33.67 ] たぶんルールが少ないほうがバリエーションは増えるんだと思う かつての2Dシューティングゲームみたいに
114 名前:デフォルトの名無しさん mailto:sage [2011/09/06(火) 05:54:29.02 ] >>111 チューリングマシンでプログラミングしてきたら答えが分かると思うよ。 >>111 は何か他の所でまんま同じな文章見た気がするんでコピペだろうけど、 Lispの方言だけ何か特別視するのって凄いナンセンス。 ALGOLの方言とかいくつあるんだよとか逆に聞きたい。
115 名前:デフォルトの名無しさん mailto:sage [2011/09/06(火) 09:04:36.79 ] >>111 「S式と基本5関数さえあれば何でもできる」が嘘 まずは少なくとも cond か if の特殊形式がないとチューリング完全じゃないし、 lambda が無いのも微妙だろう。
116 名前:デフォルトの名無しさん mailto:sage [2011/09/06(火) 22:22:01.52 ] それだけではなんでこんなに方言があるのかという質問の答えとして弱いのではないか?
117 名前:デフォルトの名無しさん mailto:sage [2011/09/06(火) 22:50:56.94 ] 処理系を作るのが簡単だから
118 名前:デフォルトの名無しさん mailto:sage [2011/09/06(火) 23:20:31.02 ] 2進数の文字列から10進数に変換するにはどうしたらいいか教えてください。
119 名前:デフォルトの名無しさん mailto:sage [2011/09/06(火) 23:25:36.72 ] (parse-integer "1010" :radix 2)
120 名前:デフォルトの名無しさん mailto:sage [2011/09/07(水) 00:20:57.67 ] >>119 ありがとうございます。
121 名前:デフォルトの名無しさん [2011/09/07(水) 18:16:43.66 ] リスプの処理系より簡単な演算器もったスタックマシンのほうが簡単なきがしましたよ。 アセンブラなんて1行1命令で翻訳してだけだから原始的なものならこっちも簡単でした。
122 名前:デフォルトの名無しさん mailto:sage [2011/09/07(水) 18:20:18.73 ] 言語処理系を作るなら、まずForth処理系でも作ってみるのは、悪くないよね。
123 名前:デフォルトの名無しさん mailto:sage [2011/09/08(木) 06:28:12.39 ] Forthのかっこよさは異常
124 名前:デフォルトの名無しさん mailto:sage [2011/09/08(木) 08:59:14.97 ] Obi-Wan Kenobi もForthを使えって言ってたしな
125 名前:デフォルトの名無しさん [2011/09/08(木) 11:30:03.13 ] そのネタ聞くのはもう100万遍目だ
126 名前:デフォルトの名無しさん mailto:sage [2011/09/08(木) 18:58:27.75 ] >>125 > そのネタ聞くのはもう100万遍目だ (/ (expt 1000.0 2) 365) 毎日そのネタを平均一回聞けるとして2739.726年かかるよ
127 名前:デフォルトの名無しさん mailto:sage [2011/09/08(木) 21:20:54.60 ] 今日という一日を100万回繰り返した超能力者である可能性も捨て切れない。
128 名前:デフォルトの名無しさん mailto:sage [2011/09/08(木) 21:25:29.10 ] >>127 > 今日という一日を100万回繰り返した超能力者である可能性も捨て切れない。 2739.726歳の超能力者か、なんかすごいね。
129 名前:デフォルトの名無しさん mailto:sage [2011/09/09(金) 14:27:37.34 ] 激しくどうでもいいなwww
130 名前:デフォルトの名無しさん mailto:sage [2011/09/09(金) 14:41:31.45 ] まどマギだったら歳とらない
131 名前:デフォルトの名無しさん [2011/09/09(金) 14:47:43.34 ] \オッカリ〜ン/でも多分としとらない。
132 名前:デフォルトの名無しさん mailto:sage [2011/09/09(金) 17:35:10.00 ] エンドレスビリオン
133 名前:デフォルトの名無しさん mailto:sage [2011/09/10(土) 12:57:05.63 ] あんまり面白かったのでループでまわしたのかもしれんぞ。 (dotimes (n 999998) (print "Forthを使え"))
134 名前:デフォルトの名無しさん mailto:sage [2011/09/10(土) 18:26:28.62 ] なんか問題(良問)を出して、それを実装して、プログラミングベンチマークテストしようぜ。 環境は基本Linuxベースであること(他の環境でも可だけど、明言すること)、使っている言語のバージョンは明言必須。 良問のネタの候補がない場合は、Python, Perl, Rubyの宿題スレから探してくる。
135 名前:デフォルトの名無しさん mailto:sage [2011/09/12(月) 02:28:07.87 ] scheme初心者スレを探しているのですが無いみたいなので scheme初心者の質問もここで良いのでしょうか?
136 名前:デフォルトの名無しさん mailto:sage [2011/09/12(月) 02:33:27.81 ] >>135 初心者スレはないけどこっちよりは適切なはず Lisp Scheme Part32 hibari.2ch.net/test/read.cgi/tech/1303299696/
137 名前:デフォルトの名無しさん mailto:sage [2011/09/12(月) 06:57:07.46 ] >>134 とりあえず問題によるんじゃね? そういえばどう書く?org って、いつのまにかすたれたね
138 名前:デフォルトの名無しさん mailto:sage [2011/09/12(月) 14:10:11.65 ] >>137 いいのが思いつかないので、ベタに(random 1234567890)で生成されるn個の値をソートせよ。ぐらいではダメかね? 期限は9/23(金)21:00まで。ソース晒しは9/16(金)21:00から。 単純なソートだと工夫の余地がなくて速度の違いって出ないものなのかな。 ;; ### 絶賛、問題募集中 ###
139 名前:デフォルトの名無しさん mailto:sage [2011/09/12(月) 16:25:34.19 ] これでいいんじゃね? The Computer Language Benchmarks Game shootout.alioth.debian.org/ 既にSBCL向けのコードがあるから、 俺の書いたコードの方が速いぜとか、 この処理系の方が早いぜとか。
140 名前:デフォルトの名無しさん mailto:sage [2011/09/12(月) 19:38:24.28 ] >>139 > 既にSBCL向けのコードがあるから、 > 俺の書いたコードの方が速いぜとか、 > この処理系の方が早いぜとか。 その心は? 個人的には入門者でもなんとか参加できるレベルの問題にしたいです。ジムカーナなどに使われるtime result形式で個々人の励みにしてほしいなあと。 もちろん、入門者が相当がんばれば参加できるレベルの問題をたまにやるのは良いと思います。
141 名前:デフォルトの名無しさん mailto:sage [2011/09/12(月) 21:52:32.59 ] 誰も参加してないのに、俺ルール炸裂かよw
142 名前:デフォルトの名無しさん [2011/09/13(火) 07:02:30.34 ] Linux上のSBCLでLispbuilder-SDLをasdf-installから入れようとすると まぁGPG鍵はもちろんスキップするんだが、その後すぐに cocoahelperが有りません的なこと言われて止まります Linuxだからいらねぇんだよおおおおおおおおおおおおおおおおおおおおおおおお
143 名前:デフォルトの名無しさん mailto:sage [2011/09/13(火) 07:12:31.29 ] カリカリしないで一息いれなよ っ 森永ココア
144 名前:デフォルトの名無しさん mailto:sage [2011/09/13(火) 07:35:54.70 ] >>142 ASDF-Installとか今さら使ってんじゃNEEEEEEEEEEEEEEEEE!!1! このボケが! 私としては、ASDF-Installの代わりにQuicklispを使うことをお勧めします。 SBCLで動かないパッケージははねられているみたいですし。 それでも動かない場合、もっと詳細なエラーメッセージを頂けると、 解決に協力できるかもしれません。
145 名前:デフォルトの名無しさん [2011/09/13(火) 07:38:41.77 ] ASDFは時代遅れだったのか……!!!!!! cocoaは消えて、今度はcffi-examples見つからなかったとか言いやがる ちなみに私はヴァンホーテンが好きです。 とりあえずQuickLisp使ってみます
146 名前:デフォルトの名無しさん mailto:sage [2011/09/13(火) 08:41:41.68 ] >>145 ASDFというか、ASDF-Installが過去の遺物になりつつある、 といった感じになっています。森永も悪く無いのではないでしょうか。 ASDFという、ライブラリに対する操作を統一するAPIの上に、 QuicklispやASDF-Installなどの、ライブラリを管理する仕組みが作られています。 Quicklispは比較的最近現れたもので、まだベータ版なのですが、 抜群の使いやすさから、一気に定着してしまった感がありますね。
147 名前:デフォルトの名無しさん mailto:sage [2011/09/13(火) 14:16:59.49 ] Rをclから使いたいからrclとかいうの入れた それをmaximaから呼ぶとlapackが2重に呼ばれるのかおかしくなる 何か回避方法ないの?
148 名前:デフォルトの名無しさん mailto:sage [2011/09/13(火) 23:31:07.27 ] 一般論だけど、環境、エラーメッセージ、バージョン、操作、 そういった物を書いてくれないと、仮に回避方法が分かる人でも、 同じ所ではまったことがないと答えられんと思うよ。 あと、Maximaの話なら、 【数式処理システム】 Maxima 【Common Lisp】 kamome.2ch.net/test/read.cgi/math/1287274183/ の方が回答を得られるんじゃない?
149 名前:デフォルトの名無しさん [2011/09/14(水) 08:59:05.79 ] >>138 projecteuler.net/
150 名前:SCHEME餃子 ◆8X2XSCHEME mailto:sage [2011/09/14(水) 23:41:49.99 ] ブログとかで Project Euler の解き方の解説してるのみたら「XXは自明なので」とか書いてあったりするけど、全然自明じゃねーよって感じのが多くて困る。 Project Euler って数学の問題でもあるから単なるプログラミング演習の問題とはちょっと雰囲気が違うかも。 もちろん、身に付くことは多いけど。
151 名前:デフォルトの名無しさん mailto:sage [2011/09/15(木) 12:57:41.32 ] >>150 そんなの高校数学の教科書からたくさんあるだろ
152 名前:デフォルトの名無しさん mailto:sage [2011/09/22(木) 00:30:22.73 ] スイマセン、基本的なところなんですが >(defun test1(x)(eq x #'+)) TEST1 >(test1 #'+) T なのに >(defmacro test2(x)(eq x #'+)) TEST2 >(test2 #'+) NIL になるんですが、マクロと関数で引数の評価の仕方が違うんでしょうか?
153 名前:デフォルトの名無しさん mailto:sage [2011/09/22(木) 01:06:48.59 ] >>152 そこは基本的っていうか、むしろ嵌りどころ。 #'は特殊形式functionに展開されるんだけど、functionが返す関数オブジェクトは、 必ずしも毎回同じ物とは限らない、っていう話だったはず。 ttp://www.apl.jhu.edu/~hall/Lisp-Notes/Dalton-Pitfalls-List.text の"Function vs eq."に詳しい。
154 名前:デフォルトの名無しさん mailto:sage [2011/09/22(木) 01:12:36.50 ] って、待った。test2ってクォートしてないの? (defmacro test2(x)`(eq ,x #'+))でなく?
155 名前:デフォルトの名無しさん mailto:sage [2011/09/22(木) 01:22:58.45 ] まんま>>152 の通りなら、コンスの '(function +) と関数の #'+ を比較してるので、 マクロの展開結果がNILになり、評価結果もNILになる。 そういう勘違いなら、Common Lispの評価モデル自体を理解してないことになるので、 HyperSpecとか書籍とかマクロの解説とかを読んだ方が良いと思う。 マクロに渡されるのは値じゃなくて式。
156 名前:152 mailto:sage [2011/09/22(木) 01:54:26.73 ] >(defmacro test3(x)(equal x '(function +))) TEST3 >(test3 #'+) T 納得。夜遅くにスイマセンでした
157 名前:デフォルトの名無しさん [2011/09/30(金) 14:34:56.92 ] 自明は相手をごまかす頻出単語
158 名前:デフォルトの名無しさん mailto:sage [2011/09/30(金) 14:56:15.85 ] 毎回公理から一つ一つ積み重ねるしかないのか
159 名前:デフォルトの名無しさん [2011/10/05(水) 22:10:00.39 ] キーワード引数が指定されなかった場合と、 キーワードの値としてnilが渡された場合って区別できるんでしょうか? 例えば (defun hoge (&key (foo)) foo) として、 (hoge) の場合と (hoge :foo nil) の場合を区別できるかどうか、という意味です。
160 名前:デフォルトの名無しさん mailto:sage [2011/10/05(水) 22:26:42.09 ] &key では判断するために supplied-p-parameter があるよ。 CL-USER> (defun hoge (&key (foo nil foo-supplied-p)) (values foo foo-supplied-p)) HOGE CL-USER> (hoge) NIL NIL CL-USER> (hoge :foo nil) NIL T
161 名前:159 mailto:sage [2011/10/05(水) 22:46:31.24 ] おぉー。全く知りませんでした。 ばっちりです。ありがとうございます。
162 名前:デフォルトの名無しさん [2011/10/10(月) 09:36:53.02 ] パッケージとか、ASDFの使い方を知りたいのですが、 何を参照したらよいですか?
163 名前:デフォルトの名無しさん mailto:sage [2011/10/10(月) 11:42:24.68 ] >>162 パッケージは知らないけど、ASDFなら common-lisp.net/project/asdf/asdf.html とか common-lisp.net/~mmommer/asdf-howto.shtml とかじゃない? ググッたりしてるなら、もう見ただろうけど
164 名前:デフォルトの名無しさん mailto:sage [2011/10/10(月) 13:07:43.42 ] >>162 ASDFではなく、quicklispを使うといいよ。 既知だったらすまん。
165 名前:デフォルトの名無しさん mailto:sage [2011/10/10(月) 18:25:50.48 ] >>164 CLのパッケージシステム関連全体のことを聞いてるんじゃねぇの quicklispもasdf使ってるし ``asdf-install使うくらいならquicklispを使うといいよ'' てな話だとわかるんだが, 若干的外れなような...
166 名前:デフォルトの名無しさん [2011/10/10(月) 21:04:40.05 ] 162の質問者です。舌足らずの質問ですいませんでした。 これまで、小さなプログラムしか作ったことがないもので、 個々のソースプログラムファイルをloadしているだけで 満足してたのです。使ってる処理系がsbclなので、多分何もしなくても コンパイルもしてくれるようですし。(つづく)
167 名前:デフォルトの名無しさん [2011/10/10(月) 21:07:41.81 ] (つづき) しかし、下記の理由で、だんだんそうもいってられなくなりました。 1. 自分で書くプログラムがかなり大きくなってきた。 (その結果 2.と3.) 2. 名前空間(?)をcommon-lisp-userとは、分離したい. 3. ソースプログラムファイルの依存関係(どれが、どの ファイルで定義されている関数を使っているかなど)を うまく表現する方法がないか知りたい。コンパイルや ロードをスマートにやりたい。 (c言語でのmakeに相当するものがないかな??) (つづく)
168 名前:デフォルトの名無しさん [2011/10/10(月) 21:10:04.15 ] (つづき) 4. 他人が作ったプログラムをつかうのに、requireとか asdfを使うこともでてきたのですが、(関連するwebサイト の説明を鵜呑みにしているだけで)何が起こっているのか よく分からない。何が起こっているのか知りたい。 (つづく)
169 名前:デフォルトの名無しさん [2011/10/10(月) 21:12:19.54 ] (つづき) 4. 他人が作ったプログラムをつかうのに、requireとか asdfを使うこともでてきたのですが、(関連するwebサイト の説明を鵜呑みにしているだけで)何が起こっているのか よく分からない。何が起こっているのか知りたい。 (つづく)
170 名前:デフォルトの名無しさん [2011/10/10(月) 21:14:34.72 ] (つづき) ちなみに、require関数を使って他人が書いたプログラム(たとえば clxとかMcCLIMなんか)をロードすると、 結構、複雑なことが起こっている気がするのですが、CLtL2のrequire の説明をみても何だかよくわかりませんでした。 (多分、必要なモジュールを探してロードしているんだろうなと思う。 そういうことを自作プログラムでもやりたいのです。)
171 名前:デフォルトの名無しさん mailto:sage [2011/10/10(月) 21:24:23.45 ] 2. は CL でいうパッケージの仕事。 3. は、ASDF (C言語でいう make の Lisp 版。最近の標準) の仕事。 4. に関しては、CLHS で provide/require という仕組が定義がされているが、 こいつは実装依存でかつ依存関係を取り扱うポータブルな手段がないため、一 般的にはASDFが利用される。(でも、処理系依存のライブラリなんかでは使われてる) 前にでている Quciklisp てーのは、 ASDF の上にさらに rpm/yum みたいなパッ ケージ管理機能を追加したもの。なので、ボトムアップが好きなら学習順序と してはパッケージ -> ASDF -> Quicklisp がいいんじゃないかな。
172 名前:デフォルトの名無しさん mailto:sage [2011/10/11(火) 23:51:42.80 ] ネットに繋がらない環境にquicklispkから落としたライブラリを持って行きたいんだけど、 ネットにつながるマシンでライブラリ整えて、~/quicklispを全部コピーして持ってけばおkなのかな?
173 名前:デフォルトの名無しさん mailto:sage [2011/10/12(水) 00:26:01.96 ] >>172 そう。 持っていったやつを別な場所に置きたいなら、 www.quicklisp.org/beta/faq.html#local-project を参考に。
174 名前:デフォルトの名無しさん mailto:sage [2011/10/12(水) 14:01:09.61 ] なんと言いますか、ミニゲームを作りながら段々とプログラミングのやり方を 覚えていくような入門サイト、書籍みたいなものはありませんか? 入門書籍を何冊か読んでみたんですが、式それぞれの使い方は飲み込めたのですが それをプログラムでどう表現したら良いか分らないと言いますか。 出来ればLinux上のClispに対応したものがベターですが、他の環境でも構いません。
175 名前:デフォルトの名無しさん mailto:sage [2011/10/12(水) 16:47:15.57 ] ありません
176 名前:デフォルトの名無しさん mailto:sage [2011/10/12(水) 16:53:12.06 ] >>174 landoflisp.com/
177 名前:デフォルトの名無しさん mailto:sage [2011/10/12(水) 17:09:02.98 ] 斬新スギルwwwwww
178 名前:デフォルトの名無しさん mailto:sage [2011/10/12(水) 19:37:39.35 ] >>176 開いた瞬間にMade by secret alien technologyだったw
179 名前:デフォルトの名無しさん mailto:sage [2011/10/12(水) 22:58:13.41 ] >>176 類書が全く思いつかないすごい世界だ
180 名前:デフォルトの名無しさん mailto:sage [2011/10/12(水) 23:02:53.03 ] 括弧食うなw
181 名前:デフォルトの名無しさん mailto:sage [2011/10/12(水) 23:59:37.28 ] その本は素晴らしいよ。 LISPのトンデモ歴史に始まり、簡単なAIやWEBサーバー開発なども学べる。 英語は平易。
182 名前:デフォルトの名無しさん mailto:sage [2011/10/13(木) 00:10:38.65 ] Land of Lispって、作曲したり、色々フリーダムだよな。 youtu.be/HM1Zb3xmvMc
183 名前:デフォルトの名無しさん mailto:sage [2011/10/13(木) 01:12:43.71 ] >>176 を見てamazon kindleで衝動買いしてしまったw kindle価格で29ドル 早速読んでみるわ
184 名前:デフォルトの名無しさん mailto:sage [2011/10/13(木) 22:45:02.02 ] 出版社はno starch press (堅苦しくない出版 という名前)で 日本語の萌系の学術書?も翻訳してるし、 You learn a haskell for great good! (最近話題のHaskell書)の 本も出版してる。You learn ~ も簡単な英語で書かれてるよ。
185 名前:デフォルトの名無しさん mailto:sage [2011/10/14(金) 07:07:25.64 ] 本当だ、オーム社のマンガでわかる〇〇の表紙が公式サイトにある Hacking第2版のパブリッシャーでもあるのか
186 名前:デフォルトの名無しさん mailto:sage [2011/10/14(金) 07:39:00.94 ] The Manga Guide to the Universe なんてのもその出版社のページに。 オーム社は「マンガでわかる銀河系」も出すべきだなw
187 名前:デフォルトの名無しさん mailto:sage [2011/10/14(金) 13:31:36.12 ] >>173 サンクス! お礼が遅れてすまんかった。
188 名前:デフォルトの名無しさん mailto:sage [2011/10/16(日) 01:26:54.32 ] Schemeのschelogに相当するものってないの?
189 名前:デフォルトの名無しさん mailto:sage [2011/10/16(日) 02:04:44.48 ] norvig.com/paip/prolog.lisp www.franz.com/products/prolog/
190 名前:デフォルトの名無しさん mailto:sage [2011/10/16(日) 09:42:50.70 ] www.lispworks.com/products/knowledgeworks.html
191 名前:デフォルトの名無しさん mailto:sage [2011/10/18(火) 23:48:13.92 ] テスティングフレームワークって何が標準的なんでしょうか?
192 名前:デフォルトの名無しさん mailto:sage [2011/10/19(水) 00:54:57.34 ] 特に標準はないんじゃないの? よく使われてるライブラリで共通で使われてたりするのかな? xUnit,xSpec,quickcheck,Test::Moreみたいな言語間で広まってるテストフレームワークも www.cliki.net/test%20framework google.co.jp/search?q=commonlisp+test
193 名前:デフォルトの名無しさん mailto:sage [2011/10/19(水) 01:02:25.05 ] clojure.testっぽいのとPerlのMore::Testっぽいのは、日本語の一次資料があるらしい。 最近公開されたものだし、標準ではないけどね。
194 名前:デフォルトの名無しさん mailto:sage [2011/10/19(水) 07:32:48.73 ] >>191 比較的多く使われてるのはFiveAMとStefilかなー。 機能的にも割と似たような感じ。ただ、Stefilはドキュメントがない。 特に拘りがないならどっちか使っとけば良いと思う。 Clackの中の人が作ってるCL-TEST-MOREなんかは、TAPが好きなら良いかも。 あと、複雑なテストが必要ない場合、自分で書いてる人も割といるように見える。 上で出てない追加の情報源とか。 cl.cddddr.org/index.cgi?%a5%e9%a5%a4%a5%d6%a5%e9%a5%ea cl.cddddr.org/index.cgi?FiveAM aperiodic.net/phil/archives/Geekery/notes-on-lisp-testing-frameworks.html
195 名前:デフォルトの名無しさん mailto:sage [2011/10/19(水) 07:54:01.51 ] あと、CL-TEST-MOREは公式のドキュメントは英語。 ただ、中の人が日本人なので、日本語の解説もあるけど。 https://github.com/fukamachi/cl-test-more e-arrows.sakura.ne.jp/2010/11/cl-test-more.html tips.lisp-users.org/common-lisp/index.cgi?CL-TEST-MORE clojure.testっぽいのはButterだと思う。使ったことないから使い勝手は分からない。 こっちは日本語のREADME付き。 https://github.com/yuushimizu/butter d.hatena.ne.jp/yuushimizu/20110922/1316627415
196 名前:デフォルトの名無しさん mailto:sage [2011/10/25(火) 06:28:23.81 ] RIP
197 名前:デフォルトの名無しさん mailto:sage [2011/10/25(火) 06:43:27.22 ] マッカーシー御大のことか
198 名前:デフォルトの名無しさん mailto:sage [2011/10/25(火) 21:23:05.33 ] ああ、なんというか悲しいなぁ。 おれがコンパイラとか興味持ったのも、全部Lispのおかげなんだ。 Lispの父の魂よ安らかに眠れ。
199 名前:デフォルトの名無しさん [2011/10/25(火) 21:48:23.67 ] マッカーシーって赤狩りやった人?
200 名前:デフォルトの名無しさん mailto:sage [2011/10/25(火) 22:44:12.27 ] 連載:インターネット・サイエンス の歴史人物館(12) ジョン・マッカーシー wbb.forum.impressrd.jp/feature/20071212/515
201 名前:デフォルトの名無しさん mailto:sage [2011/10/27(木) 16:40:48.72 ] 関数プログラミングとオブジェクト指向プログラミングが相容れないという見解を 時折聞くのですが、そうなんですか? 自分はオブジェクト指向を型と引数の型によって振る舞いを変える関数の組み合わせで理解しており、 関数プログラミングとオブジェクト指向プログラミングは直行するのではないかと思っているのですが。
202 名前:デフォルトの名無しさん mailto:sage [2011/10/27(木) 17:29:29.77 ] 確かに直交するものではあるのだけど、 どうしてもオブジェクト指向の、「物」指向、副作用による状態の変化を利用したスタイルから、 普通にはそれを使えなくなる純粋関数型に、自分の思考を持ち込むか、という技の掛け方、 というか、そのへんは実際にやってみて慣れればなんということないんだけど、説明するのは 難しいので。
203 名前:201 mailto:sage [2011/10/27(木) 17:34:38.20 ] ははあ、結局再代入をどんどんやるスタイルから 一度しか代入しないスタイルへの切り替えの難しさから そういう意見が出てくるって事ですね ありがとうございます
204 名前:デフォルトの名無しさん mailto:sage [2011/10/27(木) 17:43:50.90 ] ABCLとか、ACTOR→Schemeとか、 メッセージパッシング系は上手く混合してるでしょ。
205 名前:デフォルトの名無しさん mailto:sage [2011/10/27(木) 19:00:26.69 ] >>201 技術書の「Concepts, Techniques, and Models of Computer Programming」 (CTMCP:コンピュータプログラミングの概念・技法・モデル)で複数の 計算モデルが解説されているが、一般にオブジェクト指向と呼ばれている言語は、”状態” を内部に持って、書き換え(副作用を起こし)ながら処理を進めるモデル。 関数型と呼ばれる言語の多くは、数学での集合・写像がベースになったモデル。 従って、処理の大部分を副作用ではなく、集合への写像(関数適用と思っていい)で出来る。 相性というより、計算モデルが全く違うので、混在は非効率。 なお、CTMCPには他のモデルも解説されている。
206 名前:デフォルトの名無しさん mailto:sage [2011/10/27(木) 20:28:15.59 ] 質問ですが、(progn (setq x 0) (dotimon (i 10) (setq x (add x i)))) のxはこのまま活用するのですか? LISP触って日が浅いのでまだ分かりづらくて…
207 名前:201 mailto:sage [2011/10/27(木) 20:51:23.53 ] >>205 ありがとうございます。 確かに狭義の定義では相容れませんね。 JavaやC++でラムダ計算は出来そうにもありませんし、 Haskellでは代入自体が不可能ですし。
208 名前:デフォルトの名無しさん mailto:sage [2011/10/27(木) 20:54:20.61 ] >>206 「xはこのまま活用する」とはどういう意味でですか?
209 名前:デフォルトの名無しさん mailto:sage [2011/10/27(木) 21:16:05.58 ] >>208 すみません、少し読み返してみたらsetqでxは0に定義されていました・・・orz 少し落ち着いてから勉強しなおします。
210 名前:デフォルトの名無しさん mailto:sage [2011/10/27(木) 21:21:24.93 ] 209の者で一応206をまとめると、「xをそのまま引数としていいのか」という文意でした。
211 名前:デフォルトの名無しさん mailto:sage [2011/10/27(木) 23:10:17.78 ] 何にも束縛されていない変数xを引数にした式(add x i)を評価するとまずいんじゃね, と思ったけど直前に(setq x 0)があるから束縛されてた,問題なかった,という意味?
212 名前:デフォルトの名無しさん mailto:sage [2011/10/27(木) 23:46:20.82 ] scala 触ってみて、クラスベースOO と関数型は相性良くないなあと思った。 不必要に複雑になりがちで。
213 名前:デフォルトの名無しさん mailto:sage [2011/10/28(金) 00:49:20.17 ] 物と状態のシミュレーションじゃなくて、やり取りするインターフェース指向というか型や取り決めのためにOOは使うものなんだよっていう人もいるな。 clojureの宣伝文句は、OOの目的を別なやり方で、だとか。 thinkrelevance.com/blog/2009/08/12/rifle-oriented-programming-with-clojure-2.html www.geidai.ac.jp/~marui/clojure/rationale/index.html www.geidai.ac.jp/~marui/clojure/state/index.html clとclojureちょっとかじったのけど、scheme知らないのでRacket使ってみようかな。
214 名前:デフォルトの名無しさん mailto:sage [2011/10/28(金) 06:22:21.58 ] インターフェースって観点なら 個人的にはHaskellの型と型クラスの扱いが 一番綺麗に整理されてていいと思う
215 名前:デフォルトの名無しさん mailto:sage [2011/10/28(金) 10:53:54.69 ] 型クラス便利なんだけど、副作用とあんま相性が良くない、 みたいなことをOCamlの人が書いてた気がする。
216 名前:デフォルトの名無しさん mailto:sage [2011/10/28(金) 15:05:25.95 ] clojureのdeftype/protocolもhaskellの型クラスに近い感じだね。 データ型と振る舞いの分離、データ型の継承なし、など。
217 名前:デフォルトの名無しさん [2011/10/29(土) 06:37:12.03 ] (defun 5jou (x) (let ((x2 0) (x3 0)) (setq x2 (2jou x)) (setq x3 (* x2 x)) (* x2 x3))) 5JOU が理解できません。どなたか簡単に説明をお願いいたします。
218 名前:デフォルトの名無しさん mailto:sage [2011/10/29(土) 08:28:04.20 ] >>217 酷い関数名だなw 2乗する関数2jouってのがどこかに定義されてて、 xを5乗するってのを 2乗掛け(2乗掛け1乗)で実行してるだけだと思う。 ただ普通はそんな酷い書きかたしないよ。何の例?
219 名前:デフォルトの名無しさん mailto:sage [2011/10/29(土) 08:50:47.56 ] (defun 9jou-lover () (destroy 'war-freak)) (crazyp 9jou-lover) t
220 名前:デフォルトの名無しさん mailto:sage [2011/10/29(土) 08:53:13.73 ] 宿題? (defun 5jou (x) (let ((x2 0) (x3 0)) (setq x2 (2jou x)) ; x2 = x^2 (setq x3 (* x2 x)) ; x3 = x2*x = x^3 (* x2 x3))) ; x2 * x3 つまり x^5
221 名前:デフォルトの名無しさん [2011/10/29(土) 09:49:42.36 ] >218 ある入門書です。
222 名前:デフォルトの名無しさん [2011/10/29(土) 09:55:29.50 ] >>220 ありがとうございました。
223 名前:デフォルトの名無しさん mailto:sage [2011/10/29(土) 10:29:38.69 ] 関数型4つの特徴とλ計算かな
224 名前:デフォルトの名無しさん mailto:sage [2011/10/29(土) 10:52:42.97 ] こんな短い関数に setq 使っているのが凄く気持ち悪いな (defun 5jou (x) (let ((x2 (2jou x))) (let ((x3 (* x2 x))) (* x2 x3))))
225 名前:デフォルトの名無しさん mailto:sage [2011/10/29(土) 11:14:37.94 ] ダメな例として挙げているのかも知れんな
226 名前:デフォルトの名無しさん mailto:sage [2011/10/29(土) 12:36:07.35 ] (defun 5jyou (x) (* x x x x x))
227 名前:デフォルトの名無しさん mailto:sage [2011/10/29(土) 14:10:16.47 ] もしもその本の中で悪例として取り上げていないのであれば すぐに窓から投げ捨てたほうがいいレベル 変数名にx1,x2,...とかつけちゃう本は大抵ダメ 学生が作ってくるプログラムでたまにこういうのあるよね 全ての関数名がf1,f2,...で変数名がx1,x2,...
228 名前:デフォルトの名無しさん mailto:sage [2011/10/29(土) 14:12:01.20 ] _____ .ni 7 / \ ご冥福をお祈りします l^l | | l ,/) / /・\ /・\ \ .n ', U ! レ' / |  ̄ ̄  ̄ ̄ | l^l.| | /) / 〈 | (_人_) | | U レ'//) ヽっ \ | / ノ / /´ ̄ ̄ ノ \_| \rニ | `ヽ l
229 名前:デフォルトの名無しさん mailto:sage [2011/10/29(土) 14:13:31.37 ] 俺ならっ!こう書くっっ! (defmacro gogogo (n) (let ((jo-name (intern (concatenate 'string (prin1-to-string n) "JOJO")))) `(defun ,jo-name (x) (let ((x-val x)) (apply #'* (make-list ,n :initial-element x-val))))))
230 名前:デフォルトの名無しさん mailto:sage [2011/10/29(土) 14:15:36.49 ] 処理系のソースの中にも, 結構見掛けられる (flet ((hoge (.... とか(実際には frob とかだが)... いいんじゃねぇの名前なんてどうでも....
231 名前:デフォルトの名無しさん mailto:sage [2011/10/29(土) 14:16:11.42 ] x-val は必要なかった。画竜点睛を欠いちまったぜ!!
232 名前:デフォルトの名無しさん mailto:sage [2011/10/29(土) 14:32:35.97 ] ソースを後で見なおした時にすぐにわかるように しておかないと、手直しする気すら起こらんぞ。
233 名前:デフォルトの名無しさん mailto:sage [2011/10/29(土) 14:41:42.31 ] >>230 名前は大事でしょ。 例えば関数の名前付けに困るときは、 処理をまとめる粒度がおかしかったり、 別個の処理をまとめてやっちゃってることが多い。
234 名前:デフォルトの名無しさん mailto:sage [2011/10/29(土) 16:33:59.96 ] 命名規則さえ一貫してれば名前なんて何でも良い
235 名前:デフォルトの名無しさん mailto:sage [2011/10/29(土) 16:43:56.57 ] コンパイラでGNU CLISP使ってんのだけど、 読み込みが一瞬で終わってデバックするところが分からないから CLISP使っている人でどうしたらいいか分かる人いない?
236 名前:デフォルトの名無しさん mailto:sage [2011/10/29(土) 17:02:39.29 ] たとえ命名規則が"f+数字"でも、一貫してればそれでいいのか。 すげーけどあまり関わりたくないな
237 名前:デフォルトの名無しさん mailto:sage [2011/10/29(土) 17:03:58.19 ] >>235 読み込み速度とデバッグの関係がわからない。なにをどうしたいんだ?
238 名前:デフォルトの名無しさん mailto:sage [2011/10/29(土) 17:11:13.44 ] >>237 俺の作ったデータを読み込む ↓ エラーがあるから無論エラー文が返される ↓ しかし速すぎ見えないワロタwww みたいな流れ。
239 名前:SCHEME餃子 ◆8X2XSCHEME mailto:sage [2011/10/29(土) 17:23:00.81 ] >>238 コンソールが閉じるってこと? それともエラーの量が多すぎて流れちゃうってこと?
240 名前:デフォルトの名無しさん mailto:sage [2011/10/29(土) 17:23:28.68 ] >>236 それって gensym みたいだ lispや関数型言語で悩むのは関数の名前だというのは避けられないな。 特に、英語のボキャブラリの足りなさと前置詞の使い方の理解不足が 日本人にとって鬼門だと思ってるよ。
241 名前:デフォルトの名無しさん mailto:sage [2011/10/29(土) 17:26:48.12 ] common lispにはtraceやstepがあるから、それを意識した関数の作り方 をすれば混乱するところはずいぶん減るよ。 意識してプログラミングしてみな。けっしてdefunの中身をでかくするんじゃないぞ
242 名前:デフォルトの名無しさん mailto:sage [2011/10/29(土) 17:32:22.33 ] 小分けした関数でいいから、最適化をするときにインライン化もできるしね。 だから、1つの関数に5行で収まることを意識した作りをしてみればいい。 condやcase/ifを使うと大きくなりがちだけど、条件のところを上手に 関数化すると関数の膨らみは抑えられるし、デバッグもあとで楽になる。 traceを使うときも条件分けした所でどこに富んだかは一目瞭然になるしね。 手続きグセなのか関数の中にオールインワンの方向に作っちゃう人はいるけど あれは、デバッグで悩むことになるからやめたほうがいいよ。 優れたlisperのソースでも長いものはあるけど(macroでmacroや関数をまとめて 作るような場合は特にね。)最初は小分けから、最適化するに連れて色々変える ことを意識してったほうが効率はいい。
243 名前:デフォルトの名無しさん mailto:sage [2011/10/29(土) 17:32:29.26 ] >>238 前者で合ってる
244 名前:デフォルトの名無しさん mailto:sage [2011/10/29(土) 17:37:04.27 ] 確か、初めて本の中でletが登場した辺りだったと思う S式眺めてると関数なんだかシンボルなんだかわからなくなる ってなってた頃はx1とか変数然としてて読みやすかった記憶がある
245 名前:SCHEME餃子 ◆8X2XSCHEME mailto:sage [2011/10/29(土) 17:40:07.18 ] >>238 普通は Emacs と繋げるだろう jk
246 名前:デフォルトの名無しさん mailto:sage [2011/10/29(土) 18:37:19.17 ] >>238 なにが速いんだ? >>239 の推測どーりなら、 コンソールが閉じる => コマンドプロンプトから起動すれば? 文字が流れちゃう => エラーでたら止まるようにプログラムしとけば? という感想。状況がいまいちわからん。
247 名前:デフォルトの名無しさん mailto:sage [2011/10/29(土) 21:39:37.13 ] SLIME経由で使わないCommon Lispとかマジ罰ゲームだろ。 開発効率が十倍以上変わってくるぞ。
248 名前:デフォルトの名無しさん mailto:sage [2011/10/29(土) 21:44:27.07 ] >>247 その昔 グレアムはviでclispを・・・ ということがあったようだ。slimeがあまりにもいいからな。 いまはslimvというvimのものがあるが。
249 名前:238 mailto:sage [2011/10/29(土) 21:51:03.24 ] >>245 ,246,247 サンクス、いろいろ試してみる
250 名前:デフォルトの名無しさん mailto:sage [2011/10/29(土) 21:55:13.75 ] GNU CLISPってことはwindowsかな? だとすると、slime+clisp がついてくるlispcabinetが おすすめ インストールするだけで環境が整うよ
251 名前:SCHEME餃子 ◆8X2XSCHEME mailto:sage [2011/10/29(土) 22:01:13.63 ] Lisp は言語としては (今となっては相対的に) それほど複雑とも難しいとも言えないし、日常的なスクリプトを書くのにも使えるけれど、 実質的には実用的な開発環境が Emacs か Vi しかないっつーのは環境をととのえるとこからめんどくさくて初心者にはハードルが高いよな。 Lispbox 使えよ。
252 名前:SCHEME餃子 ◆8X2XSCHEME mailto:sage [2011/10/29(土) 22:02:08.85 ] 最近は lispcabinet なんてのもあるのか。 導入の楽さでは Lispbox よりも上っぽいな。
253 名前:デフォルトの名無しさん mailto:sage [2011/10/29(土) 22:02:45.70 ] Slimv - SLIME for Vim - YouTube www.youtube.com/watch?v=dSofx9hur1Q 見てみたけど面白いね。vimでここまで出来るなら、使い勝手がよさそう
254 名前:デフォルトの名無しさん mailto:sage [2011/10/29(土) 22:16:23.99 ] quicklispのことまで考えたらcabinetのほうがいいけどな。 そもそもwindowsで関数型言語をやる環境は整えるのが大変だわ。 msのところに本拠があるはずのhaskellだってlinuxのほうが扱いやすい。 windowsはさっさと捨てて、linuxを使ったほうが変な悩みは減るよ。
255 名前:デフォルトの名無しさん mailto:sage [2011/10/29(土) 22:18:37.60 ] Vimとか、Vimスクリプトの時点でお帰り下さいって感じだわ。 Emacs Lispも大概だけど、曲がりなりにもLispだからまだマシ。 という煽りはさておき、LispboxとかLisp Cabinetとかって、 Emacsに薄い皮を被せただけだから、トラブルとか起きると、 結局Emacsの深い所に突っ込んで行かないといけなくて、 そんなにありがたくないんだよね。インストールが楽なだけで。 RacketみたいにIDEも付けてくれると、住み分けできると思うんだけど、 そっちの方向に期待できるのは商用かCCLくらいしかない。
256 名前:デフォルトの名無しさん mailto:sage [2011/10/29(土) 22:42:10.35 ] emacsをもっとwindowsフレンドリーに改変してくれればいいんだろうけど (環境設定のあたりとか) 現状で満足する人が大多数だから、そうはならないだろうね dual bootできない環境ならvirtual machine 経由でlinuxを動かすのが現実的な案か
257 名前:デフォルトの名無しさん mailto:sage [2011/10/30(日) 03:39:26.35 ] >>253 綺麗にまとまっているように見えるけど、モードのあるviでREPLって操作性があんまり想像できんわ 上のウィンドウで直接入力してEvalしたりとかもできるんだろうか? Clojureつかったjettyサーバがトラブった時にemacs入れなくても現場デバッグできるからうれしいんだが。
258 名前:デフォルトの名無しさん mailto:sage [2011/10/30(日) 03:48:29.45 ] >>257 Ctrl-Wwでウインドウを移動して、モードを変える 書き込みはファイルをいじる時と同じ。 Clojureも対応してるし、実はClojureように細工して使ってる。笑
259 名前:デフォルトの名無しさん mailto:sage [2011/10/30(日) 12:46:20.68 ] windowsでもvmware playerでlinuxを別窓にして使ったほうが精神衛生上はるかにいい
260 名前:デフォルトの名無しさん mailto:sage [2011/10/30(日) 19:11:51.71 ] 最近はもうVMware使ってないわ VirtualBoxかqemuで充分だし
261 名前:デフォルトの名無しさん mailto:sage [2011/10/30(日) 19:22:19.92 ] Vimはモードがあると言ったって、モード毎にキーマップがあるから 挿入モードのキーマップで普通は入力しないようなキーに 評価コマンドを割り当てればいいんじゃね Emacsのsexpと同じような「括弧の釣り合いが取れる」範囲指定も標準装備してるし (範囲と操作を直交するものとして定義しているから 範囲を受け付けるように操作を定義すればどんな範囲指定とも組み合わせられる。 逆に新しい範囲を定義すれば範囲を受け付けるどんな操作とも組み合わせられる)
262 名前:デフォルトの名無しさん [2011/10/31(月) 08:17:52.34 ] おすすめの入門書てありますか?
263 名前:デフォルトの名無しさん mailto:sage [2011/10/31(月) 10:07:16.39 ] とりあえずANSI Common Lispじゃね? 実践Common LispもWebアプリとか現代的な例があっていいと思う それはそうとだれかLand of Lisp読んでみた奴いない? landoflisp.com/ なんだか楽しそうなんだがwww
264 名前:デフォルトの名無しさん mailto:sage [2011/10/31(月) 13:29:29.19 ] >>262 絶版だけど、すごい!Lisp
265 名前:デフォルトの名無しさん mailto:sage [2011/10/31(月) 13:30:05.90 ] あれ、これがLispだ!だったっけ。。。
266 名前:デフォルトの名無しさん mailto:sage [2011/10/31(月) 16:55:51.20 ] まさに!Lisp!
267 名前:デフォルトの名無しさん mailto:sage [2011/10/31(月) 19:15:09.27 ] >>263 あのイラスト一杯は行ってるけど普通にLispの本だったよ
268 名前:デフォルトの名無しさん mailto:sage [2011/10/31(月) 20:45:21.07 ] >>263 かなり良い本だから、そのうち邦訳されると思ってる。 小学校の指定教科書にしたいくらいだ。
269 名前:デフォルトの名無しさん mailto:sage [2011/10/31(月) 21:00:47.07 ] 出版社も あのシリーズ(manga guide)を扱ってる関係で 押さえられててもおかしくないもんな。
270 名前:デフォルトの名無しさん mailto:sage [2011/10/31(月) 22:10:31.57 ] プログラミング初心者にお勧めのLisp入門書ありますか?
271 名前:デフォルトの名無しさん mailto:sage [2011/10/31(月) 22:34:19.71 ] little schemerのシリーズでいいんちゃう?
272 名前:デフォルトの名無しさん mailto:sage [2011/10/31(月) 23:42:40.19 ] The Common Lisp Cookbook - Using the Win32 API cl-cookbook.sourceforge.net/win32.html このページの初めのサンプルスクリプトが動かないのですが (lispworks personal edition version 6.0) どう改変すれば動くようになるのでしょうか
273 名前:デフォルトの名無しさん mailto:sage [2011/10/31(月) 23:45:37.76 ] scheme手習いシリーズは初心者が手にとるもんじゃない、Gauche本がいいって結論じゃなかったっけ。
274 名前:デフォルトの名無しさん mailto:sage [2011/10/31(月) 23:50:05.14 ] Gauche本をプログラミング初心者に勧める奴がいたら神経疑う。悪いけど
275 名前:デフォルトの名無しさん mailto:sage [2011/11/01(火) 00:01:18.48 ] とりあえずいろいろ厚手だしネット上で読めるし、いいんじゃね? 神経疑ってるひとの補足があればさらにいいが。
276 名前:デフォルトの名無しさん mailto:sage [2011/11/01(火) 00:19:57.98 ] common lisp 入門 www.geocities.jp/m_hiroi/xyzzy_lisp.html#abclisp このぐらいの分量でちょうど良い
277 名前:デフォルトの名無しさん mailto:sage [2011/11/01(火) 00:23:37.47 ] >>275 まえがきの「対象読者」から引用 > 本書は、GaucheやSchemeについてはよく知らないけれど、他の > プログラミング言語でなら開発経験があるという読者を > 主な対象にします。 ずぶの素人に独習で読ませたらEmacs導入のところで放りなげるよ
278 名前:デフォルトの名無しさん mailto:sage [2011/11/01(火) 00:28:07.94 ] そう言う意味じゃemacs Lispの入門書がプログラミング自体が初心者という人には良いのかもな
279 名前:デフォルトの名無しさん mailto:sage [2011/11/01(火) 00:46:15.74 ] >>272 エラーメッセージ詳しく。
280 名前:デフォルトの名無しさん mailto:sage [2011/11/01(火) 00:47:09.38 ] そうなるのか
281 名前:デフォルトの名無しさん mailto:sage [2011/11/01(火) 00:50:52.09 ] >>279 CL-USER 1 > (require "win-header") Error: Unknown module "win-header". 1 (abort) Return to level 0. 2 Return to top loop level 0. Type :b for backtrace or :c <option number> to proceed. Type :bug-form "<subject>" for a bug report template or :? for other options. これです
282 名前:デフォルトの名無しさん mailto:sage [2011/11/01(火) 00:59:15.38 ] 俺はグレアムのansi common lispで勉強したけど。あれで十分だった。 ただ、anti-loopistだからそのへんは理解しておいていいかも。 俺はいまだにloopは嫌いなくらい。
283 名前:デフォルトの名無しさん mailto:sage [2011/11/01(火) 01:24:00.78 ] >>281 LispWorks自体にはwin-headerなるモジュールは付属してない。 だから、"Unknown module"って言われてる。LispWorksのドキュメントにも、 Windows APIはサポートしてないから、自分でFLI使って定義してね、って書いてるし。 多分、そこのページにある、Appendix Aをwin-header.lispとか名付けてrequireして、 さらにdefpackageでwhを定義する必要がある。不完全なコードなので、即投げ捨てて良い。 こっちを読むべき。 www.lispworks.com/documentation/lw60/FLI/html/fli.htm
284 名前:デフォルトの名無しさん mailto:sage [2011/11/01(火) 01:29:34.27 ] >>283 なるほど、そういうことですか。 紹介して下さったfliのページを読んでみます ありがとうございます
285 名前:デフォルトの名無しさん mailto:sage [2011/11/01(火) 01:40:38.22 ] Windows APIを直叩きしたいなら、Clozure CLが楽だと思う。 examplesのmswin.lispにウィンドウを表示するサンプルがある。 あとは、Doorsっていうライブラリが複数の処理系に対応してるけど、 ドキュメントないし、Quicklispにも収録されてないので、 ASDF知らないとインストールで引っ掛かるかも。 https://github.com/Lovesan/doors
286 名前:デフォルトの名無しさん mailto:sage [2011/11/01(火) 01:56:11.75 ] >>273 ごめん^^; 手習いシリーズは 詰将棋や 一人チェスの入門問題集みたいだったな。
287 名前:デフォルトの名無しさん mailto:sage [2011/11/01(火) 07:50:41.67 ] Little Schemer に一票 >> 初心者向け しかも和訳でなく、原書の方。 英語版で読むと幼稚園児でも出来そうに見えるのに、 日本語版で読むと同じ内容でも小難しく感じる不思議。
288 名前:デフォルトの名無しさん mailto:sage [2011/11/01(火) 10:49:20.43 ] >>267 >>268 そうかありがとう どうしよっかな、買っちゃおうかな
289 名前:デフォルトの名無しさん mailto:sage [2011/11/01(火) 12:40:20.45 ] >>288 8章のサンプルは公開されてるから、それを読んでみて理解できるか確認すればよい。 平素な英語で書かれているので、初めての洋書としても向いてると思うけどね。
290 名前:デフォルトの名無しさん mailto:sage [2011/11/01(火) 13:33:19.95 ] 英語でのある人のおすすめってこうらしい carcaddar.blogspot.com/2011/10/common-lisp-is-best-language-to-learn.html Between Land of Lisp, David Touretzky's Common Lisp: A Gentle Introduction to Symbolic Computation (really great book for people new to programming, available for free) and The Little LISPer (3rd edition, editions four and up use Scheme) you have three really great resources to get started. David Touretzkyの本はすでに絶版になっててオンラインでPDFで著者が公開してるくらい しかない。金がなくて始めたいという人ならいいかもしれない。
291 名前:ミサワ mailto:sage [2011/11/01(火) 14:34:15.10 ] つれー 日本語訳が小難しいからつれーわー 日本語訳が小難しいからなー
292 名前:デフォルトの名無しさん mailto:sage [2011/11/01(火) 19:11:45.82 ] 金がない場合は知恵がいる 知恵がない場合は金がいる
293 名前:初心者 mailto:sage [2011/11/02(水) 02:28:47.09 ] レスさんくすです。 CLスレだけど、プログラミング初心者向けはschemeがいいみたいですね。 LispSchemeスレの過去ログみたらSCHEME餃子さんが、Gauche本、プログラミング言語 SCHEMEの後に 手習いシリーズ勧めてたみたいだけど、これはscheme初心者向けであってプログラミング初心者向け の場合は逆になるって事ですね。 まずは>>276 のサイトでCL勉強してみます。ありがとうございました。
294 名前:デフォルトの名無しさん mailto:sage [2011/11/02(水) 19:54:50.09 ] schemeならSICPは外せないだろ 英語版はWebで無料公開されてるし
295 名前:デフォルトの名無しさん mailto:sage [2011/11/02(水) 20:13:37.48 ] SICPはSchmeの勉強のためには書かれていない たいして勉強しないでもSchemeを使えるような奴のために書かれている
296 名前:デフォルトの名無しさん mailto:sage [2011/11/03(木) 02:26:32.03 ] windowsでecl-11.1.1を使っています。 Unicodeが使えるそうなので、ためしに"あ"を表示するスタンドアロンのプログラムを作っています。 REPLでは以下の通り実行することで、"あ"を表示することができました。 > (setf (stream-external-format *standard-output*) :cp932) > (write-char #\U3042) しかし、これをそのままコンパイルしてもうまく動きません。 どうすればできるか教えてください。 あと、"#\U3042"ではなく"#\あ"と書いても動かせる方法があればそれも教えてください。
297 名前:デフォルトの名無しさん mailto:sage [2011/11/03(木) 04:18:23.74 ] どのように上手く動かないか、情報が足りないから何とも言えない。 多分、コンパイル後コンソールで実行したら文字化け、ってパターンだと思うけど。 ECLってexternal formatのサポートが不完全だったと思うんだけど、それは直ったの? リファレンスマニュアルの"13.2. Input/Output model"の部分。 > - No support for external formats. Reading and writing is performed using the 8-bit code of the character. > - No support for Unicode characters. The code of large characters is simply truncated. これが直ってないなら、利用するエンコーディングのバイト列に自分で変換して、 write-sequenceとかで出力しないといけないけど。 とりあえず、コンソールで動かしたときのexternal formatの値をprintするとか、 出力されたデータを16進表示してどのエンコーディングか判断したりとか、 問題の切り分けから始めてみるのを勧める。
298 名前:296 mailto:sage [2011/11/03(木) 15:57:48.85 ] external formatのサポートについては知りませんでした。 気長にやってみます。 ありがとうございました。
299 名前:デフォルトの名無しさん mailto:sage [2011/11/03(木) 23:30:38.58 ] ECLを使ってるのがコンパクトな実行形式を作るためなら、 SBCLに移行して、圧縮したコアイメージで実行形式を作るっていう手もあるよ。 SBCLならその辺りのサポートはきちんとしてるし、圧縮率も割と良いみたい。
300 名前:デフォルトの名無しさん mailto:sage [2011/11/05(土) 09:40:41.36 ] ポールグラハムの話で時折出てくるロバートモリスって、 sendmailワームの人?
301 名前:デフォルトの名無しさん mailto:sage [2011/11/05(土) 09:57:12.99 ] そうだよ。 モリスがその事故起こした時に相談受けていろいろ動いたりした「友人」ってのがポールグレアム。
302 名前:デフォルトの名無しさん mailto:sage [2011/11/05(土) 11:45:26.42 ] そうなんだ ありがとう
303 名前:デフォルトの名無しさん mailto:sage [2011/11/05(土) 15:12:25.63 ] うちのVAX11感染したの思い出した
304 名前:デフォルトの名無しさん mailto:sage [2011/11/06(日) 12:47:58.86 ] >>303 おっさん乙
305 名前:デフォルトの名無しさん mailto:sage [2011/11/06(日) 13:10:18.71 ] マクロをapplyするにはどうしたらいいんでしょうか こんな感じのことがしたいんですが。 (let((a '(true 1 2)))(apply if a))
306 名前:デフォルトの名無しさん mailto:sage [2011/11/06(日) 13:33:18.66 ] (let ((a '(true 1 2))) (eval `(if ,@a)))
307 名前:デフォルトの名無しさん mailto:sage [2011/11/06(日) 19:24:21.74 ] そういう風にevalを使うのは、某文書の言う所のレッドフラッグってヤツだと思う。 実行時にメタプログラミングをしてたりするなら話は別だけど。 質問自体が最初に結論ありきな感じだけど、>>305 は本当にifをapplyしないといけないの? 実はifの上に単純なマクロを構築すれば良い話だったりしないかな。
308 名前:デフォルトの名無しさん mailto:sage [2011/11/06(日) 21:39:17.26 ] >>305 CLHSみるとifはoperatorであって、どんな実装になってるか規定されてないわけだが なぜifがマクロだって思ったんだ?
309 名前:デフォルトの名無しさん mailto:sage [2011/11/07(月) 18:13:10.80 ] まさにこの話だと思う apply-macroの話 ttp://e-arrows.sakura.ne.jp/2010/12/common-lisp-apply-macro.html
310 名前:デフォルトの名無しさん mailto:sage [2011/11/07(月) 18:34:52.87 ] 関数とマクロとスペシャルフォーム Lisp で一番ややこしい部分だと個人的に思っている。
311 名前:デフォルトの名無しさん mailto:sage [2011/11/07(月) 18:37:18.98 ] マクロあるいは特殊形式のapplyてどういときに嬉しいんだろ
312 名前:デフォルトの名無しさん mailto:sage [2011/11/07(月) 22:45:04.56 ] 関数・マクロ・special operator の区別がついてないときに嬉しい …と、昔の自分を思い出してそう思った。 ややこしい部分ではないんだけど落とし穴になりそうな概念だとは思う。
313 名前:デフォルトの名無しさん [2011/11/14(月) 08:17:17.68 ] Lisp中級ぐらいになるには だいたいどの位の期間が必要ですか?
314 名前:デフォルトの名無しさん mailto:sage [2011/11/14(月) 08:41:17.56 ] 計算機科学の素養があれば一ヶ月もあれば中級Lisperになれると思うけど、 プログラミング経験ゼロからのスタートなら数年はかかると思う。
315 名前:デフォルトの名無しさん mailto:sage [2011/11/14(月) 11:14:44.24 ] >>313 のいう初級中級上級の定義はわからないけど、shiroさんところに”ネタ”として 10段階に分けたページがあったな。
316 名前:デフォルトの名無しさん mailto:sage [2011/11/17(木) 22:47:48.09 ] 普段大学でcommon lispを習っていて、emacsでslimeを起動して勉強しています。 自宅でもやりたいなと思い、ubuntu11.10を導入してemacs23とslimeをインストールして 起動まではできました。 そこで大学で書いたプログラムをロードしようとしたら、 The value 1985828 is not of type (MOD 1114112). [Condition of type TYPE-ERROR] このようなエラーが出たのですがどういうことでしょうか? 大学では何も問題なく、動いてたプログラムです。 色々調べて見たのですが解決法がわかりません。 どなたか回答よろしくお願いします。
317 名前:デフォルトの名無しさん mailto:sage [2011/11/18(金) 00:01:03.56 ] >>316 大学の処理系は64ビットで、自宅の処理系が32ビットだったりしない? www.lispworks.com/documentation/HyperSpec/Body/t_mod.htm を読んでもらうと分かると思うけど、1114112より小さい正の整数しか許されない型に、 1985828を値として渡してエラーになってる。コードが変わっていないなら、 処理系やOSなどが原因で、リミットに引っかかっている可能性が高い。 とりあえず、SLIMEなら下にスタックトレースが出ると思うんだけど、 上から10個くらいはどうなってる? どっかで見た数なんだけど、思い出せない。
318 名前:デフォルトの名無しさん mailto:sage [2011/11/18(金) 00:04:47.80 ] ああ、分かった。Unicodeだ。#x110000。 ファイルやネットワーク通信のデータとかに、適切じゃないデータが入ってるとか、 code-charに変なデータ渡してるとか、external formatの設定が適正じゃないとか、 その変はどう?
319 名前:デフォルトの名無しさん mailto:sage [2011/11/18(金) 00:13:08.90 ] >>317 大学も自宅も32bitマシンです。 適切じゃないデータは入ってない・・・と思います。 code-charやexternal formatについてはよく分かりません。 すみません・・・。
320 名前:デフォルトの名無しさん mailto:sage [2011/11/18(金) 00:21:06.60 ] >>319 とりあえず、処理系の名前は? それと、エラーが出たとき、「Restarts:」の下に「Backtrace:」ってのがあって、 そこに番号振ったS式が出て来るよね? それの0〜10くらいまで晒してくれない? それによって、どういうコードでエラーが発生してるのか分かる。 10まで表示されてないよ、って場合は「--more--」までカーソル持ってくと、 次のが出て来る。
321 名前:デフォルトの名無しさん mailto:sage [2011/11/18(金) 00:24:04.98 ] >>320 処理系はどちらもSBCLです。 Backtrace: 0: (SB-KERNEL::OBJECT-NOT-TYPE-ERROR-HANDLER ..) Locals: SB-DEBUG::ARG-0 = :<NOT-AVAILABLE> SB-DEBUG::ARG-1 = #.(SB-SYS:INT-SAP #XB5E0E470) SB-DEBUG::ARG-2 = #<SB-ALIEN-INTERNALS:ALIEN-VALUE :SAP #XB5E0E12C :TYPE (* ..)> SB-DEBUG::ARG-3 = (399 16) 1: (SB-KERNEL:INTERNAL-ERROR #.(SB-SYS:INT-SAP #XB5E0E12C) #<unavailable argument>) Locals: SB-DEBUG::ARG-0 = #.(SB-SYS:INT-SAP #XB5E0E12C) SB-DEBUG::ARG-1 = :<NOT-AVAILABLE> 2: ("foreign function: call_into_lisp") [No Locals] Backtraceにはこれしか書いていません。
322 名前:デフォルトの名無しさん mailto:sage [2011/11/18(金) 00:29:01.94 ] SBCLのFFI APIでエラーが起きてる。FFI使ってる? Cのライブラリのバインディングか何か? コードを晒すことって可能? エラーが起きる場所が把握できてるなら、 そこだけでも良い。
323 名前:デフォルトの名無しさん mailto:sage [2011/11/18(金) 00:35:36.75 ] >>322 FFIとはなんでしょうか? コードは800行あるので全部は晒せません。 またエラーが起きてる場所も自分では把握できてないです。 何もわかってなくてすみません。
324 名前:デフォルトの名無しさん mailto:sage [2011/11/18(金) 00:47:26.79 ] >>323 Foreign Function Interface。LispからCの関数を呼んだりする仕組み。 分からないのは最初はみんなそうだから気にせんで良いよー。 単にコードの大きさが問題で貼れないなら、 paste.lisp.org/ とかGist(https://gist.github.com/)でも大丈夫。 エラーが起きてる場所は普通バックトレース(スタックトレース)とかで把握するけど、 それで分からないなら、(print "function-xx: in")みたいなのを関数の最初に追加しても良い。 実行はどういう風にしてるの? C-c C-c? C-c C-e? それとも*slime-repl sbcl*から?
325 名前:デフォルトの名無しさん mailto:sage [2011/11/18(金) 00:56:05.59 ] FFIというは多分使ってないと思います。 コードはこれで見れるでしょうか? https://gist.github.com/1373494 実行は emacs開く M-x slimeでslime起動 C-c C-lで上のコードをロードする。 するとロード中に当初のエラーが起きます。
326 名前:デフォルトの名無しさん mailto:sage [2011/11/18(金) 01:03:32.25 ] >>325 こっち(Windows XP SP3、SBCL 1.0.52)で評価したけど、普通に通るコード。 原因が分かった気がする。保存したファイルの文字コードがEUC-JPじゃない? EmacsでC-x RET fして、utf-8-unix指定した後で保存して、再度ロードするとどうなる?
327 名前:デフォルトの名無しさん mailto:sage [2011/11/18(金) 01:10:33.26 ] >>326 できました!! ありがとうございます! ファイルの文字コードが大学と自宅じゃ違ったということでしょうか? これは自動で変換してくれたりはしないのでしょうか? 毎回指定して保存しなければならないのでしょうか?
328 名前:デフォルトの名無しさん mailto:sage [2011/11/18(金) 01:15:38.92 ] >>327 おめでとう。お疲れ様。 ファイル自体のエンコーディングが大学と自宅で違ったか、 処理系の標準のエンコーディングの設定が大学と自宅で違ったかだと思う。 sb-impl::*default-external-format*を.sbclrcで設定したり、 slime-net-coding-systemを.emacsで設定したりすることで、 自分の普段使ってるエンコーディングを標準で使うことができるよー。 これらのキーワードでグーグル先生に尋ねれば、色々出てくると思う。
329 名前:デフォルトの名無しさん mailto:sage [2011/11/18(金) 01:21:37.56 ] >>327 本当にありがとうございました。 エンコーディングについては自分で調べて努力してみます。
330 名前:デフォルトの名無しさん mailto:sage [2011/11/18(金) 17:23:12.67 ] dig 2ch.net | grep 2ch | tail -n 1 > get.dat cat get.dat 2ch.net. 8 IN A 206.223.154.230 このget.datを読み込んでリスト化ってどうやりますか?
331 名前:デフォルトの名無しさん mailto:sage [2011/11/19(土) 00:10:57.50 ] >>329 ソースの一行目に";; -*- coding:utf-8-unix -*-"とかコメント行を入れるといいかも。
332 名前:デフォルトの名無しさん mailto:sage [2011/11/19(土) 00:27:26.94 ] SBCLもそれ解釈してくれるの?
333 名前:デフォルトの名無しさん mailto:sage [2011/11/19(土) 00:40:17.53 ] >>330 (with-open-file (s "get.dat") (mapcar (lambda (x) (ppcre:split "\\s+" x)) (loop for l = (read-line s nil) while l collect l))) ;=> (("2ch.net." "8" "IN" "A" "206.223.154.230"))
334 名前:デフォルトの名無しさん mailto:sage [2011/11/19(土) 01:36:27.02 ] >>333 ありがとうございます。lambdaとmapcarってこうやって使うんですね。
335 名前:デフォルトの名無しさん mailto:sage [2011/11/19(土) 02:12:07.73 ] (cadddr (with-open-file (s "get.dat") (mapcar (lambda (x) (ppcre:split "\\s+" x)) (loop for l = (read-line s nil) while l collect l)))) 引き出せないのはなんで? (cadddr (loop for x from 1 to 10 collect (loop for y from 1 to x collect y) )) ;;=> (1 2 3 4)
336 名前:デフォルトの名無しさん mailto:sage [2011/11/19(土) 06:48:52.64 ] おはよう。1要素しかないのにcdrのcdrのcdrのcarを参照してるから。 (("2ch.net." "8" "IN" "A" "206.223.154.230"))のcdrはnil。 nilのcdrはnilで、そのcdrもnil。nilのcarはnil。 (defparameter *lines* (with-open-file (s "get.dat") (loop for l = (read-line s nil) while l collect (ppcre:split "\\s+" l)))) (caar *lines*) ;=> "2ch.net." (cadar *lines*) ;=> "8" 普通は頭が混乱するので、firstやsecond、eltなどを使う。 (let ((first-line (car *lines*))) (values (first first-line) (second first-line))) ;=> "2ch.net.", "8" (let ((first-line (car *lines*))) (values (elt first-line 0) (elt first-line 1))) ;=> "2ch.net.", "8"
337 名前:デフォルトの名無しさん mailto:sage [2011/11/19(土) 06:55:42.53 ] 個人的な好みとしては、最初から要素の数が分かってるときは、構造化代入。 (let ((first-line (car *lines*))) (destructuring-bind (a b c d e) first-line (values a b c d e))) ;=> "2ch.net.", "8", "IN", "A", "206.223.154.230"
338 名前:デフォルトの名無しさん mailto:sage [2011/11/19(土) 08:03:06.33 ] >>336-338 おはようございます。詳しい解説ありかどうございます。 ボーっとしていたのか、二重被りだと気づきませんでした。listpでTが返って来たので頭の中が 混乱しました。一回carでむけばよかったんですね。first, second関数は知りませんでした。eltは 勉強した気がするけど忘れていました。 答えなくても良いんですが、多値を返す関数の多値をリスト化する方法ってどうやるんですか? (list-fn (let ((first-line (car *lines*))) (destructuring-bind (a b c d e) first-line (values a b c d e))) ) ==> ("2ch.net." "8" "IN" "A" "206.223.154.230") ;;という結果が欲しい あと多値を返す関数を少ない or 多い多値にするのはどうやるんですか? (low-values (let ((first-line (car *lines*))) (destructuring-bind (a b c d e) first-line (values a b c d e))) ) ;=> "2ch.net.", "8", "206.223.154.230" ;;という結果が欲しい (round 8 3)の二番目だけをformatで出力することもできるんでしょうか? あとリストで弄った方が楽な気がするんですが、多値で返すのとリスト内で多値を返すのと違いって なんかあるんですか?
339 名前:デフォルトの名無しさん mailto:sage [2011/11/19(土) 08:31:19.07 ] (multiple-value-list (values 0 1 2)) ;=> (0 1 2) ;; 使わない部分は単に無視する ;; そのままだと警告が出るので、ignore宣言で使わないことを明示する (multiple-value-bind (a b c d e) (values 0 1 2 3 4) (declare (ignore b d)) (values a c e)) ;=> 0, 2, 4 (multiple-value-bind (_ remainder) (round 8 3) (declare (ignore _)) (format t "~a" remainder)) ;-> -1 多値の利点は主に速度と最初の値以外を単に無視できること。 あるいは、足りない値を自動的にnilで埋めてくれること。 リストの方が多くの場合で柔軟だと感じるのは正しい。 ;; リストだと一度分解しないといけない (+ (truncate 1.5) 2) ;=> 3 ;; 返ってきた値が足りない場合nilで束縛される (multiple-value-bind (a b c) (values t) (list a b c)) ;=> (T NIL NIL)
340 名前:デフォルトの名無しさん mailto:sage [2011/11/19(土) 08:44:51.16 ] 自己解決しました。 (multiple-value-bind (i1 i2 i3 i4 i5) (let ((first-line (car *lines*))) (destructuring-bind (a b c d e) first-line (values a b c d e))) (list i1 i2 i3 i4 i5)) (multiple-value-bind (i1 i2 i3 i4 i5) (let ((first-line (car *lines*))) (destructuring-bind (a b c d e) first-line (values a b c d e))) (values i1 i3 i5)) (multiple-value-bind (q r) (round 3) (format nil "~s" r)) ttp://www.geocities.jp/m_hiroi/xyzzy_lisp/abclisp17.html 間に合いませんでしたか。さーせん。
341 名前:デフォルトの名無しさん mailto:sage [2011/11/19(土) 09:10:25.20 ] いや、自己解決してくれた方が良いから気にしないで。 こっちの復習にもなるし。 あと、使わない変数には警告が出ると思うんだけど、 (declare (ignore ...))とかで消しておいた方が良い。 そうしないと、本当に変数を使い忘れてるのを見落とす原因になるし、 コードを読む人への手助けになるという利点があるから。 そこのサイトは良い入門なので、参考にすると良いよー。
342 名前:デフォルトの名無しさん mailto:sage [2011/11/19(土) 10:45:32.41 ] >>341 スクリプトの使い捨てない度はピンキリですが、(declare (ignore ...))もそうですが、他の警告文もすぐに消していますか? あとdocumentationも書き始めから積極的に書いてますか? (defun f (x) "compute f value" ...) > (documentation 'f 'function) "compute f value" というか、(documentation 'documentation 'function)で引けばよかったのか。わざわざWebにアクセスしていたw
343 名前:デフォルトの名無しさん mailto:sage [2011/11/19(土) 13:03:56.48 ] >>342 人によりけりだと思うけど、再利用するコードなら自分は警告は可能な限り消す。 バグに発展したら嫌だし、重要な警告が埋もれるし。 docstringは仕様が固まるまでは書けない。最初のうちはどんどん構造も変わるし、 その都度書き直しとか面倒に思えて。ただ、目的が明確なものなら最初に書いてる。 (deftype octet () "An octet. An alias of (unsigned-byte 8)." '(unsigned-byte 8)) みたいなのとか。 あと、SLIMEならC-c C-d dとかC-c C-d fとか、シンボルの上でやってみると幸せだと思う。 common-lisp.net/project/slime/doc/html/Documentation.html#Documentation
344 名前:デフォルトの名無しさん mailto:sage [2011/11/19(土) 18:45:39.05 ] >>343 回答、ありがとうございます。 今まで仕様が固まっていないという理由で警告文もないがしろしていました。今日まで警告文の消し方を 知りませんでしたが。職業プログラマでもないし、長い行のブログラムを書いたことがないので不遜なん ですがdocstringはprovisional(y)という単語を独自略語でPRVと書いて0.5秒考えてざっくり書いていけば 良いんではないのかなとちょっと思いました。現実世界の法律文もそうですが形骸化しちゃうのは割り切る しかないのかなと思います。PRVも10段階ぐらいのレベル機能つけてどの程度の完成度を明示する。あと "Mon May 23 23:41:00 JST 2011"みたいなのを付加して、弄るごとに"Mon May 30 15:41:00 JST 2011"みたい なのを追記して、弄った履歴と最終更新日時で昇順・降順で飛んでいける機能、最終更新日時で指定日時から 指定日時までを昇順・降順で飛べる機能、人に見せたくないメモドキュメント機能、ソースを人に渡す時は人に 見せたくないメモドキュメント・日時関連を除去できる機能があると10年後に読むハメになったときに便利で読む コスト低減につながるのかなあ。 10年、20年単位で保守・管理する代替ツールってあるんでしょうかね。 ttp://ejje.weblio.jp/content/%E4%BB%AE
345 名前:デフォルトの名無しさん mailto:sage [2011/11/19(土) 20:48:04.55 ] 頑張ってる所に水を差すようで悪いけど どの行を誰がいつ編集したのかは最近のSCMを使っていれば(大抵はblameという名前のサブコマンドで)調べられる あまり凝ったルールは時間が経つと守られなくなっていく docstringに全ての情報を詰め込む必要もない、コメントで書けばいい 「これから変わるかもしれない」目印は英語だとTBD(to be doneなどの略。探せば他にも出てくるが、大抵は「まだ○○してない」の意味)とか Subject to changeと書く場合が多いから、無意味に独自ルールを作らない方が良い
346 名前:デフォルトの名無しさん mailto:sage [2011/11/19(土) 20:58:08.36 ] docstringは、その関数、スロット、クラスを使う人のために書くもんで、 開発する人のためにあるわけじゃないから。
347 名前:デフォルトの名無しさん mailto:sage [2011/11/19(土) 21:23:13.20 ] >>346 が大前提だねー。メタ情報とかの諸々は外部で管理した方が良いと思う。 docstringが長くなると、画面あたりの情報量が減って、可読性が大幅に下がるし。 10年、20年単位で保守・管理するためのツールがSCMやissue trackerとかで、 情報の管理もそちらで行うのが常識になってる。 最近はみんな、趣味のコードの管理にはGitHubかBitbucket使ってるよね。
348 名前:デフォルトの名無しさん mailto:sage [2011/11/19(土) 21:30:20.61 ] >>347 たいてい何変えたよだけで、結局「ソース読め!!!」じゃん
349 名前:デフォルトの名無しさん mailto:sage [2011/11/19(土) 21:39:08.23 ] ソースコード読んでない関数は使わない人キタ━(゚∀゚)━!
350 名前:デフォルトの名無しさん [2011/11/19(土) 22:13:01.27 ] だれ?
351 名前:デフォルトの名無しさん mailto:sage [2011/11/19(土) 22:18:29.20 ] >>348 issue trackerやSCMを絡めて、変更の背景とか議論の経過とか、 付加的な情報も集約して管理しましょうよ、という流れがある。 今まで紙の書類とか、担当のコンセンサスで管理してたようなの。 CVSとかChangeLogの時代から運用もツールも大分前進したと思う。 そっち関連のスレとか見れば色々話してるんじゃないかな。
352 名前:デフォルトの名無しさん mailto:sage [2011/11/19(土) 22:30:04.62 ] >>351 「声のでかいやつが勝」的、要素も多分にあるけどな
353 名前:デフォルトの名無しさん mailto:sage [2011/11/20(日) 16:53:43.60 ] prin1みたいに奇妙な関数名の由来についてまとめたページはありませんか と質問する前にぐぐってみたら groups.google.com/group/comp.lang.lisp/msg/2cdc4d3323d979d4 cadr.g.hatena.ne.jp/g000001/20080116/1200413261
354 名前:デフォルトの名無しさん mailto:sage [2011/11/20(日) 20:12:02.07 ] >>345 所詮は文字なんて記号でしょ。容易に置換可能にしておけば用語変更は楽でしょ。 他人に渡すときに除去が容易でしょ。あとこれぐらいで凝ったルールとか言い出す 人は何も守れないでしょ。 個人開発のちょうど良い版管理システムってないのかね。git, subversionにも移行が容易な。 >>346 人に見せる予定がなかったら何ヶ月後、何年後かの自分しかみないし、docstringの 超変態的な使い方から新しいアイデアも生まれるんじゃないの。他人に迷惑かけて いないんだからダイナミックなオナニーするのは自由だよ。 >>347 123/foo.lisp, 234/foo.lisp, foo/foo1.lispとかもGitHubを使っているの? 復数人開発前提みたいでシステムとして大きいし、ツールとして使い辛そうなんだけど。
355 名前:デフォルトの名無しさん mailto:sage [2011/11/20(日) 21:37:30.72 ] >>353 直接は関係ないけど... 大昔はキャラクターの幅が6bitで, ワードマシンのワードサイズが6Nだった. 当時の大型機が採用していたワード=36bit[1]基準だと6キャラ以下のシンボル なら1ワードに収まる. ってな理由で, 古くからある関数は名前が短いんだそうだ [1] IBM, ハネウェル, GE, DECのPDP6系列あたり
356 名前:デフォルトの名無しさん mailto:sage [2011/11/21(月) 03:39:04.72 ] >>354 実際にGitとかMercurial、Bazaarとかを使ってみたことはある? 使って問題を感じるなら良いけど、「使い辛そう」って思ってるだけなら、 試してからでも遅くないんじゃないかな。個人的な印象では、そう悪くない。 あと、単に管理が不要でad hocにディレクトリで分けて管理しているのか、 そういう手法しか知らないから、それが良い手法と信じてそうしているのか、 そういった違いは区別した方が、より良い判断ができると思う。 ついでに、これは余計なお世話かもしれないけど、先人の存在を忘れない方が良い。 Lispはこれまで多くの人に何十年も使われてきた言語で、数多くの研究がされてる。 そういう手法が定着してないという事実の意味を考えてみても良いかもしれない。 まあ、最終的には個人の趣味だから、好きな結論を選んで好きにすれば良いと思う。 >>345 や>>346 も、興味があるようだったから、Lispなどの一般的な文化を紹介しただけで、 実際は君がどこで何をしてても何も言わないから、気にしないで大丈夫。
357 名前:デフォルトの名無しさん mailto:sage [2011/11/21(月) 10:56:24.05 ] CVSやSubversionは個人で使うには少しやり過ぎな印象が強いが DVCSはpull/pushの時以外は元々自分のマシンに閉じたツール GitHub・BitBucket・Launchpadなども個人で使って何か不都合があるわけじゃない $HOME内の設定ファイルという、複数人でいじることは滅多にないデータを突っ込んでる人もあちこちにいる 変更の理由を変更点と関連付けてメモしておいて、後からログを参照して巻き戻せる ちょっとしたバックアップツールくらいの気持ちで使ってみたらいい 無理強いはしないし、できないが
358 名前:デフォルトの名無しさん mailto:sage [2011/11/21(月) 14:30:57.79 ] .emacsや.vimrc/.vimの管理にかなり重宝してるけどな。git hgも悪くはないけど。小回りはhgのほうが聞くかも。
359 名前:デフォルトの名無しさん mailto:sage [2011/11/21(月) 20:32:21.09 ] >>358 hg良いんだけどちょっとリポジトリがでかくなると重たい感じする(グラフィックとかも突っ込んでるからなんだけど) gitが今のところ楽なんだが、Windowsで手も足も出なくなる事がある(多バイトコード含むファイル突っ込まれた時) そういう所見でだとsvnはまだまだ行けると思ってる
360 名前:デフォルトの名無しさん mailto:sage [2011/11/21(月) 22:00:38.42 ] githubが使いやすそうなんだけど、OSSホスティングってこんなにあるんだな。急成長率で言うと githubの伸びが良いの? あと無料会員はソース等のムーディストビーチみたいなんだけど、こういうのが流行っているの? ホスティングサービスを3つアカウント作ると思うんだけど、他におすすめありますか? BitBucket、Launchpad? ttp://en.wikipedia.org/wiki/Comparison_of_open_source_software_hosting_facilities ttp://ja.wikipedia.org/wiki/OSSホスティングサービスの比較
361 名前:デフォルトの名無しさん mailto:sage [2011/11/21(月) 22:41:28.73 ] lispのプログラムをどうやって保持というか管理すればいいかとは 確かに悩んでいる といっても趣味でやっているプログラムだし、仰々しいことはできないけど やっぱり分散システムなのかね
362 名前:デフォルトの名無しさん mailto:sage [2011/11/21(月) 22:53:09.21 ] >>361 gitはリポジトリを落としてインストール専門なんだけど、git自体で管理したことない からわからないけど調べた感じだと、githubはローカルで管理してnfsマウントして コピーするみたいな手軽にできるバージョン管理みたいだね。付加情報もつけられる 困ることはないようだ。Webにあげるとヌーディストビーチというのを意識していれば それ以外は気にすることはないんじゃないかな。 自分はブログラムもそうだけどTeXで物書きもしたいから良いバージョン管理がないかなと 漠然と探していたけど、これがベストとは思わないけどかなりベターではあるのかな。
363 名前:デフォルトの名無しさん mailto:sage [2011/11/21(月) 23:07:23.06 ] >>362 >Webにあげるとヌーディストビーチ そうか、完全にクローズドな環境ではないんだね 人様に見せるのは恥ずかしいから出来るだけ表に出したく無かったんだけど 利点の方が重要かも 利用する方向で考えてみます
364 名前:デフォルトの名無しさん mailto:sage [2011/11/21(月) 23:12:26.53 ] >>363 一番安いので5個のプライベートリポジトリ作れる 無料のはまぁヌーディスとビーチだけど
365 名前:デフォルトの名無しさん mailto:sage [2011/11/21(月) 23:13:24.05 ] >>363 うん 個人情報が絡むgitなどでのバックアップはxreaやsakuraを使ったほうが いいよ。お金を出してでもね。xreaでgitやhgを扱うのは少々トリッキーなこと が必要だけどな。
366 名前:デフォルトの名無しさん mailto:sage [2011/11/21(月) 23:14:56.25 ] UBC(カナダの太平洋岸の大学)の近くにヌーディストビーチがあるのを思い出したわ。
367 名前:デフォルトの名無しさん mailto:sage [2011/11/21(月) 23:32:04.87 ] >>361 個人専用かつ大規模でない場合はrcsで十分だったりしないか?
368 名前:デフォルトの名無しさん mailto:sage [2011/11/21(月) 23:46:07.10 ] >>364 7ドル/月って高くない? 最低価格有料会員21ドル/年ぐらいでいいような気がする。 下で謳っている以外で有料会員と無料会員との差別化としてどういう機能があるの? ttps://github.com/plans
369 名前:デフォルトの名無しさん mailto:sage [2011/11/21(月) 23:51:57.31 ] >>367 gaucheの中の人もgitに移行したし、navi2chもgitだよね。slimeもgitだっけ? まあ、せっかくだしアカウント作ってちょっと触っておいて損はないかなと思っている。 化石ツールでも全然個人レベルだと全然管理できるポテンシャルを持っているのはわかって いるんだけど、世の中に一度流されるのもありかな。
370 名前:デフォルトの名無しさん mailto:sage [2011/11/22(火) 00:10:59.88 ] 公開するものはgithub、非公開のものはbitbucketと使い分けている。
371 名前:デフォルトの名無しさん mailto:sage [2011/11/22(火) 02:16:13.72 ] >>360 勢いで言えば、GitHubが一番だと思う。次いでBitbucketかなー。 少なくともCommon Lispの世界では。CL-PPCREとかHunchentootも移ったし、 SBCLのWindows forkとかもこっちだし。 GitHubとBitbucketの二者とLaunchpadは性格違うので注意。 前者はあくまでも個人にフォーカスしてて、後者はプロジェクトにフォーカスしてる。 Launchpadはどちらかというと、Google CodeとかSFの競合。 GitHubとBitbucketなら、片方ミラーにしつつ、両方同時に使う手もある。 BitbucketはGitに対応してるし、MercurialでもHg-Git経由でGitHubを利用できるので、 リポジトリは共通のまま両方にpushするだけ。
372 名前:デフォルトの名無しさん mailto:sage [2011/11/22(火) 02:28:58.29 ] ただ、issue trackerはLaunchpadがかなり高機能なので、 人一倍きめ細かいタスク管理が好きなら合うかもしれない。 例えば、SBCLの公式はバグの管理だけLaunchpadを使ってる。 分散SCMをCLで使ってて思うのは、SLIMEとREPLどっぷりなので、 機能ブランチとかissueブランチを細かく作りまくって作業すると、 今現在どのコードを使って作業してるか本気で訳分からなくなる。 code.lisp、code.lisp<1>、code.lisp<2>、code.lisp<3>とか何がどれよ、 みたいな。結局バッファ切り替えにC-x bじゃなくてC-x C-f使ったり。 この辺はひと工夫要りそう。
373 名前:デフォルトの名無しさん mailto:sage [2011/11/22(火) 02:59:43.45 ] GitHub, Bitbucket, Launchpadで学習コストは基本的操作マスターレベルで各何時間なのか、 中級者的使い方で各何時間なのかを想像でいいので教えてください。そして、基本的操作 マスターレベル、中級者レベルで恩恵(効果)の違いを100点で評価を教えてください。 GitHub, Bitbucket, Launchpadのアカウントを作って3つとも触る予定ですが、そこまで 調査コストをかけられずにサービス比べをやめてしまうかもしれません。 Launchpadの「かなり高機能なので、人一倍きめ細かいタスク管理」できるのはうれしいん ですが、学習コストが他のサービスよりかける必要がありそうですし、管理コストが膨れ 上がりそうで怖いです。でも、会員数が200万アカウントでしたっけ。1人平均2アカ作って いるとしても100万人は優秀ですね。杞憂なのかな。
374 名前:デフォルトの名無しさん mailto:sage [2011/11/22(火) 08:08:43.49 ] こういうサービスで2垢作るかな? それはともかく、どのサイトも機能の概要ページがあるんだから、一通り眺めて決めればいい 基本はGitを使ってるならGitHubかBitBucket、Mercurialを使ってるならBitBucket、Bazaarを使ってるならLaunchpadだが 上にもあるようにBTSだけ使うとか、複数サイトにミラーを置くこともできる (ミラーは興味を持つ人がある程度存在するプロジェクトでやることが多いが、 一つのサイトがダウンしている間も大きな支障が出ないという側面もある) 確か、Bazaarにもbzr-gitとかbzr-hgがあったよな
375 名前:デフォルトの名無しさん mailto:sage [2011/11/22(火) 08:16:05.70 ] >>372 そのエディタはモードラインやステータス行にブランチ名を表示できないのか?
376 名前:デフォルトの名無しさん mailto:sage [2011/11/22(火) 08:21:48.52 ] LunchpadはUbuntuとのつながりも深いしね。
377 名前:デフォルトの名無しさん mailto:sage [2011/11/22(火) 09:22:13.33 ] >>372 独自仕様でemacs lispを組んでemacsの下の2行の所に半角20文字ぐらいコメントできるようにして文字数制限のないコメントを コマンド打つと出てくるようにするといいかもね。toggleで表示・非表示もできるようにすれば邪魔なときは非表示にすればいい。
378 名前:デフォルトの名無しさん mailto:sage [2011/11/22(火) 19:31:53.16 ] コード例plz
379 名前:デフォルトの名無しさん mailto:sage [2011/11/22(火) 22:36:11.95 ] なんとかmodeみればあるよ。的な?
380 名前:デフォルトの名無しさん [2011/11/23(水) 07:45:48.63 ] 再帰処理てどう考えたら理解できますか?
381 名前:デフォルトの名無しさん mailto:sage [2011/11/23(水) 08:09:41.10 ] >>380 深く考えずに、単なる関数呼び出しだと理解すれば良い。 (defun fact (n) (if (= n 1) 1 (* n (fact (- n 1))))) 単に呼んでる関数が自分自身だったっていうだけ。 イメージが掴みにくいなら、(trace fact)してから実行してみて。
382 名前:デフォルトの名無しさん [2011/11/23(水) 08:16:50.07 ] >>381 ありがとございました。
383 名前:デフォルトの名無しさん mailto:sage [2011/11/23(水) 08:29:34.76 ] そして上のfactの定義は忘れるんだ。 (defun fact (n) (if (= n 0) 1 (* n (fact (- n 1))))) こっちで。 0! = 1とか素で知らなかったんだよ! 中学生以来の衝撃だよ! 何でみんな0まで回してんのwwwとか思ってたよ!
384 名前:デフォルトの名無しさん mailto:sage [2011/11/23(水) 09:16:43.33 ] >>383 www
385 名前:デフォルトの名無しさん mailto:sage [2011/11/23(水) 23:31:43.68 ] ふとしたことで積ん読してたPAIPを読み始めたんだけど、 なかなか面白い本だね。
386 名前:sage [2011/11/24(木) 00:02:26.88 ] 再帰は自分自身を呼び出しながら、終了条件になるまで深く潜っていくイメージかな? 終了条件になったら、呼び出した方の関数に値を渡しながら浮かびあがっていく感じ。 一直線に潜っていくのはいいけど、いくつかに枝分かれして潜っていくような式は 効率が悪いような気がする。
387 名前:デフォルトの名無しさん mailto:sage [2011/11/24(木) 00:04:36.21 ] ああ、まちがった。
388 名前:デフォルトの名無しさん mailto:sage [2011/11/24(木) 00:08:40.59 ] carとcdrに再帰するまではいいけど 相互再帰書ける人はエイリアンだと思う
389 名前:デフォルトの名無しさん mailto:sage [2011/11/24(木) 00:20:59.31 ] >>388 何で? ただの関数呼び出しじゃん
390 名前:デフォルトの名無しさん mailto:sage [2011/11/24(木) 00:34:43.86 ] loop表現では描けない再帰の表現ってあるのかな? みんな、実コードだったら可読性の高いloopで書いちゃうんでしょ?
391 名前:デフォルトの名無しさん mailto:sage [2011/11/24(木) 00:50:29.14 ] 再帰下降パーサーとかループでかく気は起きない
392 名前:デフォルトの名無しさん mailto:sage [2011/11/24(木) 00:58:31.93 ] グレアム教徒はloopを使わない。
393 名前:デフォルトの名無しさん mailto:sage [2011/11/24(木) 01:29:37.18 ] Common lispとC on Linuxで食っていけないかな? 断れない仕事なら便宜上多言語も読めるようにするし、他のOSにも使えるように努力する。 ttp://cruel.org/freeware/hacker.html
394 名前:デフォルトの名無しさん mailto:sage [2011/11/24(木) 02:05:30.95 ] >>388 書くことより,「それが相互再帰である」ということにどう気づくんだろう,とか思った. ループ内で条件分岐して,分岐ごと別の関数を呼ぶ,みたいな場合は相互再帰か.
395 名前:デフォルトの名無しさん mailto:sage [2011/11/24(木) 02:31:04.41 ] >>393 仕事でLispを使うこと blog.practical-scheme.net/shiro?20100214-when-you-should-use-lisp
396 名前:デフォルトの名無しさん mailto:sage [2011/11/24(木) 09:26:38.92 ] >>394 問題自体が相互再帰。
397 名前:デフォルトの名無しさん [2011/11/24(木) 10:40:35.04 ] do詳しく解りやすく説明お願いいたします。
398 名前:デフォルトの名無しさん mailto:sage [2011/11/24(木) 14:19:54.26 ] なぜかLispのソースがAA扱いになってる 括弧が多すぎるからかな
399 名前:デフォルトの名無しさん mailto:sage [2011/11/24(木) 18:19:47.73 ] Allegro CLの購入を考えたいんだけど、そんなに高いものなの?高い高いって書いてあるけど、20万とかするの? Windows向けのアプリ作ってフリーソフトとして配布したいと思ってるのだけど。
400 名前:デフォルトの名無しさん mailto:sage [2011/11/24(木) 18:35:42.22 ] >>399 Runtimeパッケージの再配布にも金銭関係するからフリーソフトで使うのはムリじゃね?
401 名前:デフォルトの名無しさん mailto:sage [2011/11/24(木) 18:49:18.58 ] エンタープライズ版だと7桁か
402 名前:デフォルトの名無しさん mailto:sage [2011/11/24(木) 22:36:42.37 ] Windows向けのアプリをcommon lispで作ろうとは私も思っていろいろ調べてみたが、 英語でも情報があまりまとめられていない気がする ソフトのマニュアルに最低限記述してあるだけ わかりにくいのが残念 clispでもwindowsアプリを作れると思うよ
403 名前:デフォルトの名無しさん mailto:sage [2011/11/24(木) 22:56:10.19 ] 実行ファイル形式にしたいだけならSBCLだかが出来たような?
404 名前:デフォルトの名無しさん mailto:sage [2011/11/24(木) 22:58:53.60 ] (sb-ext:save-lisp-and-die "application.exe" :toplevel 'main-entry ; entry point function :executable t ) これでexe出来たはずだけど、SBCLからclojureに浮気中なのでダメだったらゴメン
405 名前:デフォルトの名無しさん mailto:sage [2011/11/24(木) 23:36:14.06 ] 特に聞かれて無い気がするが、 cl.cddddr.org/index.cgi?%bd%e8%cd%fd%b7%cf%3a%bc%c2%b9%d4%a5%d5%a5%a1%a5%a4%a5%eb%a4%ce%ba%ee%a4%ea%ca%fd 商用はマニュアルにあるのかな。 あとは、ECLみたいにCコード吐き出すやつもあるが。
406 名前:デフォルトの名無しさん mailto:sage [2011/11/24(木) 23:57:01.61 ] >>405 このページは初見だった いいページを教えてくれてありがとう ってすごいurlだな
407 名前:デフォルトの名無しさん mailto:sage [2011/11/25(金) 00:55:56.19 ] 強いメリットを主張できないClojureってなんなんだ。 ttp://hibari.2ch.net/test/read.cgi/tech/1318498898/175-177 From: [175] デフォルトの名無しさん <sage> Date: 2011/11/24(木) 23:43:11.28 質問です。 LinuxerのサンデープログラマLisperなんですがJava未学習者がclojureを 覚える強いメリットっありますか? あとOSごとにソフトを作り込んだ方がヘビーなエンドユーザーは使いやすいと 思うんですが、実際の所はどうなんでしょうか? _______________________________________ From: [176] デフォルトの名無しさん <sage> Date: 2011/11/25(金) 00:46:13.24 こういうメリット云々ぬかす奴は嫌い。 _______________________________________ From: [177] デフォルトの名無しさん <sage> Date: 2011/11/25(金) 00:47:09.55 JAVA嫌いなら出来ない おわり
408 名前:デフォルトの名無しさん mailto:sage [2011/11/25(金) 01:13:29.57 ] アホか。
409 名前:デフォルトの名無しさん mailto:sage [2011/11/25(金) 01:23:13.43 ] *Java未学習者に対して*強いメリットが主張できないだけだと思うんだ。
410 名前:デフォルトの名無しさん mailto:sage [2011/11/25(金) 01:25:56.39 ] >>407 Java見習熟者がってのを見て見ぬふりは良くないと思うぞ。 Clojureの魅力の半分はJVM資産の活用でもあると思うし、その場合Javaしらない子にはClojureをやる意味が半分は無いと言う事だもの 自分はJava見習熟でもClojureはオススメするけどさ(他のLisp族は環境依存の部分を知るために苦労するから) RichがVM上にのせた理由を書いた文章とか一度は読むべきだとも思うし。
411 名前:デフォルトの名無しさん mailto:sage [2011/11/25(金) 01:28:03.92 ] >>407 もしかしてClojureスレで聞いた本人か? もしそうなら回線切って以下略だわ
412 名前:デフォルトの名無しさん mailto:sage [2011/11/25(金) 01:46:30.46 ] RacketやClojureなら どちらも不変データと関数型らしいが、 どちらもさらっとしかしらない立場からすると、 独学で初学のひとには日本語の資料やちょっとしたツールがすぐよよういできるClojureかなと思うよ。 例えば、compojureやnoirでWebやってみるとか、leiningen使ったりしてローカルで試したり、 VPSやクラウド環境にリリースするのも出来るし楽だし、 javaを意識しなくて出来るし、 DBも一応何とかなる。
413 名前:デフォルトの名無しさん mailto:sage [2011/11/25(金) 02:28:32.13 ] >>412 DBはClojureqlがオススメ
414 名前:デフォルトの名無しさん mailto:sage [2011/11/25(金) 03:26:09.06 ] 何でLisp Schemeスレでやらないでここでやるんだよw
415 名前:デフォルトの名無しさん mailto:sage [2011/11/25(金) 06:41:33.57 ] >>410 各ディストリでそんなに環境依存ってあるもんなんですか? >>395 のリンクでもありますがCで触れるのは最後にチューニングできるのは強みのような気もするんですが。 Richちゃんのいつごろ書いた記事? >>411 朝、起きて気づいた。こっちの方が書き込み多いのは驚いた。Clojureスレのヤツはウンコだな。 >>412 それならGaucheで良くね? CLならsbcl, clisp。個人の日本語解説サイトもあるから日本語資料には困らんよ。 日本語資料では間に合わなくなったら辞書片手に読めば良い。以上。
416 名前:デフォルトの名無しさん mailto:sage [2011/11/25(金) 07:35:47.49 ] そもそも,何ができたらお前にとって強いメリットで, 環境に合わせたチューニングで何がしたいというのか.
417 名前:デフォルトの名無しさん mailto:sage [2011/11/25(金) 07:48:40.49 ] ディストリに依存する部分はパッケージメンテナじゃないから詳しくないが 処理系に依存する部分は少なからずある ラッパーはあるが、学び始めた頃はどれが処理系依存かなんてすぐには分からないし それにGauche/SBCL/CLISPって不変性(永続的なデータ構造)中心だったっけ? 「日本語資料の量」って部分だけに反応したのなら、>>412 がパラダイムの近いLisp方言を比較した点を読めてないし 辞書を使えばいいというのも的を外してる。それはどの方言・処理系でも同じ
418 名前:デフォルトの名無しさん [2011/11/25(金) 07:52:40.94 ] (let ((myData '(1 2 3)) (myResult '())) (do ((myList (rest myData) (rest myList)) (myI (first myData) (first myList))) ((null myI) myResult) (do ((myRest (rest myData) (rest myRest)) (myJ (first myData) (first myRest))) ((null myJ)) (setf myResult `((,myI ,myJ) ,@myResult))))) ((3 3) (3 2) (3 1) (2 3) (2 2) (2 1) (1 3) (1 2) (1 1)) が理解できません。どなたか簡単に説明をお願いいたします。
419 名前:デフォルトの名無しさん mailto:sage [2011/11/25(金) 08:46:41.47 ] >>400 配布毎に金かかるのか。それだと厳しいってか無理だなぁ。 standard runtimeが付いてくるのがエンタープライスからみたいだけど、値段7桁? 高えな。
420 名前:デフォルトの名無しさん mailto:sage [2011/11/25(金) 09:02:36.95 ] >>415 失礼なやつだな。 CL <-> Clojure : ライブラリの扱い方の違い。日本語の取り扱い。 仕様の枯れ方。 仕様に含まれてるconcurrentな部分。google app/heroku などweb系。 schemeは学習でしか使ってないから比較してないけど、正直いって、 この3つの言語のうち1つやってれば、あとの2つはいつでも、プ ログラミングはできると思うかな。 この辺は大きな違いがあるから。個人的には、Clojureは年1バージョン アップで仕様がまだ微妙に変更して行ってるから、web以外で使う場合、 慎重になってるところはあるけどな。CLの仕様の枯れ方は何かと安心できる 反面、仕様を決めた当時と今の時代の違いを埋めてくれと思うところはある。
421 名前:デフォルトの名無しさん mailto:sage [2011/11/25(金) 09:14:40.85 ] 410が言ってる、環境依存の問題は、Clojureは少ないというのは事実かもな。 CL/schemeに限らないけど、オープンソース系の多くの言語はWindowsで 取り扱うのは、何かと問題が出てくるし、作ってる本人達にもどうでもよい 問題だったりして、放置されがちだしな。俺だってMSを使ってるんだったら cygwinより仮想環境そろえてそこにubuntu入れて開発環境を揃えたほうが、 楽だろうにと思うもの。 俺も含めてここの人には余りメリットは感じないけど、IDEにこだわってる メンツでlispを触りたいという人も向いてるよ。でも、その手の連中は、 ここじゃなくて他のところに生息してそうだ。
422 名前:デフォルトの名無しさん mailto:sage [2011/11/25(金) 10:09:47.13 ] >>419 その代わり、サポートとかも提供するからその値段ってことなんだってさ。 ちなみに、毎年保守契約に25%掛かるぜ。 LispWorks辺りはまだマシだけど、それでも良い値段するよ。 64ビットならEnterprise確定だし。商用は高い。 www.lispworks.com/buy/prices-1c.html
423 名前:デフォルトの名無しさん mailto:sage [2011/11/25(金) 10:30:31.56 ] >>418 どの辺が理解できないのか教えてくれないと、 こっちもどの辺を説明すれば良いか分からなくて困るよ。 とりあえず、 1: myList = (2 3) myI = 1 myRest = (2 3) myJ = 1 2: myList = (2 3) myI = 1 myRest = (3) myJ = 2 3: myList = (2 3) myI = 1 myRest = () myJ = 3 4: myList = (3) myI = 2 myRest = (2 3) myJ = 1 ... って具合にそれぞれの変数が変わっていく中で、 (... (myI2 myI2) (myI1 myJ1)) って感じで要素が追加されてくからそうなる。
424 名前:デフォルトの名無しさん mailto:sage [2011/11/25(金) 12:40:51.96 ] 数年ぶりにcommon lispを触るようになったけど、忘れてることが多い PAIPの3章よんでると良い復習になったな。手持ちは原著なんだけど、 数年前に買ったものの割には、誤植の訂正はされていないようだ。 和書版のほうはどうなのか知らない。 高い本だけど、評判だけのものがある。大学の図書館あたりで探して 読んでみればいい。
425 名前:デフォルトの名無しさん mailto:sage [2011/11/25(金) 18:56:57.16 ] >>422 サポート込みならしょうがないか。 まぁ商用は個人には無理っぽい。 Tree-shakingがフリーの実装にあるといいんだけどね。 イメージを小さくするっていうならsbclがcompressed coreをサポートしたみたいだけど、起動に時間がかかりそうね。試してみた人いる?
426 名前:デフォルトの名無しさん [2011/11/25(金) 19:35:10.83 ] >>423 ありがとうございました。
427 名前:デフォルトの名無しさん mailto:sage [2011/11/25(金) 22:00:13.29 ] enhancement: when built with :sb-core-compression, core files (regular or executable) can be compressed with zlib. Use the :COMPRESSION argument to SAVE-LISP-AND-DIE to specify a compression level. gzipみたいに1-9とかなら1で良さそうだ。 lzo系統の要望は無かったのかな。 dayafterneet.blogspot.com/2011/05/google-snappy.html
428 名前:デフォルトの名無しさん mailto:sage [2011/11/25(金) 23:34:27.13 ] >>425 Tree-shaking? Clozure CL先生の次回作にご期待ください。 Android対応したし、DTraceにも対応する可能性がありそうだし、 SBCLとは違った魅力のある処理系になると良いよね。 trac.clozure.com/ccl/wiki/ToDo 圧縮コアはそこまで起動時間は変わらないとかついったーで見たような。 Zach曰く、43MBのコアが9MBまで縮むらしいから、常時圧縮してても良いんじゃないか。 >>427 そういう枠組みがソースツリーに入ったのが重要なので、 LZOとかSnappyとかに後から対応するのは楽だと思う。
429 名前:デフォルトの名無しさん mailto:sage [2011/11/26(土) 00:58:48.51 ] >>428 期待しとくわ。頑張ってね!428さん
430 名前:デフォルトの名無しさん [2011/11/26(土) 02:57:16.05 ] >>424 ありがとうございました。
431 名前:デフォルトの名無しさん mailto:sage [2011/11/26(土) 11:29:48.95 ] >>429 今コード見たらzlib決め打ちで全然プラガブルにはなってなかったw嘘吐きでサーセンw 他のライブラリ使わせるには、コアにアルゴリズムやオプションとかの情報を埋め込んだり、 APIでそれを選ばせるためのインターフェイスが要るから、結構変更が大きくなると思う。 その辺決めるための開発者とのコミュニケーションとかマジやりたくない。他の誰か頼む。
432 名前:デフォルトの名無しさん mailto:sage [2011/11/26(土) 22:35:43.12 ] sbclをwindowsで使っています 他のプログラム(.exe)をsbclのスクリプトから起動させる、ということはできますか? xyzzyでいうところの以下の機能のようなものを探したのですが、 自力では見つけられませんでした。 shell-execute - refwiki xyzzy.s53.xrea.com/reference/wiki.cgi?p=shell-execute execute-shell-command - refwiki xyzzy.s53.xrea.com/reference/wiki.cgi?p=execute%2Dshell%2Dcommand make-process xyzzy.s53.xrea.com/reference/wiki.cgi?p=make%2Dprocess sbclがだめでしたら、他のディストリビューションでは可能かどうかも伺いたいです
433 名前:デフォルトの名無しさん mailto:sage [2011/11/26(土) 23:22:33.07 ] >>432 sbcl で外部プログラムを実行するには sb-ext:run-program を使う。 ここに詳細が載っているよ。 www.sbcl.org/manual/Running-external-programs.html 例えば電卓を実行したいのであれば (sb-ext:run-program "C:/Windows/System32/calc.exe" nil) みたいにすればOK.
434 名前:デフォルトの名無しさん mailto:sage [2011/11/26(土) 23:36:57.97 ] >>433 ありがとうございます! マニュアルを見落としていました。
435 名前:デフォルトの名無しさん mailto:sage [2011/11/27(日) 22:01:14.10 ] practical common lispの質問です Programming in the Large: Packages and Symbols www.gigamonkeys.com/book/programming-in-the-large-packages-and-symbols.html 実践common lispの (defpackage "COM.GIGAMONKEYS.EMAIL-DB" (:use "COMMON-LISP")) の直前の文章の翻訳で、 「もちろん文字列そのものを使ってDEFPACKAGEすることもできる。 しかし、その場合にも文字列をすべて大文字で書かなければならない。 なぜなら大半のシンボルやパッケージの名前は読取器によってすべて大文字の真の名前に変換されるからだ」 とありますが、ここの「大文字の真の名前」というのがいまいちわかりません どういうことなのでしょうか
436 名前:SCHEME餃子 ◆8X2XSCHEME mailto:sage [2011/11/27(日) 23:06:00.16 ] >>435 例えばシンボルを 'a と書いたとしても、それはリーダーが 'A と変換する。 表記上 'a と書いても内部的には 'A と扱われる。 この内部的な名前が「真の名前」ということ。 よって、そのパッケージの名前は "COM.GIGAMONKEYS.EMAIL-DB" ということになる。 文字列については大文字に勝手に変換するということはないので、 "com.gigamonkeys.email-db" で探せば "COM.GIGAMONKEYS.EMAIL-DB" に一致しない。
437 名前:デフォルトの名無しさん mailto:sage [2011/11/27(日) 23:22:35.58 ] 正確にいえば、リーダーの設定によって大文字に変換される、だな。 リーダーの設定は READTABLE-CASE で参照、設定できる。 > (readtable-case *readtable*) モードには :upcase, :downcase, :preserve, :invert の4つがあり、 それぞれのモードでLispScheme というシンボルを読むと、内部的には (case mode (:upcase "LISPSCHEME") (:downcase "lispscheme") (:preserve "LispScheme") (:invert "lISPsCHEME")) となる。この結果がシステムが管理してるシンボル「真の名前」だ。 symbol-name で調べられるよ。ほとんどのCLerは :upcase を前提として会話する。 小文字好きな人は *print-case* という印字側を司る設定を :downcase にしてたりする。
438 名前:デフォルトの名無しさん mailto:sage [2011/11/27(日) 23:28:43.15 ] ありがとうございます。 リーダーのモードの説明、とくに >ほとんどのCLerは :upcase を前提として会話する。 を見て腑に落ちました。 そう思って本文を見ると、すんなりと読めました 真の名前とはそういうことだったのですね
439 名前:デフォルトの名無しさん mailto:sage [2011/11/28(月) 15:12:55.09 ] すげー分かりやすい、横トンクス。
440 名前:デフォルトの名無しさん mailto:sage [2011/11/28(月) 23:47:34.84 ] sb-ext:run-programがらみだと思うのですが、 windowsで関連づけしているブラウザで指定したurlを開かせる方法はあるのでしょうか sb-ext:run-program を使えば指定したブラウザでurlを開くことはできますが、 いわばブラウザを自動的に指定させたいのです
441 名前:デフォルトの名無しさん mailto:sage [2011/11/29(火) 01:20:19.28 ] >>440 shellに紐づいているプログラムを実行させたいのであれば、Win32APIのShellExecute()をCFFIで 呼ぶしかないような気がする。 下は既定ブラウザでgoogleのURLを開く例。 (cffi:foreign-funcall ("ShellExecuteA" :library "shell32" :convention :stdcall) :pointer (cffi:null-pointer) :string "open" :string "www.google.co.jp/ " :pointer (cffi:null-pointer) :pointer (cffi:null-pointer) :int 1 ;SW_SHOWNORMAL :long)
442 名前:デフォルトの名無しさん mailto:sage [2011/11/29(火) 01:24:26.73 ] ぐぐると sh -c してるのが見つかった Windows の cmd.exe でも -c だか -k でいけるかもしれない www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/cmd.mspx?mfr=true
443 名前:デフォルトの名無しさん mailto:sage [2011/11/29(火) 02:06:52.63 ] >>441 cffi経由でwin32apiをたたくなら、 いろいろと操作できそうですね これを使用させていただきます >>442 そういう方法もあるのですか cmd /c start www.google.co.jp/ これでページを開くことができましたので、こう書きましたら (sb-ext:run-program "c:/Windows/System32/cmd.exe" '("/c start www.google.co.jp/ ") :wait nil) googleのページは開けたものの、・不必要なことに、なぜかurlの最後に"がついてしまいました The requested URL /%22 was not found on this server.
444 名前:デフォルトの名無しさん mailto:sage [2011/11/29(火) 09:12:15.20 ] cygstartェ……。
445 名前:デフォルトの名無しさん [2011/11/29(火) 10:13:00.97 ] 実用 Common Lispて初心者でも理解できますか?
446 名前:443 mailto:sage [2011/11/29(火) 11:28:14.54 ] >>443 は (sb-ext:run-program "c:/Windows/System32/cmd.exe" '("/c" "start" "www.google.co.jp/ ") :wait nil) と書き換えればokでした
447 名前:デフォルトの名無しさん mailto:sage [2011/11/29(火) 13:02:06.70 ] >>445 下手なLISP本やるよりわかりやすいから、とりあえずやれ。 あと2chのリンクは参考資料な。
448 名前:デフォルトの名無しさん mailto:sage [2011/11/29(火) 13:05:36.47 ] あと無料でhtml形式の英語版があるから辞書片手にやりなさい。 そして、その次にOn lisp.pdfかな。
449 名前:デフォルトの名無しさん mailto:sage [2011/11/29(火) 13:53:18.07 ] >>445 いきなりあの本に手を出すのは疑問かな。447さんと意見が違って来る。 やるならば3章まではなんども復習してじっくり鍛えてからそのあと に進めばいいよ。ネットの勉強ブログを見てると4章くらいで挫折が 多い本だから。だからあの本はある程度身につけたlisperが更に腕を 磨く本という位置づけ。最初の2章の位置づけは、他の言語やってましたよ という人にとっては良い入門だと思う。 on lispを初心者に勧めるのもどうかと思うな。 おれはANSI common lisp(グレアム)で最初勉強したほうだけどね。 竹内さんの本は見てないから評価できない。
450 名前:デフォルトの名無しさん mailto:sage [2011/11/29(火) 13:59:11.02 ] プログラムの洗練のさせ方やデバッグの技法などを身につけるにはうってつけなん だけどね。 むしろ、lisp経験をある程度積んでるのにPAIPを読んでないのは不幸だと思うくらい の本だよ。値段は高いからそれ相当の価値があるかと言われると、あるんだろうな。 買って損したって気分しないんだから。ただし和訳版は持ってないので、和訳の質 などわかりません。(洋書版で7千円ちょっと、和書で9千円ちょっと)
451 名前:デフォルトの名無しさん [2011/11/29(火) 20:49:32.97 ] >>445 初心者でもとりあえずまずは、公式HPをみとくべき lisp.dive2ent.com/
452 名前:デフォルトの名無しさん mailto:sage [2011/11/29(火) 23:38:38.06 ] >>451 踏んでしまったw
453 名前:デフォルトの名無しさん mailto:sage [2011/11/29(火) 23:46:05.95 ] >>445-448 ってPractical Common Lispのことでは? 日本語では『実践Common Lisp』と翻訳されているやつ PAIPは無料配布されていなかったかと >>451 については俺もやられたw 音楽が流れてびくっとしてしまった
454 名前:デフォルトの名無しさん mailto:sage [2011/11/29(火) 23:46:15.45 ] むしろ赤(ry
455 名前:デフォルトの名無しさん mailto:sage [2011/11/29(火) 23:57:48.53 ] opac.ndl.go.jp/recordid/000009415975/jpn 人工知能 第二版 1108p,17000円とこっちも分厚いんだな。
456 名前:デフォルトの名無しさん mailto:sage [2011/11/30(水) 00:57:06.16 ] >>453 PCLのことか^^; 和書のタイトルがに過ぎてて混乱してた。 PCL萌え絵本ですね。(もええ本ですねと書いたんだが。)
457 名前:デフォルトの名無しさん mailto:sage [2011/11/30(水) 01:05:17.86 ] >>455 原著は第三版がでて11000円相当で売ってるけど、あんなでかいの 電子ブックじゃないと持ち歩く気がせんかも。 PAIP/AIMAコンボで漬物石だよな。(+ Introduction to Algorithms)
458 名前:デフォルトの名無しさん mailto:sage [2011/11/30(水) 01:14:35.37 ] 実用(PAIP)は入門にはもったいないな。ある程度基礎を知ってからのほうが楽 しいし、役にたつよ。できれば、じっくり味わってほしい。 今なら実践(PCL)→実用(PAIP)が個人的オススメかな。Paul Graham のスタイル はどちらかといえば Scheme 寄りだからね。ド入門よりは二冊目以降がいいような気がする。
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はその中でもレアだったのかも
560 名前:デフォルトの名無しさん mailto:sage [2011/12/09(金) 22:38:40.20 ] パソコンだとmuLisp86、SLISPとか。 大型やオフコンが大学にあればUtiLisp、SLISPとか。 SLISPはREDUCEが実装されていたからあちこちにポートされていた。
561 名前:デフォルトの名無しさん [2011/12/09(金) 22:45:46.16 ] >>554 マクロでしょ
562 名前:デフォルトの名無しさん mailto:sage [2011/12/09(金) 22:46:39.38 ] あ、そうか >隣にある大学の校舎にあるコンピュータ室まで行くんですが、当時はまだパソコンじゃなくてマイコン。パンチカードの時代でした。 wikiで確認したら、慶応の高校に通っていたみたいだから、 慶応にあったlispシステムを使っていたのか
563 名前:デフォルトの名無しさん mailto:sage [2011/12/10(土) 00:17:23.52 ] KOとlispなら本を出してる人おったよな。お盛んだったんじゃない?
564 名前:デフォルトの名無しさん mailto:sage [2011/12/10(土) 00:18:52.00 ] べちとかかつまーとかうっさんくさいひともリスパか。べちは掲示板作ってたんじゃなかったっけ?
565 名前:559 mailto:sage [2011/12/10(土) 00:31:03.78 ] >>560 ありがとうございます mulisp86がよく分からないのですが、ciniiから見れる昭和64年の情報処理学会の報告を見ると ms-dosで動くのかということは分かりました どういう処理系だったのでしょうか
566 名前:デフォルトの名無しさん mailto:sage [2011/12/10(土) 00:42:45.46 ] >>555 二列目ってその例だと3b-swf-20110110-git? それで良いなら、 (let ((list (ql:system-list))) (mapcar (lambda (system) (let ((release (ql-dist:release system))) (ql-dist:prefix release))) list)) データ構造を調べたいなら、C-c Iしてインスペクタで調べると良いよ。
567 名前:デフォルトの名無しさん mailto:sage [2011/12/10(土) 00:50:38.36 ] >>557 それ前からあるよ。 逆引きCLとか、Common LISP users jpとかで使ってる。 HyperSpecへのリンクとか全部そこ経由。超便利。 > You knew about l1sp.org, right? The redirect site I made a few years > ago to make it easy to share links to Common Lisp documentation? 公開されたのはコード。 > Well, I just released its source code on github. Enjoy!
568 名前:デフォルトの名無しさん mailto:sage [2011/12/10(土) 06:23:40.94 ] >>566 回答、ありがとうございます。 言葉足らずですいません。(ql-dist:name release)で3b-swfの列をゲットできました。 C-c Iで#<QL-DIST:SYSTEM 3b-swf / 3b-swf-20110110-git / quicklisp 2011-12-03>でエラーになるんですが、 どうやって調べるんでしょうか? CL-USER> (lambda (x) (+ x x)) #<FUNCTION (LAMBDA (X)) {1002B4983B}> また#<FUNCTION (LAMBDA (X)) {1002B4983B}>も調べられるんでしょうか?
569 名前:デフォルトの名無しさん mailto:sage [2011/12/10(土) 16:37:11.64 ] >>578 ほんとだ 訂正ありがと。
570 名前:デフォルトの名無しさん mailto:age [2011/12/10(土) 16:48:22.12 ] >>578 に期待 age
571 名前:デフォルトの名無しさん mailto:sage [2011/12/10(土) 18:18:33.01 ] >>568 名前なら、releaseじゃなくて(ql-dist:name system)でも大丈夫なはず。 ASDFで定義してるシステムの名前が取れると思う。 それと、#< ... >ってのは、REPLがCLOSオブジェクトをwriteで印字したもので、 オブジェクトそのものじゃないから、それ自体はインスペクトできないんよ。 で、(lambda (x) (+ x x))という式が返す値をインスペクトすることはできる。 SLIMEのREPLなら、最初か最後の括弧の上、slime-modeのバッファなら、 その式の直後でC-c Iすれば、 > Inspect value (evaluated): (lambda (x) (+ x x)) って表示される。Enter押すとインスペクタに入ってゴニョゴニョできるよー。 色んな所で試してみると楽しいぜー。 >>578 お前優しいな。
572 名前:デフォルトの名無しさん mailto:sage [2011/12/10(土) 18:22:05.97 ] ちょっと訂正。 「CLOSオブジェクトをwriteで」→「オブジェクトをwriteで」
573 名前:デフォルトの名無しさん [2011/12/10(土) 23:15:47.81 ] いま皆既月食中だお! お空を見てみ
574 名前:デフォルトの名無しさん mailto:sage [2011/12/10(土) 23:53:43.96 ] みたお!
575 名前:デフォルトの名無しさん mailto:sage [2011/12/11(日) 13:42:10.26 ] paip3章の演習3.6で、 let形式の値が (LOCAL-A LOCAL-B LOCAL-B GLOBAL-A LOCAL-B) となるのですが、このうちglobal-aになる理由が分かりません letの(a ' local-a)の影響を受けてlocal-a になるのかと思ったのですが、そうないのは何故なのでしょうか
576 名前:デフォルトの名無しさん mailto:sage [2011/12/12(月) 01:52:31.15 ] >>575 89ページのsymbol-valueの説明を見ること. (symbol-value 変数)でスペシャル変数の現在の値を取得する。 レキシカル変数じゃないよ
577 名前:デフォルトの名無しさん [2011/12/12(月) 07:50:42.44 ] ubunto11.04 sbcl slimeでなぜかmapがエラーになるのは 何故でしょうか
578 名前:デフォルトの名無しさん mailto:sage [2011/12/12(月) 08:54:50.86 ] >>577 詳しく。コードとエラーメッセージなど。
579 名前:デフォルトの名無しさん [2011/12/12(月) 10:13:20.36 ] (let ((myA (make-array 3 :initial-contents '(1 2 3)))) (map 'array #'(lambda (myX) (+ myX 5)) myA)) ARRAY is a bad type specifier for sequences. [Condition of type SIMPLE-TYPE-ERROR] Restarts: 0: [RETRY] Retry SLIME REPL evaluation request. 1: [ABORT] Return to sldb level 6. 2: [RETRY] Retry SLIME REPL evaluation request. 3: [ABORT] Return to sldb level 5. 4: [CONTINUE] Continue from break. 5: [ABORT] Return to sldb level 4. --more-- Backtrace: 0: (SB-KERNEL:%MAP ARRAY #<FUNCTION (LAMBDA #) {AF5978D}> #(1 2 3))
580 名前:デフォルトの名無しさん [2011/12/12(月) 10:16:45.56 ] ↑>>578
581 名前:デフォルトの名無しさん mailto:sage [2011/12/12(月) 10:52:16.49 ] ARRAY is a bad type specifier for sequences. と書いてあるようだが…
582 名前:デフォルトの名無しさん mailto:sage [2011/12/12(月) 11:14:34.31 ] >>579 配列はシーケンスじゃねーです。 www.lispworks.com/documentation/HyperSpec/Body/t_array.htm www.lispworks.com/documentation/HyperSpec/Body/t_vector.htm ベクタ(1次元の配列)はシーケンス。 (map 'vector #'identity (make-array 3 :initial-contents '(0 1 2))) ;=> #(0 1 2)
583 名前:デフォルトの名無しさん mailto:sage [2011/12/12(月) 13:22:01.17 ] >>582 小学3年生ぐらいでもsbclを使うようになったのか。なんかすごい時代になったなあ。 >>579 ご両親に英和辞書の引き方を習うとLispの勉強がはかどるよ
584 名前:デフォルトの名無しさん [2011/12/13(火) 00:09:59.48 ] ありがとうございました。
585 名前:デフォルトの名無しさん [2011/12/14(水) 10:38:08.67 ] common-lisp.net/project/commonqt/
586 名前:デフォルトの名無しさん mailto:sage [2011/12/14(水) 16:15:21.01 ] >>585 Qt4.7でもつかえるのかな?
587 名前:デフォルトの名無しさん mailto:sage [2011/12/14(水) 20:50:42.23 ] APIが劇的に変わってなければ使えるように見える。 QtもCommonQtも使ったことないけど。 例によって、C++とCFFIを橋渡しするC++コードと、 その上で動作するLispコードの構成って感じ。
588 名前:デフォルトの名無しさん mailto:sage [2011/12/15(木) 21:55:52.02 ] apacheのmod_lispでsbclが使える無料鯖ってどのくらい需要があるのかな? 電気代やセキュリティとかを気にせずWeb開発できるとlisperとしてはうれしいよね。 LTSが長くて管理しやすそうなのはCentOSだけど、ユーザが自宅のPCローカルで同じ 環境を作りやすいのはUbuntuなんだろうなあ。
589 名前:デフォルトの名無しさん mailto:sage [2011/12/15(木) 22:48:35.57 ] >>586 前に見た時は、commonqtはQt smokeっていうC言語用のラッパーを通してcffiで 実装されていたと思うので、Qt smokeがQt4.7に対応している必要があると思う
590 名前:デフォルトの名無しさん mailto:sage [2011/12/15(木) 23:56:19.93 ] >>588 無料鯖とかは嬉しいと思うけど、最近だとIaaSで好き放題できるから、 あんまり需要ないかも。CCL使えるPaaSとかも出てきたみたいだし。 お金ない学生とかは嬉しいかもしれないけど。 一昔前と比べると、この手のサービスも信じられないくらい安くなったよね。
591 名前:デフォルトの名無しさん mailto:sage [2011/12/16(金) 01:13:44.82 ] >>590 その激安IaaSサービスを具体的に教えてくれ。 PaaSもググったけど出てこないんだけど教えて。
592 名前:デフォルトの名無しさん [2011/12/16(金) 01:16:04.75 ] 板違い toro.2ch.net/hosting/
593 名前:デフォルトの名無しさん mailto:sage [2011/12/16(金) 01:44:24.18 ] >>591 IaaSなら さくらのクラウド cloud.sakura.ad.jp/ CloudCore www.cloudcore.jp/ とか。月\1500〜\2500程度。普通に安いよね? PaaSは、自分が知ったのはこれ経由。 www.fluxflex.com/library/101 プリインストールかと勘違いしてたけど、 処理系のバイナリも含めてアップロードする模様。 動作はするみたいだよ。
594 名前:デフォルトの名無しさん mailto:sage [2011/12/16(金) 03:12:00.72 ] >>593 こういうのがあるんだね。 でも、大学生以下だと高いよ。 ビジネス用途じゃないものはリーズナブルコースでワンコイン以上取ってはダメだと思うんだ。 一般大学生の場合(大学生一人暮らしって少なくなったらしいけど) 光回線・プロバイダ代(7,000円)とケータイ代(3,000円)で10,000円。そこに2,000円はきつい。 実家・高校生の場合 光回線・プロバイダ代(7,000円)は親に丸投げできて免除できるだろうけど、ケータイ代(3,000円)は 全額親が払ってくれるか怪しいし、ケータイが必須になってしまった高校生のこづかいっていくらよ。 そこに2,000円はきつい。 ちなみに自分の高校3年生のときのこづかいは3,000円だったよ。両親の年収合わせて1,000万円はあった 一応中流世帯。まだネットもなくポケベルが流行り始めた頃でケータイ所持必須の同調圧力がなかった 頃の話だ。
595 名前:デフォルトの名無しさん mailto:sage [2011/12/16(金) 07:17:41.31 ] 働けよ。同世代だが普通にコンビニでバイトして、小遣いはゼロだったわ。
596 名前:デフォルトの名無しさん mailto:sage [2011/12/16(金) 10:49:27.99 ] そもそも高校生以下にどれほど需要があるのか あとスキル持ってる学生はお金に困ってないんじゃ
597 名前:デフォルトの名無しさん [2011/12/16(金) 15:03:26.84 ] 既存のxmlをcommon lispで書き換えるつまり処理した結果を上書き保存するというスクリプトを作成したいのですが、 うまくいきません <?xml version="1.0" encoding="utf-8" ?> <!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.0//EN" "www.oasis-open.org/docbook/xml/4.0/docbookx.dtd "> <article> <articleinfo> <title>test</title><author>my @@@name!</author> </articleinfo> <section id="rrr"> <title>test1</title> <p>hoge@@@foo</p> <pre>haao@@@u</pre> </section> </article> このxmlのpとpreの@@@をpiyoに書き換えたいのですが common lisp のxml parser である cxml を使おうとしたら "URI scheme :HTTP not supported" とエラーメッセージが表示されます common-lisp.net/project/cxml/quickstart.html#id54163 の "Can I skip loading of DTDs entirely?"どおりにやってみたのですが、 それをもとにどうすればリストを取得できるのか書いていないためわかりません cxmlで(恥ずかしながら)処理できないなら他のライブラリを活用しようと思うのですが pとpreの要素に限定して@@@を書き換える処理におすすめのものはありますか
598 名前:デフォルトの名無しさん mailto:sage [2011/12/16(金) 18:36:35.62 ] quicklisp.lispは使っている? httpもローカルファイルも両方できたよ。 (let ((uri "www.oasis-open.org/docbook/xml/4.0/docbookx.dtd ") (pathname "dtdexample.dtd")) (flet ((resolver (pubid sysid) (declare (ignore pubid)) (when (puri:uri= sysid (puri:parse-uri uri)) (open pathname :element-type '(unsigned-byte 8))))) (cxml:parse-file "hoge.xml" (cxml-dom:make-dom-builder) :entity-resolver #'resolver))) parse関連をまったくやったことないがttp://common-lisp.net/project/cxml/quickstart.htmlをもう一回頭からやり直して それから自分のやりたい処理に取り組んだらどうかな。このページをさらっと読みながらcxmlを触ってみたけどcxmlで十分 なんじゃないのかな。軽くググった感じだけどかなりメジャーなライブラリの部類みたいだし。 目的の処理ができたらcxmlのインプレッションを教えてくれや。 がんばって。
599 名前:デフォルトの名無しさん mailto:sage [2011/12/17(土) 00:15:05.42 ] >>598 ありがとうございます 改めてやってみたらただしく動きました。 ですが、make-xmls-builderからリストを生成して操作しようとするとちょっと扱いづらいことがわかりました こうなります ("article" NIL " " ("articleinfo" NIL " " ("title" NIL "test") ("author" NIL "my @@@name!") " ") " " ("section" (("id" "rrr")) " " ("title" NIL "test1") " " ("p" NIL "hoge@@@foo") " " ("pre" NIL "haao@@@u") " ") " ") ここで一旦s-xmlを使ってみたら使いやすそうな形式のリストを得られました (:|article| (:|articleinfo| (:|title| "test") (:|author| "my @@@name!")) (:|section| (:@ (:|id| "rrr")) (:|title| "test1") (:|p| "hoge@@@foo") (:|pre| "haao@@@u"))) ただこれをどのようにして書き換えるかがよく分からないので 本を読み直してみます
600 名前:デフォルトの名無しさん mailto:sage [2011/12/17(土) 02:52:55.63 ] >>597 >>599 common-lisp.net/project/cxml/quickstart.html#id54163 paste.lisp.org/display/126526 普通にDOMれば良いと思う。あるいはSTP。 Closure XML以外だとXMLSが軽いし使いやすくて好みだけど、 検証できなかったり、エラーハンドリングが終わってる欠点がある。
601 名前:デフォルトの名無しさん mailto:sage [2011/12/17(土) 03:40:37.45 ] >>599 >>336 で出ているcl-ppcreで後は置換するだけじゃないの。 ttp://weitz.de/cl-ppcre/#splitting 軽い疑問なんだけどregexを使わない低レベルな検索・置換等の文字列処理関数群ってないの? ググるとcl-ppcreばかり出てきちゃうんだよなあ。 あとまた別の話で低レベルな検索・置換等の文字列処理のみ(日本語不可)だったらライブラリ不要で 100行未満で書けないかね。非lisperに極力ライブラリをインストールさせない方が動かす敷居は 低くくなるよね。
602 名前:デフォルトの名無しさん mailto:sage [2011/12/17(土) 06:10:32.50 ] どうでもいいな。
603 名前:デフォルトの名無しさん mailto:sage [2011/12/17(土) 10:27:17.59 ] >>601 ツリーの一部を書き換える方法が分からないんだと思うけど。 文字列処理は、それが好きならsearchでもreplaceでも好きにやれば良いよ。 (let* ((string "The quick brown fox jumps over the lazy dog") (from "fox") (to "tiger") (pos (search from string))) (if pos (let ((before (subseq string 0 pos)) (after (subseq string (+ pos (length from))))) (concatenate 'string before to after)) nil)) 何でHyperSpecとかCLtL2読まないの? 速度が必要でBMHとかQuick Searchを自前で実装、とかならまだしも、 よく分からん敷居のために既存のライブラリをインストールせず、 俺ライブラリを作ろうとか最早ギャグ。Quicklispで一瞬じゃん。
604 名前:デフォルトの名無しさん mailto:sage [2011/12/17(土) 12:51:40.03 ] >>603 糞lisperだけどツリーの一部を書き換えるのは難しそうだけど、最悪力技でもできそうな感じかな。 HyperSpecをみてみたけどみつけられなかった。もの凄く真剣に探したわけではないから軽い疑問と 書いた。 adsfよりはQuicklispは使いやすいし信用しているけど、ライブラリがあれば99%以上の精度で落とせて 使えたっけ。 あと一応ベータとしているのもあるけどミラーもないもまだないよね。どうしても非lisperに対してQuicklispを 使わせるのも大掛かりな気がしてならないんだよな。あと何かの処理をさせるツールが欲しいときにLisperの ブログに引っかかってソースが載っていてもメジャーなライブリについては触れられていないでしょ。ライブ ラリ揃えるべく素早くQuicklispに辿りつけるかね。 まあ、そういうのはCommonLispに求めずにPythonとかに任せておけばいいんじゃないというのもあるけどさ。 そういうところがCommonLispの普及を阻害しているなあと個人的に思う。 ttp://www.unixuser.org/~euske/doc/python/python-lisp-j.html の表の赤字で書かれているパッケージ /モジュールは使いづらい(Harder to use)、GUI, Web などのライブラリは標準なしは解決された? Japanese Translation Changes:公開。(2002/10/13)と書かれているから原文は2000年頃なのかな。 とりあえずGUI, Webなどのライブラリのデファクトスタンダードが決まっているならPythonの標準ライブラリと 呼応する形で改めて示した方がわかりやすいし利用しやすいのかな。"CLikiをみて好きなの選んでね。"は乱暴 過ぎでしょ。 デファクトスタンダードを(一応、合意の下)ちゃんと定義するとは違うけど、CLikiにアマゾンのレビュー システムみたいなのがあれば玉石混交から適切な玉を選べそうだけど。
605 名前:デフォルトの名無しさん mailto:sage [2011/12/17(土) 14:51:56.26 ] >>604 まあ、いつもの人だって文章から滲み出る雰囲気で分かるけど。 その99%っていうのはどこから来た数字なのかな? 何か意味がある? Amazon S3がバックエンドだそうだから稼働率の保証は99.9%らしいけど、 そんなのは本当にどうでも良い気がするよ。 Quicklispが大がかりなら、PerlやRubyではCPANやRubyGemsを使わないし、 LinuxやWindowsでもパッケージシステムを使わないで過ごしてるの? 自分ですべてのライブラリを開発して保守する方が敷居が低いと本当に思う? 批判のための批判になっていないか? より具体的に何をどうして欲しい? ちなみに、日本語でのライブラリの紹介とか、Pythonライブラリの実装とか、 CLikiでのお勧めライブラリ紹介とか全部すでに存在自体はあったりする。 無論「初心者には」CLikiを見ろで済ませないよ。知ってれば案内すると思う。 ただ、Lispのここが、って語ってる人、別に初心者じゃないよね。
606 名前:599 mailto:sage [2011/12/17(土) 15:53:00.46 ] >>600-601 ありがとうございます。 >>600 のxmlsとxmlの両方の例を示してくださり勉強になります (木構造を渡り歩くwalkerがとくに)
607 名前:デフォルトの名無しさん mailto:sage [2011/12/17(土) 17:16:33.39 ] >>605 99%の数字はあんまり意味はない。そのくらいの精度・品質ならユーザーとしては困らないし、我慢できる範囲 だろうなあと思っているだけ。 > Quicklispが大がかりなら、PerlやRubyではCPANやRubyGemsを使わないし、 > LinuxやWindowsでもパッケージシステムを使わないで過ごしてるの? Linuxに軽くでも腰をすえている人ならaptやyumでパッケージシステムを使う人が多いでしょうよ。aptやyumでライブ ラリを落とせるなら落とすだろうけど、非Perler,非RubyistがCPANやRubyGemsを使うかな。処理系に標準 パッケージシステム(山)があるなら使うって体ができている人(登山家)の考え方じゃないの。 > 自分ですべてのライブラリを開発して保守する方が敷居が低いと本当に思う? そんなこと言っていないよ。変な曲解はやめてくれ。 ようするに"Pythonの標準ライブラリが便利そうだな。ブログでチラシの裏コードを書いて非Pythonistが 容易に動かせるってうらやましい"って話だな。 > ちなみに、日本語でのライブラリの紹介とか、Pythonライブラリの実装とか、 > CLikiでのお勧めライブラリ紹介とか全部すでに存在自体はあったりする。 一部の人に流通してもしようがないと思うんだけど。 Lispコミュニティ維持・拡大のための仕掛けや仕組み自体が良くないんじゃないのではないのかという疑念が 生まれてきた。一般Lisperが道にゴミを捨てない・落ちているゴミ拾うぐらいのことで自然と規模の維持が できて、ちょっとした風が吹けば拡大していくような状況ってできると思うし、そのくらいのポテンシャルを 持っている言語でしょ。非Lisperは道にゴミを捨てなければ落ちているゴミを拾うことなんてしなくていいし、 楽しんで使ってくくればいい。 あとリンクのページは駄文じゃないのでざっとでも読んで欲しいね。
608 名前:デフォルトの名無しさん mailto:sage [2011/12/17(土) 17:20:01.89 ] Rubyはディストロのパッケージングシステムで入らないライブラリが多いとですよ
609 名前:デフォルトの名無しさん mailto:sage [2011/12/17(土) 19:22:44.19 ] >>607 毎度思うんだけど、独自の自分だけに通じる数字持ち出すの止めようよ。 >>601 の「低レベルな 」の段落とか、まさに車輪の再発明の推奨なんだけど、これも曲解? 既にある程度評価されている、整備されたライブラリがあって、入門者がそれを知らないなら、 使うように導きこそすれ、同等のものを新規に書きましょう、なんて普通言わないでしょうよ。 最近ようやっと、まともに動くパッケージマネージャ(Quicklisp)も出てきた状況で。 あとね、疑念がどうこう言うなら実際に動いてみなよ。実際に日本語の情報を書いたり、 処理系の機能向上のために寄付したり、イベントに参加したり、布教して盛り上げたり。 どうも、今いる人たちが無関心で努力してないように思いたくて仕方ないみたいだけどさ。 一気にドラスティックに変えたりなんて、そうそうできないんだよ。一歩ずつ進むしかない。 一部の人にのみ知られている状況なんて百も承知で、改善するために動いてる人もいる。 君がそういう活動に本当に協力してくれるなら、どこでも歓迎されると思うよ。 本気でやる気があるならその原動力になって欲しい。これは煽り抜きで。 最後に、Lispに関する文書なんてお決まりなんだから、大抵のLisperは読んでると思うよ。 NorvigとかGarret(Gat)とか。pgのエッセイへの反応とかね。問題があるのは知ってる。 だからって、一気にそれを改善とかできないんだよ。魔法の杖なんてない。
610 名前:デフォルトの名無しさん mailto:sage [2011/12/17(土) 20:16:05.17 ] ブログを参考にするのは分かっているときにするべきだと思うなあ。 推奨ライブラリは www.cliki.net/Current%20recommended%20libraries
611 名前:デフォルトの名無しさん mailto:sage [2011/12/17(土) 21:07:37.55 ] cl-ppcreで改行を取り除くにはどうすればいいでしょうか
612 名前:デフォルトの名無しさん mailto:sage [2011/12/17(土) 21:45:57.32 ] >>611 (ppcre:regex-replace "\\n" (format nil "~%") "") ;=> "", T (ppcre:regex-replace "\\n$" (format nil "a~%") "") ;=> "a", T
613 名前:デフォルトの名無しさん mailto:sage [2011/12/17(土) 22:06:59.31 ] >>610 こんなページがあるんだね。これが欲しかったのよ。いつもCLikiはある処理のカテゴリの 雑多な紹介ページをみていたわ。サンクス。 あとブログって俺がリンクしたページのこと? リンクしたのは作者のページだし、CLikiから飛んでそこに行ったんだけど注意するなら ちゃんとリンクチェックして書き込んで欲しいなあ。ゴミを拾っているつもりなんだろうけど、ゴミを散らか してなおかつ昼食に食った弁当と飲み物をポイ捨てしているようでは世話ないよ。あとこれだけライブラリ 提供しているんだから超有名人なんじゃないの。自分は今知ったけど。 あとアンカーをちゃんと付けろよ、バカ。アンカーの付け方がわからないなら半年ROMれ。 610が求める2chのCLスレが道にゴミだらけで誰も拾わないスレを望むならそういう振る舞いもかっこいいし、 リソース食いつぶして、玉石混交の2chで玉を弾き、悪貨が良貨を駆逐して焦土化して入門者を路頭に迷わせて 他の言語の扉を叩かせるのもありだろうなあ。 正しくアンカーをつける。反論するときはリンクをチェックする。これだけを教えるためにこのくらい言わない とわからんのだろ。lispをちょっとかじって頭を働かせればどういう行いが良くて、どういう行いが悪いかなんて わかるだろ。歳を重ねればもっと鮮明になるしな。 ttp://weitz.de/ CHUNGA - Portable chunked streams for Common Lisp. [1.1.1 / 2010-05-19] CL-DONGLE - A Lisp interface to SG-Lock dongles. [0.1.2 / 2008-05-01] CL-INTERPOL - String interpolation for Common Lisp. [0.2.1 / 2008-07-25] CL-PPCRE - Portable Perl-compatible regular expressions for Common Lisp. [2.0.3 / 2009-10-28] CL-UNICODE - A portable Unicode library for Common Lisp. [0.1.2 / 2011-08-31] CL-WHO - Yet another Lisp markup language. [0.11.1 / 2008-03-28] DRAKMA - A Common Lisp web client. [1.2.4 / 2011-08-31]
614 名前:デフォルトの名無しさん mailto:sage [2011/12/17(土) 22:08:54.39 ] 「僕は無能です」まで読んだ
615 名前:610 mailto:sage [2011/12/17(土) 22:23:58.96 ] >>613 ブログについては、ブログは間違いや迂遠な方法を紹介していることも多いという、自分の所感から。 アンカーについては、書き込み以前の流れ全体に対してレスしたつもりで、 具体的にどのレスに対するものかは考えてなかったので。
616 名前:デフォルトの名無しさん mailto:sage [2011/12/17(土) 22:26:35.96 ] 何の議論してるのか傍目には全くわからんのだが。二人とも、もっと簡潔に書いてくれよ。
617 名前:デフォルトの名無しさん mailto:sage [2011/12/17(土) 22:37:38.60 ] 俺:「Quicklispマンセー。あと、個人でコツコツ布教頑張ってる人いるんだから、 あんま文句言うのやめね? 自分が上手くできるというならやってみたら」 を、煽りつつ。何かよく分からん理由でQuicklispとか諸々disられたからイラッときて。 前から何かヌーディストビーチとか色々変に絡まれてたフラストレーションも含めて。 はてなのCLの人とかおにぎりの人とか、ILCの関係者とか色々頑張ってんのにさー。
618 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 00:01:47.78 ] #1:すぐに話の風呂敷を広げる #2:よく理解しないまま突っ走る #3:嫌われていると勝手に思い込んでいる #4:キレて他人に八つ当たりする #5:やたらと自分の正当性を主張する #6:何も自分で決めない #7:何かにつけて理屈をこねる #8:やたら褒めてほしがる #9:他人の話を聞かない #10:何が言いたいのかわからない japan.zdnet.com/sp/feature/07tenthings/story/0,3800082984,20421237-2,00.htm
619 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 01:04:06.54 ] >>612 ありがとうございます。\nでうまく処理できないと思いましたが \\nだったのですね
620 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 01:15:23.70 ] >>618 初めて2chで勉強になった情報だわ ありがとう
621 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 01:23:32.98 ] 肩の力を抜けよ
622 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 01:36:45.48 ] >>615 ブログ参照うんぬんはテンプレ案としてはっきり出せよ。言葉足らずで全然わからんよ。 ネットの先には生身の人間がいるんだよ。ちゃんと3回読んで、自分の伝えたい相手に明確に宛てて、 違う意図として取られないか、言葉足らずじゃないかとかちゃんと判断している? >>617 団体で動いている人は良いけど。個人でがんばるのは限度があるんじゃないの。もちろん、複数で まとまって活動するってもの凄く難しいことなんだけど。 "誰々が頑張ってんのにさー。"とチャチャ入れて日本Lispコミュニティ自体について議論させない流れって 意味があることなの?
623 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 02:00:21.22 ] >>609 98.56%と小数点入っていないんだから何かの引用でないってことぐらいわかるでしょ。あと具体的なソースがある なら貼るし、品質・安定性・信頼性が高い、割と高いと抽象的に表現しても自分のイメージを具体化することを 怠っているし、相手になんとなくわかるようで実際の所は頭の中に具体化した数字のイメージの違いなんてすごく 開きが出てきそうで伝わらんし、議論も進まないでしょ。自分の認識の違いが間違っているなら訂正されて誰もが 異論を唱えなければ合意の下の仮定の数字になって、それを土台に議論もできるでしょ。 あと具体的な数字持っているならその情報集積群の場所を教えてよ。 > >>601 の「低レベルな 」の段落とか、まさに車輪の再発明の推奨なんだけど、これも曲解? 純粋にreplaceの存在を知らなかった。コーヒータイムついでにHyperSpecを目視のみで探したんだけどみつけられ なかった。emacs lispのinfoは通しでやったけど、CLは処理テーマごとに広く漁って勉強している。 > どうも、今いる人たちが無関心で努力してないように思いたくて仕方ないみたいだけどさ。 そうは言っていないよ。示したPythonとLispの比較のページは2002年だけどそのの頃はrubyの方がメジャーで Pythonはまだまだって感じだったでしょ。Lispについて関心がなかったのでどういう状況だったのか、よくわから ない。 ページが翻訳されて、問題意識として共有されて、Lispコミュニティで各人が労力を割いて反映されて活動したわけ だよ。それで約9年経った現在があるわけで今の仕掛け・仕組みで活動すれば最悪現状維持できて、風が吹けば拡大 していきそうなの? 日本のLispコミュニティ、それより小さい東京のLispコミュニティでもいいから今までの 仕掛け・仕組みを根本から疑って展開していった方が良いんじゃないのかな。一般Lisperは道にゴミを捨てない・ ゴミ拾い・あとそれに毛が生えたことぐらいしかできないよ。その一般Lisperのゴミ拾いリソースを的確な仕掛けに よって自然と効果的な場所に集めて、効果的なゴミ拾いをさせる。もちろん、コミュニティだから強制力はないし、 誰かが統制的に管理・運用するのも変な話だしね。そうは言ってもLispコミュニティコミットしていて拡大に異を
624 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 02:06:16.23 ] >>623 >あと具体的なソースがある なら貼るし つまり裏付けのない主観が出した数字で傾向を語ったのか? 莫迦なの?
625 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 03:45:53.40 ] >>609 つづき 唱える人はいないと思うし、Lispコミュニティ拡大のためならもう少し踏み込んで色々と議論すれば問題意識が鮮明に なって共有されて軽い強制力(緊張感)を伴う合意も得られて、もっと効果的な活動ができるんじゃないのかな。地味な 話だけど便利なネット本屋でLisp関連の本は注文せずに自分が住んでいる最寄りの大きい本屋で注文するとか。図書館に Lisp本を買わせるとか。多言語コミュニティとの比較して、無いモノ探しばっかりしていないか疑い、有るモノ探しを 怠っていないか、疑うべきだと思う。労力・お金も低コストで効果的な方法って探せばいっぱいあると思うよ。ネットが 普及してまだ法的な縛りもきつくない創世記なんだから創世記世代として仕組み・仕掛けを真剣に考えて、真剣にゴミ 拾おうよ。それで仮にLispコミュニティ自体がなくなるなら自分にも説明がつくし、後世の人に説明もつくでしょ。 あと日本においての将来のネットの法規制やプログラミング規制についてもLisp団体はちゃんと議論して声明出すとかね。 言語コミュニティ以前に10年後ぐらいに変なこじつけで重規制されたら暗黒時代に突入しかねないし。 あと一気にドラスティックに変える、変わりたいなんて思っていないよ。これからの9年とその先の9年で18年間で何が できるかって話だし、何をするかって話でもある。 おわり
626 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 10:53:21.52 ] >>622 別に日本のLispコミュニティ自体の議論をしたいなら、すれば良いと思う。 例えば、こういう情報へのアクセスが悪いから、こうしませんか、とかなら、 じゃあこういう形で協力するよ、とかなるじゃない。 それを、具体的な対案を出さずに、以前から指摘されている欠点の指摘だけされても、 言うは易しだ、みたいに言いたくもなるよ。それもかなり上から目線だし。 茶々を入れたかったわけじゃなく、頑張ってる人は見てあげてよって言いたいだけ。 あとは、個人で頑張るのは限度があるのはもちろん事実だと思うんだけど、 多くのコミュニティを支えてるのもまた、個人の色々な形での努力なわけで。 団体と個人は車の両輪みたいなものなんだと考えてる。
627 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 10:59:21.90 ] >>619 良かったら、見てみてー。 tips.lisp-users.org/common-lisp/index.cgi?CL-PPCRE cl.cddddr.org/index.cgi?CL-PPCRE 上の方は単なる例の羅列で申し訳ないんだけど、種類は色々書いてあるから。 あとは、これが足りないとか知りたいとかあったら教えてください。
628 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 11:14:37.44 ] >>627 ありがとうございます。既知の注意点だったのですか。 失礼しました。
629 名前:デフォルトの名無しさん [2011/12/18(日) 20:05:39.81 ] cl-ppcreの質問です 非ASCII CODE文字間の空白を _ に変えようとして正規表現を (?=[^\x00-\x7f]) (?=[^\x00-\x7f]) に、置換文字列を _ としたら"a b c"には予想通りヒットしなかったのに"a あ"ではヒットしてしまいました "a あ"のように空白を挟んでいる文字の一方がASCII文字ならヒットさせたくないのですが 修正する箇所をご教示ください
630 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 20:26:19.91 ] >>629 "(?<=[^\x00-\x7f]) (?=[^\x00-\x7f])" でどうだ。
631 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 20:52:45.89 ] >>630 (ppcre:parse-string "(?<=[^\x00-\x7f]) (?=[^\x00-\x7f])") ;=> (:SEQUENCE ; (:POSITIVE-LOOKBEHIND (:INVERTED-CHAR-CLASS #\x #\0 (:RANGE #\0 #\x) #\7 #\f)) ; #\ ; (:POSITIVE-LOOKAHEAD (:INVERTED-CHAR-CLASS #\x #\0 (:RANGE #\0 #\x) #\7 #\f))) になっちゃうんで、エスケープ必要。 (ppcre:regex-replace-all "(?<=[^\\x00-\\x7f]) (?=[^\\x00-\\x7f])" "a b あ い" "_") ;=> "a b あ_い", T
632 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 22:32:47.97 ] どうもです。ばっちり動きました。
633 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 23:12:34.49 ] >>626 > それを、具体的な対案を出さずに、以前から指摘されている欠点の指摘だけされても、 > 言うは易しだ、みたいに言いたくもなるよ。それもかなり上から目線だし。 言うは易しって簡単に使っているけどなあ。日本Lispコミュニティで既に共有済みの指摘 されている欠点をまとめてくれよ。 人間に敬意を払うのは当たり前として議論において神経症的に上から目線うんぬんを 持ち出すことに意味があるの? 議論させてないために文句言っているようにしか聞こえない。 9年後の今についてどう捉えているの? 方向性・方策は失敗だったのか、成功だったのか、 それらへんをはっきりさせて、もう一回議論しても有意義だし、勝手連で適当にやれば いいよという結論でリソースを食いつぶしていくのもありだと思うし。 > 多くのコミュニティを支えてるのもまた、個人の色々な形での努力なわけで。 > 団体と個人は車の両輪みたいなものなんだと考えてる。 もちろんそうだと思うし、協調し合って拡大に向かえるのかは怪しい。でも、議論して 問題意識を共有して、もの凄く良い方策はみつらないかもしれないけど、その議論の後に いいアイデアが思い浮かぶ場合もあるし、問題意識を共有したおかげで個人の行動が ちょっと変わったりするし、誰かと組んでおもしろいことしようと声かけやすくなったり、 次の議論に自然と移れるわけだし、議論したことによるマイナス要素ってないと思うん だけどね。 自分は地方出身者で東京に出てきたけど、東京にいればある程度イベントがあるから 居心地良いけど、地方だとオフ会なんてしにくいし顔をつき合わせた情報の共有化って できないよね。オンラインでやりとりするのがメインだけど、オフラインのやりとりも 軽くカバーしないとLispから離れていくんじゃないのかなと漠然と思っている。 あと学校のパソコン部の担任の教師が軽いLisperとしてその地域にコミュニティがない んであればLispを推すのは難しいよね。無難な言語になりそうだよね。
634 名前:デフォルトの名無しさん mailto:sage [2011/12/19(月) 00:38:52.80 ] Learn to code | Codecademy www.codecademy.com/#!/exercises/0 このサイトのcommon lisp版が出来れば 普及にスピードが出ると思う common lispの開発環境を整えるだけで息切れする人もいるだろうから
635 名前:デフォルトの名無しさん mailto:sage [2011/12/19(月) 07:05:48.15 ] >>634 Lispboxがあるよ。(Linux/Windows/Mac対応)
636 名前:デフォルトの名無しさん mailto:sage [2011/12/19(月) 15:39:51.25 ] lispboxなんてものがあるのか 知らなかったわ
637 名前:デフォルトの名無しさん mailto:sage [2011/12/19(月) 16:35:32.74 ] >>636 windowsなら、lispboxそのまま落して使うってのの他に、gnupackにslimeを導入するってのもいいよ。 「gnupack slime」で検索すると出るよ。 gnupack gnupack.sourceforge.jp/docs/latest/UsersGuide.html gnupack + NTEmacs23 で SBCL/SLIME aikotobaha.blogspot.com/2010/08/gnupack-ntemacs23-sbclslime.html ubuntulinuxなら、slime導入で勝手に構築されるけど、ubuntu11.10は要注意。 そのままだとslimeが起動できない。 ホームディレクトリに.sbclrcというファイル作って(require 'asdf)と書き込むと起動できるようになる。 d.hatena.ne.jp/ddk50/20111028 を見付けるまで、悩んだ。
638 名前:デフォルトの名無しさん mailto:sage [2011/12/19(月) 21:42:42.37 ] >>637 つか, Linux のパッケージシステムってディストリに関わらず ドキュメント類が別扱いのやつ多すぎ ドキュメント類まで有無を言わさずつっこむ bsd 系のパッケージシステムの方がありがたい
639 名前:デフォルトの名無しさん mailto:sage [2011/12/19(月) 21:50:38.85 ] >>638 パッケージをつくるときに、 バイナリパッケージはアーキテクチャごとに、 バイナリ以外はどのアーキテクチャでも使えるようにしてるから。 HDDの容量の関係もあるのかな。 一応依存関係があれば一緒にインストールもしてくれるはず。
640 名前:デフォルトの名無しさん mailto:sage [2011/12/19(月) 21:57:54.45 ] >>639 依存関係が切れてるやつ多すぎ あるいは、 *-devとかに依存してたりして --without-dev とかのスイッチつけなきゃフルインストール ってな、ノリの方がありがたい
641 名前:デフォルトの名無しさん mailto:sage [2011/12/19(月) 22:01:07.76 ] 他所でやれ、アホが。
642 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 00:11:10.60 ] apt-getとaptitudeの違いを語るスレと聞いて
643 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 14:00:11.39 ] emacs23+clisp+slimeの環境でcommon lispやってるんだけど 入力するとこの>より前がBreak 1 SWANK-LOADER[2]>ってなってるんだが これだと何かまずいのかな? みんなCL-USER>ってなってるみたいなんだが
644 名前:デフォルトの名無しさん [2011/12/20(火) 15:25:34.48 ] lispboxのwindows版を落としたはいいものの インストール方法がわかりません;
645 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 16:41:50.55 ] >>644 公式ページを辞書片手に訳せ
646 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 16:42:53.92 ] >>643 多分、起動時に何らかのエラーが出てると思われるので、 *inferior-lisp*バッファで出力を確認することを勧める。 >>644 ファイルを展開したら出てくるlispbox-0.7を適当な場所に放りこんで、 その中のlispbox.batを実行でハッピー。
647 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 17:34:44.51 ] >>646 ありがとうございます!
648 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 01:19:08.23 ] CCLとsbclで自身のファイル(test.lisp)のファイル名を取得するには どうすればよいでしょうか?
649 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 01:59:41.07 ] >>648 compile-file前提なら (defvar *file* #.*compile-file-pathname*) でいける気がするけど、REPLとは相性が悪いと思うので、お勧めしない。 具体的にはどういうことがしたいの?
650 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 02:31:49.09 ] >>649 自分のファイル名に.exeをつけたパスで 実行ファイルを作成しようとしました test.lisp->test.lisp.exe hoge.lisp->hoge.lisp.exe こういう風にです
651 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 12:04:40.92 ] >>650 save-applicationとかsave-lisp-and-dieは実行すると処理系が終了するけど、 その辺りの考慮は大丈夫? その辺はばっちり考慮していて、インタラクティブに評価するときに注意するなら、 ある種のkludgeとして>>649 を使えば良いと思う。自分は他の方法は思い付かない。 そのアプリケーションの詳しい機能が分からないので何とも言えないけど、 あるいは、makeで拡張子を利用したルールでビルドした方が楽かもしれないよ。
652 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 12:17:25.65 ] >>651 >あるいは、makeで拡張子を利用したルールでビルドした方が楽かもしれないよ。 その手を考えていませんでした。ご指摘ありがとうございます。
653 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 02:56:58.14 ] Common Lispの勉強に役立つサイトでおすすめのところを教えてください。 clispを入れて、カーとクダーは覚えました。他にどんな関数があるか知りません。 末尾再帰とか以前に再帰がわかりません。CLOSに興味があります。
654 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 03:17:56.14 ] >>653 www.geocities.jp/m_hiroi/index.html あとはこのスレのテンプレとか見て
655 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 07:33:27.39 ] >>654 ありがとうございます。参考にさせていただきます。
656 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 19:37:27.23 ] 指定したファイルの更新時刻を変更するにはどうすればよいのでしょうか 取得するのは file-write-date でできましたが 任意の時刻に書き換える方法がわかりません
657 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 20:03:07.29 ] SBCL@UNIXならsb-posix:utimes
658 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 20:09:07.78 ] >>656 標準ではないみたい。 rosettacode.org/wiki/File_modification_time#Common_Lisp OSのAPIにアクセスするには、OsicatかIOLibを使えばできる。 SBCLならPOSIXモジュールがあるよ。 IOLib common-lisp.net/project/iolib/ Osicat common-lisp.net/project/osicat/ 使い方分からなかったら教えて。
659 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 20:26:56.74 ] >>658 > OSのAPIにアクセスするには、OsicatかIOLibを使えばできる。 うーん
660 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 20:32:42.97 ] >>659 ごめん。表現の仕方が悪かった? POSIXのAPIにアクセスするなら、ではどう?
661 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 23:02:25.66 ] そこにutime(2), utimes(2), futimes(2), utimensat(2)があるわけ?
662 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 02:03:40.58 ] >>661 はあ? あるに決まってんじゃん、この前ソース眺めたとき確かに見たわこのボケが! と思って見返したら、どうみても俺が痴呆です本当にありがとうございました。 代わりに供物を用意したので命だけは見逃してください。 paste.lisp.org/display/126696
663 名前:656 mailto:sage [2011/12/27(火) 03:05:55.45 ] 書き忘れていました。osはwindowsでsbclです。 >>658-662 ありがとうございます。>>662 でokでした。
664 名前:662 mailto:sage [2011/12/27(火) 03:21:58.01 ] >>663 大変失礼致しました。指摘の通り、>>658 の4行目以降は嘘なので信じないでください。 また、余談ですが、Windows APIのバインディングとして、 Doors https://github.com/Lovesan/doors というDmitry Ignatievによるライブラリがございまして、 https://github.com/Lovesan/doors/blob/master/system/time.lisp に今回のような時刻関係のAPIが定義されている様ですので、興味をお持ちになったらお試しください。 というわけで、どうぞ上の恥ずかしいアレっぷりを記憶から速やかに抹消してください。 さもないと枕元に立ちます。
665 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 11:31:19.14 ] SBCLで大文字・小文字を区別する方法ってありませんか? CL-USER> (setq L '(1)) (1) CL-USER> L (1) CL-USER> l (1) 商用CLは大文字・小文字を区別すると聞くのでその処理系と互換を持たせた仕様 だとすばらしいです。
666 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 14:21:17.64 ] >>662 > (窓)paste.lisp.org/display/126696 おお、O_RDWR | O_APPENDでopenしてすぐcloseするオールドスタイル!
667 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 15:42:39.91 ] >>665 商用でなくともCLは大文字と小文字を区別する readtable-caseで検索すればいいと思う
668 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 20:39:28.46 ] readtable-caseは>>436 あたりからの話を見れば
669 名前:デフォルトの名無しさん [2011/12/30(金) 11:18:57.56 ] emacs+slimeでお インデントがうまくいかないないのですが うまくいくヒント設定方法よろしくお願いします。
670 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 11:21:41.50 ] ついこないだこんな設定を加えた (setq-default indent-tabs-mode nil) でもどううまくいかないか具体的に書いたほうがいいよ
671 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 12:44:17.22 ] indent がうまくいかないなんてあったっけ。
672 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 00:11:35.74 ] unwind-protectのformを次の行に置くとき、期待した場所より余計に下がったり、 handler-caseのインデントが狂ったりしたことは前にあったな。詳しく調べてないけど。
673 名前:デフォルトの名無しさん [2011/12/31(土) 01:28:06.63 ] >>669 ifのインデントなんですが
674 名前:デフォルトの名無しさん [2011/12/31(土) 01:35:17.77 ] >>673 ifの次が下がり過ぎるのですが
675 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 01:39:54.69 ] >>674 こうしたい、という例と、こうなる、という例を貼ってくれ。 そうすれば、もっとみんな適切に回答できる。
676 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 01:42:13.47 ] (if nil 1 2) うちはこんなんだな
677 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 01:53:00.16 ] >>676 うちもこんなんだな。 ( if nil 1 2 ) マジレスすると俺のはこんなんだが、 (if nil 1 2) もしかして、伝統的なスタイルを期待してんのかね? thenとelseを揃えないRMSの好きなあれ。
678 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 02:54:24.33 ] (if nil 1 2) これか?
679 名前:デフォルトの名無しさん [2011/12/31(土) 04:40:35.58 ] (if (test) (do こうしたいのですが (if (test) (do こうなってしまいます。
680 名前:デフォルトの名無しさん [2011/12/31(土) 04:43:00.81 ] ↑間違いましたすみません (if (test) (do こうしたいのですが (if (test) (do こうなってしまいます。
681 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 07:18:16.08 ] 言語構造よりライブラリの豊富さが実用上大事だ。 LISPとか教科書・勉強で使うくらいしかないんでは。 LISPでC#やJavaやPHPの代替できるくらいにライブラリあるのかよ。
682 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 07:34:44.41 ] そうなんだよ。だからこんな所に来なくて大丈夫だ。お疲れ。
683 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 09:38:14.04 ] >>679 これじゃだめ? M-x common-lisp-set-style Specify Common Lisp indentation style: classic
684 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 16:04:33.81 ] >>683 それってなんていう.el? M-x common-lisp-set-styleなんてないし、aprops-variableでも関連変数が引っかからないんだが
685 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 17:29:40.54 ] >>684 横からあれだけど slimeのcontribの中に入ってなかったっけ?slime-setupだかでなにかロードさせる必要があったような。 今PCの前にいないんで曖昧で間違ったこといってるかもしれないけど。
686 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 19:31:34.40 ] >>684 >>685 が書いてるように ${SLIME_ROOT}/contrib 下に入ってる slime-setup の引数で渡すとロードしてくれる うちの .emacs は以下のような設定になってる (slime-setup '(slime-fancy slime-indentation))
687 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 23:06:41.50 ] >>686 サンクス こういうのかあるのね M-X common-lisp-set-style basic classic modern sbcl
688 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 23:09:05.09 ] 皆さんよいお年を! 2012はCommon Lispが大復活することを願って。
689 名前:デフォルトの名無しさん [2012/01/01(日) 03:51:43.39 ] >>687 詳しくお願いします。
690 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 07:29:22.27 ] 去年、John McCarthy総裁が崩御されたし、今年一年は大人しくするぜ。 再来年をCommon Lispの飛躍の年にしましょう。 >>688 >>683 >>684 自分 >>685 >>686 の流れだよ。 slimeが入っていたら動くんじゃないかな。 >>685-686 のcontribは自分の環境だと/usr/share/emacs/site-lisp/slime/contrib/ のことなのかな。よくわからん。特別設定せずにM-X eval-regionして>>683 のが 動いちゃったし。classic入力の所でTabを押すと他の候補が出てくるよ。 老婆心だけど、(slime-setup '(slime-fancy slime-indentation))をマークして M-x eval-regionするとemacs lispで評価されて設定される。 navi2ch上でマークしても評価されるんじゃないかな。
691 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 23:56:10.75 ] 力尽きた。まだ追加することあったら誰かやって。 cl.cddddr.org/index.cgi?SLIME%3aslime-indentation
692 名前:デフォルトの名無しさん [2012/01/03(火) 01:56:05.82 ] ↑ありがとうございます。
693 名前:デフォルトの名無しさん [2012/01/04(水) 06:25:02.26 ] >>691 追加お願いします。
694 名前:デフォルトの名無しさん [2012/01/04(水) 10:39:17.77 ] >>683 691うまくできませんでした 設定方法よかったらお願いいたします。
695 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 14:21:46.13 ] >>694 >>683-693 までを3回読め、文盲
696 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 17:18:50.00 ] >>694 どのように上手くいかなかったのかkwsk。 どういう設定をして、どういうエラーが出たとかを「可能な限り詳細」に。
697 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 23:58:13.38 ] >文盲 よめません
698 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 04:49:20.75 ] 関数の引数リストを取得する方法って標準の範囲であるんでしょうか sbclのdescribe(呼ぶと引数リストも表示する)だと内部でsb-kernel:%simple-fun-arglistを呼んでいるぽいですけど
699 名前:デフォルトの名無しさん [2012/01/05(木) 07:15:50.25 ] >>694 .emacsに (slime-setup '(slime-fancy slime-indentation)) を書く M-x common-lisp-set-styleすると M-x common-lisp-set-style[No match]
700 名前:デフォルトの名無しさん [2012/01/05(木) 07:28:30.22 ] >>696 ↑間違いました。 .emacsに (slime-setup '(slime-fancy slime-indentation)) を書く M-x common-lisp-set-styleすると M-x common-lisp-set-style[No match]
701 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 07:57:07.40 ] とりあえずEmacs再起動してみるとか
702 名前:デフォルトの名無しさん [2012/01/05(木) 08:04:00.79 ] >>701 Emacs再起動してもだめなんですよ。
703 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 08:12:37.95 ] slime のバージョンは? そもそも slime のインストールディレクトリに contrib/slime-indentation.el と contrib/slime-cl-indent.el のファイルある?
704 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 08:16:17.89 ] >>699 環境は? Lispbox? 普通にインストールしたEmacs? (slime-setup '(slime-fancy slime-indentation)) をC-x C-eで評価するとどうなる? 起動時に何かエラーメッセージは? *Messages*に何かエラーが出てる? >>699 の状況を説明すると、正常にslime-indentationがロードされていない。 だからそこで定義されているcommon-lisp-set-styleも実行できない。
705 名前:デフォルトの名無しさん [2012/01/05(木) 08:41:25.08 ] C-x C-eで評価するとEnd of file during parsing 普通にインストールしたEmacsです。 contrib/slime-indentation.el はあるけど contrib/slime-cl-indent.el はない
706 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 10:40:33.98 ] >>705 環境を晒せよ、バカ
707 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 10:47:45.62 ] そういや、環境晒し方みたいなのってないね。 emacs関連だけでも書いておくといいかも。
708 名前:デフォルトの名無しさん [2012/01/05(木) 21:58:26.64 ] >>705 ubunto11.04 sbcl emacs23.2.1
709 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 22:33:15.35 ] 肝腎要のslimeのバージョンは?
710 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 23:19:40.86 ] >>709 "普通"と言っているんだから、このバージョンなんじゃない。 環境設定苦手なのであとはよろしく。 Package: slime Version: 1:20100722-1 Depends: emacsen-common, dpkg (>= 1.15.4) | install-info Recommends: cl-swank (= 1:20100722-1), info | info-browser, emacs23 | emacs22 | emacs-snapshot | xemacs21 Filename: pool/universe/s/slime/slime_20100722-1_all.deb Size: 1269716 ftp://ftp.riken.jp/pub/Linux/ubuntu/dists/natty/universe/binary-amd64/Packages.bz2 ftp://ftp.riken.jp/pub/Linux/ubuntu/pool/universe/s/slime/
711 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 00:00:15.48 ] Ubuntu Nattyではslime-indentation.elは入ってるけどslime-cl-indent.elは入ってない packages.ubuntu.com/ja/natty/all/slime/filelist で、どうやらslime-cl-indent.elは最近入ったファイルらしい lists.common-lisp.net/pipermail/slime-cvs/2011-May/009688.html random-state.net/log/3513839648.html ちなみにUbuntu Preciseには入る模様 packages.ubuntu.com/precise/all/slime/filelist で、どうすればいいかはUbuntu使ってないので私もわかりますん
712 名前:デフォルトの名無しさん [2012/01/06(金) 00:00:24.01 ] >>709 slime 1:20100722-1
713 名前:710 mailto:sage [2012/01/06(金) 00:23:29.38 ] ubuntuを使い込んでいなので不具合が起きても知りません。elispだからOSには悪影響が出ないで しょう、きっと。 環境Kubuntu10.04 amd64だけど、無理やりslime_20111027-2_all.debを入れると>>683 が出るね。 wget ftp://ftp.riken.jp/pub/Linux/ubuntu/pool/universe/s/slime/slime_20111027-2_all.deb sudo dpkg -i slime_20111027-2_all.deb (setq inferior-lisp-program "/usr/bin/sbcl") (require 'slime) (setq slime-default-lisp "sbcl") ;; いらないかも (slime-setup '(slime-repl)) (slime-setup '(slime-fancy slime-indentation)) >>711 公式のcurrentバージョン(2012-01-05)のChangelogを読んだけど、書いてなかったなあ。 作法としてChangelogをみるのが正しくないのかね。
714 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 01:00:08.28 ] quicklisp から slime 導入するのが楽。
715 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 07:20:57.78 ] >>713 slime/ChangeLogではなくslime/contrib/ChangeLogに書いてあるよ
716 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 12:26:33.41 ] >>715 本当だ 2011-05-10 Nikodemus Siivola <nikodemus@r****dom-state.net> * slime-cl-indent.el: New file. Copy of cl-indent.el from current GNU Emacs HEAD. Replaces the ancient copy previously kept as part of slime-indentation.el. * slime-indentation.el (slime-handle-indentation-update): Deleted. Since we now directly replace the previous version of cl-indent.el, the normal version defined in slime.el works fine. ALSO DELETED: the inline copy of 1995 vintage cl-indent.el. slime-cl-indent.clと言い始めた人は某ディストリを使っていたのかな。 2011-05-10 以前の設定ってどうするんだろうなあ。今はそっちを推奨した方が 良いかもなあ。 それかyum, aptなどのパッケージシステムで極力管理せずにquicklispで swank(slime?)さえも管理させるか。
717 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 15:24:13.51 ] ちなみにLispbox on linux 64bitはslime-20110205.092829で>>683 が効いていない。
718 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 18:29:18.55 ] >>716 indentをイジりたいなら(特に)2011-05-10 以前の設定はこんな感じかな。 他にもっと適切な設定があるかもしれないけど。 .emacs.el (setq lisp-indent-function 'common-lisp-indent-function) ;;(setq lisp-indent-offset nil) ;;(setq lisp-indent-offset -2) (setq lisp-indent-offset 2)
719 名前:デフォルトの名無しさん [2012/01/07(土) 01:25:01.92 ] もっと適切な設定おねがいします。
720 名前:デフォルトの名無しさん mailto:sage [2012/01/07(土) 07:41:14.53 ] >>716 emacs関連ってyum, aptなどを使わないのがデフォじゃないのか? Linux系以外のOSと操作感変わるのはいやじゃね?
721 名前:デフォルトの名無しさん mailto:sage [2012/01/07(土) 10:38:28.61 ] >>720 自分の話ではなく、emacsを使い始めて1年以内の人を対象にしているんだけど、 1年以上の人は自力でがんばって設定してくれと思う。 あと仮想OSも安定したし、マルチプラットフォームの操作感の統一性は求めて いないなあ。ssh経由環境を整えた方が労力が少ないよ。
722 名前:デフォルトの名無しさん mailto:sage [2012/01/07(土) 15:14:50.58 ] emacs を使い始めて35年か。。。。 という人はおらんか?
723 名前:デフォルトの名無しさん mailto:sage [2012/01/07(土) 15:35:48.33 ] RMSです。日本の皆さん、はじめまして。 って話?
724 名前:デフォルトの名無しさん mailto:sage [2012/01/07(土) 17:03:50.76 ] ttp://www.amazon.co.jp/dp/4320024141 この本が出たのが88年だから24年前か
725 名前:デフォルトの名無しさん mailto:sage [2012/01/08(日) 00:03:57.95 ] 20年以上前のRMSってヒッピー族って雰囲気だったのにな。 いまや教祖。。。
726 名前:デフォルトの名無しさん mailto:sage [2012/01/08(日) 00:10:55.78 ] d.imagehost.org/0086/richardstallmanyoungg.png www.wikinoticia.com/images/www.vivalinux.com.ar.xml.rss/i44.tinypic.com.aau5i9.png assets.cio.com/documents/cache/images/slideshows/2009/04/hippie_programmers.jpg www.computerhistory.org/timeline/images/1983_stallman_large.jpg www.foreignremarks.com/images/2007_0607stallman0029.jpg あるlispハッカーの変遷。
727 名前:デフォルトの名無しさん mailto:sage [2012/01/08(日) 00:39:46.75 ] まさに、どうしてこうなった、を素で行くRMS様だぜー。 まあでも、今でも痩せればイケメンなのは間違いない。
728 名前:デフォルトの名無しさん [2012/01/08(日) 03:24:39.80 ] 設定の話どうなったの?
729 名前:デフォルトの名無しさん mailto:sage [2012/01/08(日) 19:17:24.09 ] 最後に麻原を混ぜる
730 名前:デフォルトの名無しさん mailto:sage [2012/01/08(日) 22:57:13.63 ] lisperってemacs使ってる人が多いのかな? vi使ってる人いる?P・Gはvi派らしいけど
731 名前:デフォルトの名無しさん mailto:sage [2012/01/08(日) 23:12:26.42 ] viスキーも割と見掛ける気がする。VimにもSwankクライアントあるし。 自分はEmacsのキーバインドがダルくてviper-mode使ってるけど、 Vimpulseとか使ってる人も中にはいるかもしれない。
732 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2012/01/09(月) 00:13:04.38 ] LISPer だと vim スクリプトはだりぃーとか思っちゃうかもね。 仕事の内容によってはカスタマイズされた環境に慣れるのは良くない こともあるだろうから、そういう人は vi を使うと聞いたことがあるよ。 グレアム御大はエディタでなく言語の側で頑張れ派なので vi を使うとどこかで読んだ。
733 名前:デフォルトの名無しさん [2012/01/09(月) 00:26:34.09 ] >>インデント?
734 名前:デフォルトの名無しさん [2012/01/09(月) 00:29:45.25 ] >>728 インデント?
735 名前:デフォルトの名無しさん [2012/01/09(月) 00:30:28.89 ] >>728 インデント?
736 名前:デフォルトの名無しさん mailto:sage [2012/01/09(月) 01:31:58.40 ] >>732 > グレアム御大はエディタでなく言語の側で頑張れ派なので vi を使うとどこかで読んだ。 viでshellコマンド使えるよね? vi を使って、LISPでパースしたりうんたらしたりしているのかね。LISPでvi上で文字を 色付けしたりとかもできるのかな。SHELLを何を使っているか、知らないけど、SHELL側から 色付けアプローチができるんかな。 vi使いのLISPerの動画ってないかね。マジでみてみたいんだよなあ。 超高等テクニックを紹介している英語サイトでもいい。
737 名前:デフォルトの名無しさん mailto:sage [2012/01/09(月) 11:48:05.90 ] まず最初にvimを使おう。
738 名前:デフォルトの名無しさん mailto:sage [2012/01/09(月) 13:48:06.72 ] >>737 プログラム組むんならそれもありだろうけど, Linux 以外でデフォで vim ってあるんかよ?
739 名前:デフォルトの名無しさん mailto:sage [2012/01/09(月) 15:10:37.13 ] >>737 vimは使えるわ。 viの話が聞きたい。 >>738 Linuxでもvimは標準で入っていないのが多いよ。
740 名前:デフォルトの名無しさん mailto:sage [2012/01/10(火) 06:28:23.08 ] monadをlispの文法で説明しているサイトないでしょうか
741 名前:デフォルトの名無しさん mailto:sage [2012/01/10(火) 07:16:19.47 ] >>740 okmij.org/ftp/Scheme/monad-in-Scheme.html
742 名前:デフォルトの名無しさん mailto:sage [2012/01/10(火) 07:28:41.91 ] ああ、ごめん。早合点した。モナド自体の解説も必要なのか。 それならこっちか。 groups.google.com/group/comp.lang.functional/msg/2fde5545c6657c81 英語だけど端的でとても分かりやすいと思う。
743 名前:デフォルトの名無しさん mailto:sage [2012/01/10(火) 09:50:31.71 ] in dente
744 名前:デフォルトの名無しさん mailto:sage [2012/01/11(水) 12:51:58.52 ] John McCarthy 追悼記事 cacm.acm.org/magazines/2012/1/144801-john-mccarthy-1927-2011/fulltext >he was also one of the first to investigate how to rigorously prove properties of programs この一文がよく分からない 証明関係の話だとは思うんだがどういうことなんだろう それとこの一文に興味を持ちました >McCarthy was "a very, very clear thinker regardless of the topic—politics, sociology, the water supply in the San Andreas Basin, anything," recalls Hayes. paul graham御大のようにずけずけと切り込んでいくスタイルだったんでしょうかね エッセイ集のようなものがあれば読んでみたいな そうそう、figureにある御大の若い日の姿がいい deliveryimages.acm.org/10.1145/2070000/2063187/figs/uf1.jpg なんというか、目つきが鋭くて黒ひげが凛々しい
745 名前:デフォルトの名無しさん mailto:sage [2012/01/11(水) 14:53:18.17 ] チェス盤があるところを見ると Kotok-McCarthy のデバッグ中かな?
746 名前:デフォルトの名無しさん mailto:sage [2012/01/11(水) 15:37:08.04 ] 質問ですが、 >>1 のパワーズとはどういう人なのですか
747 名前:デフォルトの名無しさん mailto:sage [2012/01/11(水) 17:31:29.46 ] "MOJO"
748 名前:デフォルトの名無しさん mailto:sage [2012/01/11(水) 17:47:31.46 ] >>744 後ろに説明あるじゃない。 >He invented abstract syntax; created the nonmonotonic logic technique called circumscription; and invented the garbage collector.
749 名前:デフォルトの名無しさん mailto:sage [2012/01/12(木) 09:19:35.64 ] サーカムスクリプションじゃなくてこっち。 www-formal.stanford.edu/jmc/basis.html
750 名前:デフォルトの名無しさん mailto:sage [2012/01/12(木) 15:38:06.07 ] blog.livedoor.jp/s-koide/archives/1846185.html >2003年ニューヨークのConferenceではものすごく感動的なトークをし マッカーシーは2003年にどんなトークをしたのでしょう?
751 名前:デフォルトの名無しさん mailto:sage [2012/01/12(木) 18:28:37.32 ] Tutorial:Lispで人工知能 cl.cddddr.org/index.cgi?Tutorial%3ALisp%E3%81%A7%E4%BA%BA%E5%B7%A5%E7%9F%A5%E8%83%BD 例はAllegro Common Lispで開発を進めるということになっていますが、 windowsのsbcl+emacs+slimeで試したいです blog.livedoor.jp/s-koide/archives/1877088.html >そのほかの Common Lisp システムで進めるかたは,ご自分で環境設定とか,コードの修正などをお願いいたします. こう書いてあるのですが、case-sensitiveにするために (setf (readtable-case *readtable*) :preserve) と書くのはわかったのですが、ほかにどういう設定をしてpaipのソースファイルをどこに置けばいいのですか
752 名前:デフォルトの名無しさん mailto:sage [2012/01/12(木) 20:43:49.62 ] >>750 comp.lang.lispでも話題になったから検索してみて。 John "Practical" McCarthy でたどれると思う。 しかしそのページILCのIがInternetになってるな。 近くの人教えてあげて。
753 名前:デフォルトの名無しさん mailto:sage [2012/01/13(金) 16:04:07.76 ] どうもありがとうございます https://groups.google.com/group/comp.lang.lisp/browse_thread/thread/6c75cae46f065843/f06272a6e41dfdfa?hl=ja&lnk=gst&q=John+%22Practical%22+McCarthy#f06272a6e41dfdfa Anton van Straatenさんの発言をまとめると… マッカーシーはチャーチのラムダ計算の考えをlispに部分的に取り入れた、 万が一ラムダ計算をlispのデザイン全体に持ち込んでいたら 実用的なプログラミング言語というものを誤って推し進めたかも、 純粋な型無しのラムダ計算にひどく捕らわれていたかもしれない で、実際のところは無名関数を設けるラムダの表現の意味を拝借したのだ、と lispを開発していたときマッカーシーは チャーチの本のコピーを持ってはいたが最初から最後まで読んだわけでは無かった 飛ばし読みをしていた そのおかげで上のようなデメリットが避けられた lispを作った本人がlispの限界とその理由をかいつまんで解説したと 理解したのですが、これでいいでしょうか
754 名前:デフォルトの名無しさん mailto:sage [2012/01/13(金) 16:41:45.59 ] Yコンビネータで再帰定義、再帰実行とか、 理論的整合性の泥沼にはまらずに済み、 実践的な言語設計をすることが出来たってことでしょ。 もともと数式評価するFORTRANライブラリ書いていたわけだから、 下手すりゃSucc(Succ(Zero))とか別の方向行っちゃうもんね。
755 名前:デフォルトの名無しさん mailto:sage [2012/01/13(金) 17:18:30.24 ] 結局、動的スコープ以外はほぼ間違いなかったわけだしな
756 名前:デフォルトの名無しさん mailto:sage [2012/01/13(金) 19:25:58.91 ] こないだエロ漫画雑誌を見てたら、姉弟でセクロスしてるところを母親に見付かった場面で「続きは単行本××で」 ってひっぱってたけど、たぶんこの母親もまじえて3Pになる展開なんだろうなぁってのが容易に予想できるので、 ここで予想を裏切るシチュを期待したい。
757 名前:デフォルトの名無しさん mailto:sage [2012/01/13(金) 20:03:22.08 ] すいません。誤爆しました。忘れてください。
758 名前:デフォルトの名無しさん mailto:sage [2012/01/13(金) 20:06:12.33 ] テンプレに入れといてやんよ
759 名前:デフォルトの名無しさん mailto:sage [2012/01/13(金) 21:09:33.86 ] クラブを持ったリスコフ婆さんも乱入だ
760 名前:デフォルトの名無しさん mailto:sage [2012/01/13(金) 22:07:26.48 ] 質問なんですが、Common Lispで三目並べを作ろうとしているのですが、 対戦相手のグラとして画像を表示させることもできますか? できるのでしたら、関数を教えていただければ幸いです。
761 名前:デフォルトの名無しさん mailto:sage [2012/01/14(土) 00:35:40.98 ] >>760 要は「GUIアプリケーションを作れるか」ってことで合ってる? そういう話なら「作れる」んだけど、Common Lisp標準のGUI APIというのはないので、 ライブラリを使ったり、FFI経由で各種APIにアクセスする必要がある。 そして、どういう風に作れば良いのかは、環境と方法によって全然違うので、 対象とする環境とかを教えてもらわない限りは答えにくいと思う。
762 名前:デフォルトの名無しさん mailto:sage [2012/01/14(土) 00:43:52.42 ] やっぱり X プロトコルを喋らせないと。
763 名前:デフォルトの名無しさん mailto:sage [2012/01/14(土) 00:51:28.76 ] >>761 環境はLisp IDEというフリーのエディタ。全文英語になっとる。 >要は「GUIアプリケーションを作れるか」ってことで合ってる? たぶんあってる。ググったのを見る限り。
764 名前:デフォルトの名無しさん mailto:sage [2012/01/14(土) 01:19:47.99 ] つLTK
765 名前:デフォルトの名無しさん mailto:sage [2012/01/14(土) 01:25:26.08 ] >>764 なんか今使っとるのより断然よさげですね。 ありがとうございました。頑張ってみます。
766 名前:デフォルトの名無しさん [2012/01/15(日) 08:26:04.65 ] 宣教師と人喰人問題で4人ずつ、ボートに3人まで乗れる。 この条件でプログラムを教えて欲しいです。
767 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 08:46:19.56 ] Prolog向きの問題じゃなかったっけそれ
768 名前:デフォルトの名無しさん [2012/01/15(日) 08:51:22.80 ] ググってたんですけど、これでできるかな? d.hatena.ne.jp/jits/20100718/1279443182
769 名前:デフォルトの名無しさん [2012/01/16(月) 17:26:23.02 ] LISPさっぱりわからん… 俺向いてないわ
770 名前:デフォルトの名無しさん mailto:sage [2012/01/16(月) 17:39:15.42 ] >>769 Lispに特有の概念(S式とかマクロ)はとっても簡単なので、 再帰とかクロージャとか、そっちの方が理解し辛いのかな? それらは他の言語でも役立つので、覚えて絶対損はしないと思う。 根気良く覚えていくことをお勧めする。 あとは、具体的にどの辺が分からないか書いてくれると、 ここを見てる他の人が、分かりやすく説明をしてくれたり、 分かりやすい説明の場所を教えてくれたりするかもしれないよー。
771 名前:デフォルトの名無しさん mailto:sage [2012/01/16(月) 17:43:29.86 ] Haskellに比べたらLispはまだわかりやすいな・・・
772 名前:デフォルトの名無しさん mailto:sage [2012/01/16(月) 18:23:45.93 ] MITハッカーにあこがれてCLISPをとりあえず入れてみた いまいち何をすればいいかわからん
773 名前:デフォルトの名無しさん mailto:sage [2012/01/16(月) 18:24:42.76 ] Lispでもモナドとか使ったりすればHaskell並に難しくなったりするので、 Haskellが殊更難しいっていうのは、Haskellにとってもフェアじゃない気がする。 前提とする知識の多さを「難しい」って表現するなら、確かにそうなんだろうけど。 うーん。でもやっぱ軽く嫉妬入ってるかも。
774 名前:デフォルトの名無しさん mailto:sage [2012/01/16(月) 20:03:31.30 ] >>773 Haskell使いの被害妄想はすごいなあ。 遠征して書くことか。
775 名前: ◆QZaw55cn4c mailto:sage [2012/01/16(月) 23:58:33.67 ] >>769 処理系の作成の教科書を読むといいかも
776 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 00:24:41.47 ] >>769 酔っ払いの竹内の本は読むなよ。お金の無駄だ。 編集者が文字を書き起こしたらしいんだが、それだけの手間をかけるなら新しく書けよ、 団塊の世代。
777 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 00:32:17.99 ] そもそもあれCommon Lispじゃないし、 「文字を書き起こした」ってのもどうなのよw
778 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 00:51:27.54 ] 竹内本は例題や練習問題が豊富だしそんな悪くないと思うけどな 初心者がコーディングする段階で詰まるポイントをよく捉えてるので 実際に手を動かしながらる本を読む人には向いてるんじゃないかと 概念本としてはそんないいとは思えなかった
779 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 01:28:57.76 ] >>778 新しく本を書いた本を書いた方が良くない? 例題・練習問題はネットに転がっているから困らないでしょ。
780 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 01:45:47.24 ] じゃあ竹内本みたいな構成で例題が載ってるサイト挙げてみて
781 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 02:22:48.45 ] 竹内本みたいな構成でないとダメならない
782 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 06:51:50.80 ] >>774 反応が予想外過ぎるw俺がHaskellerだったら、何に嫉妬してんだw Lispのシンプルさとか? ないだろー。 Lispでも時と場合によってはモナドとか遅延とか使ったりするのに、 それがHaskellだけのものみたいに思われがちなのは、正直面白くない、って話。 Lisp書きがHaskell書きに嫉妬してんの。
783 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 07:51:26.36 ] >>782 はいはい。 さっさと巣にお帰り。
784 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 07:53:52.34 ] 構文エラーと言われたら書き直すのが筋
785 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 10:00:29.72 ] 構文エラーな手書き文章から本を作るお仕事
786 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 10:23:58.09 ] >>773 言語が難しいと言うより、解こうとしている問題が難しいだけだと思うが。 将来はもっと簡潔&理解し易い表現方法が開発されるかもしれないが、そういう表現形式の開発自体、鶏・卵の関係だからな。
787 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 11:51:20.71 ] >>786 同感だし、一応そういう主張。 GitHubでも、他言語由来の概念のLispへの導入とか結構見掛けるけど、 まだ手探りな感じが強い気がする。こういった流れも、数が増えていけば、 よりLisp的に洗練されていくのかなー、とか考えると面白いよね。
788 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 23:47:41.83 ] >>786 表現形式の開発自体が卵だとすると鶏って何?
789 名前:デフォルトの名無しさん [2012/01/18(水) 08:03:50.21 ] 実践CommonLispてどの位時間でよめますか?
790 名前:デフォルトの名無しさん [2012/01/18(水) 08:05:53.51 ] 実践CommonLispてどの位の時間で読めますか?
791 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 14:06:14.90 ] >>790 「読めますか」…そんな言葉は使う必要がねーんだ。 なぜなら、オレや、オレたちの仲間は、 その言葉を頭の中に思い浮かべた時には! 実際にそれを読んじまって、もうすでに理解しているからだッ! だから使った事がねェーッ。 >>789 、オマエもそうなるよなァ〜〜〜、オレたちの仲間なら… わかるか?オレの言ってる事…え? 『読んだ』なら、使ってもいいッ!
792 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 18:48:45.82 ] partake.in/events/e9956e93-dd82-4b63-96bb-f9f75370dc5d >訳がアレな部分がある paipの日本語版を持っていますが、具体的にはどこなのでしょうか
793 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 03:56:16.14 ] (setq alist (acons 1 "uno" (1 . "one") (2 . "two")))) => ((1 . "uno") (1 . "one") (2 . "two")) ではなくて (setq alist (acons 1 "uno" (1 . "one") (2 . "two")))) => ((1 . "uno") (2 . "two")) となるような aconsの拡張に標準的な名前はついてないのでしょうか
794 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 13:08:34.82 ] www.aoky.net/articles/paul_graham/vw.htm viawebのスナップショットがあるけど なんというかシンプルなんだね それに競合他社を欺くためのテクニックがあざとくて笑った
795 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 13:26:39.48 ] 「その理由」のリンク、昔、別の記事にもあったんだけど、大笑いしたなぁ
796 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 14:41:57.08 ] ロバート・モリスが、表に名前を出すのを避けてた、ってのは初めて知った話という気がする
797 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 23:53:38.16 ] >>793 俺は知らない。たぶんないんじゃない? cltl に「assoc と rplacd でできるけど、お勧めはしない」って書いてある。 ttp://www.cs.cmu.edu/Groups/AI/html/cltl/clm/node153.html 本当に update が必用なら hash table 使うのが普通だと思う。 あるいは property list。
798 名前:デフォルトの名無しさん mailto:sage [2012/01/26(木) 00:54:45.05 ] Lisp。入門書を読んでみたが、 この言語のなにがすごいのかよくわからない。 PROGとか手続き型となにが違うのかと。 カッコも多くてめんどくさい。 普通の手続き型言語、例えばCで同じ内容のプログラムを書いた場合と比較して、 手間が省けるプログラムって例示できる人いるの?
799 名前:デフォルトの名無しさん mailto:sage [2012/01/26(木) 01:52:13.58 ] >>798 っpractical-scheme.net/trans/icad-j.html
800 名前:デフォルトの名無しさん mailto:sage [2012/01/26(木) 04:22:59.22 ] >>798 Lisp全般の話がしたいのならLisp Schemeスレでね。 丁度向こうでも同じ話題が出ているので、>>798 にも都合が良いと思う。 こちらでもflame warを起こすのが目的じゃなければ、の話だけどね。 Lisp Scheme Part33 toro.2ch.net/test/read.cgi/tech/1318150738/ >>799 プログラムを出せと言ってるんだから、そこで挙げるなら、例えば www.atmarkit.co.jp/news/200909/07/lltv02.html practical-scheme.net/vault/lltv-shiro.tar.gz 辺りでしょ。
801 名前:デフォルトの名無しさん mailto:sage [2012/01/26(木) 12:04:24.58 ] >>798 入門書とか読むだけだとLispのすごさや便利さはあまり腑に落ちないよ。 1000行くらいの簡易実装(マクロつき)を読み下すと、 CやJavaの不自由さがよくわかると思うよ。
802 名前:デフォルトの名無しさん mailto:sage [2012/01/26(木) 13:17:46.65 ] Lispのぱっと見の印象がそんなに悪くなる入門書ってなんだろな
803 名前:デフォルトの名無しさん mailto:sage [2012/01/26(木) 19:07:55.33 ] >>802 lyrical.bugyo.tk/
804 名前:デフォルトの名無しさん mailto:sage [2012/01/26(木) 20:16:05.40 ] twitter.com/lipsmagazine
805 名前:デフォルトの名無しさん mailto:sage [2012/01/27(金) 01:39:03.94 ] >>804 それ舌足らずやない唇や
806 名前:デフォルトの名無しさん mailto:sage [2012/01/27(金) 15:22:56.95 ] >>804 のアイコンを俺が今作ってる処理系に使いたい
807 名前:デフォルトの名無しさん mailto:sage [2012/01/29(日) 10:40:03.82 ] (format nil "~{ ~}" '(l i s t)) とすると一気にメモリを消費してしまうのは仕様ですか?
808 名前:デフォルトの名無しさん mailto:sage [2012/01/29(日) 11:29:50.10 ] >>807 仕様かどうか知らんけど 間に~aか何か置かないと引数のリストがいつまでたっても消費されないんじゃない? (format nil "~{~a~}" '(l i s t)) => "LIST"
809 名前:806 mailto:sage [2012/01/29(日) 19:47:07.24 ] >>808 言われてみれば確かに。 slimeで勉強中にこの式をたまたま評価したらいつの間にかメモリを食い潰してしまって焦ってしまいました。 で、こういう事態に備えてヒープサイズ?を制限しようかと思ったのですが、clozureでは可能なのでしょうか。 sbclなら--dynamic-space-sizeで指定したメモリ以上は使わないようにできました。 しかしclozureでは--heap-reserve 1Gと指定しても、topで見る限り128Gまでメモリ使用を許可しているようです。 当然そんなにメモリを積んでいないし、>>806 のような馬鹿をすると1Gを超えてメモリを食い出しました。
810 名前:デフォルトの名無しさん mailto:sage [2012/01/30(月) 01:20:22.90 ] >>809 >>806 がdisられてる件について。 --heap-reserve 8Mくらいで>>807 試すと普通にメモリ不足ですぐ例外発生したりしない? Windows XP SP3 32-bit + CCL 1.8-dev-r14962-trunkだとそんな感じだけども。 一応、CCLのヒープ関係はこういう仕組みになってるとのこと。 ccl.clozure.com/manual/chapter16.1.html#Heap-space-allocation (cl:room)するとどうなってる?
811 名前:デフォルトの名無しさん [2012/01/30(月) 05:34:46.27 ] CL-USER> 0.123e20 1.23e19 理解できないのですが どなたか説明お願いします。
812 名前:デフォルトの名無しさん mailto:sage [2012/01/30(月) 05:39:05.44 ] eで桁が減ってるから合ってるじゃん。
813 名前:デフォルトの名無しさん [2012/01/30(月) 07:05:19.17 ] ↑ありがとうございました。
814 名前:807 mailto:sage [2012/01/30(月) 08:34:25.72 ] すいません>>806 じゃなくて>>807 でした。 ccl64 --heap-reserve 4Mで(cl:room)としたとき、 pproximately 24,117,248 bytes of memory can be allocated before the next full GC is triggered. Total Size Free Used Lisp Heap: 39190528 (38272K) 24117248 (23552K) 15073280 (14720K) Stacks: 51246288 (50045K) 51211592 (50011K) 34696 (34K) Static: 19070896 (18624K) 0 (0K) 19070896 (18624K) -4071.375 MB reserved for heap expansion. となります。OSはlinux(64bit)で、clozureはccl-1.7-linuxx86.tar.gzの中にあるccl64を動かしています(cclはエラーになる)。 (swank:start-server :port 4005 :stlye :spawn :dont-close t)でswankサーバを建ててslime-connectして使っています。 この状態で、>>807 をC-c C-cとし、数秒後に(cl:room)を実行すると Approximately 33,554,432 bytes of memory can be allocated before the next full GC is triggered. Total Size Free Used Lisp Heap: 2548170752 (2488448K) 33554432 (32768K) 2514616320 (2455680K) Stacks: 51246288 (50045K) 51210424 (50010K) 35864 (35K) Static: 19070896 (18624K) 0 (0K) 19070896 (18624K) -6464.125 MB reserved for heap expansion. となります。
815 名前:デフォルトの名無しさん mailto:sage [2012/01/30(月) 15:25:59.61 ] LispのマクロはJsとかでいわれているラムダ的な物と考えてよいのでしょうか?
816 名前:デフォルトの名無しさん mailto:sage [2012/01/30(月) 18:19:23.92 ] >>814 Oh... 凄く…負の値です…。バグなのかなー。>>810 の環境で普通に起動するとこう。 Approximately 7,864,320 bytes of memory can be allocated before the next full GC is triggered. Total Size Free Used Lisp Heap: 20119552 (19648K) 7864320 (7680K) 12255232 (11968K) Stacks: 31317648 (30584K) 31304808 (30571K) 12840 (13K) Static: 20140352 (19668K) 0 (0K) 20140352 (19668K) 844.812 MB reserved for heap expansion. 予約された領域の表示は、ccl:%reservedbytesで領域の境界同士を引いて算出してる。 負の値になるってことは、多分境界の値がおかしなことになってるんだと思うんだけど。 trac.clozure.com/ccl/ticket/890 に、"This affects me."とか書きつつ、環境と(room)の結果でも貼ってみたらどうだろう。 blo.udoidio.info/2008/10/out-of-memory-sad-case.html を見ると、少なくとも1.2の時点からある問題みたいだ。
817 名前:デフォルトの名無しさん mailto:sage [2012/01/30(月) 18:49:29.05 ] >>815 ラムダは関数だから違う。強いて言うならC++のテンプレートが近い。 用途は色々あるけど、総じて他の言語ならコンパイラの書き替えや別言語の実装が必要なレベルの抽象化が出来る。
818 名前:デフォルトの名無しさん mailto:sage [2012/01/30(月) 19:01:05.30 ] >>817 なるほど、C++のテンプレートにちかいのですね。 この考えを取っ掛かりとしてもう一度勉強してみます。
819 名前:デフォルトの名無しさん mailto:sage [2012/01/30(月) 19:24:25.09 ] >>818 強いて言えばだから、テンプレートの勉強をしてもあまり参考にならないと思うよ。 Lispマクロ自体を勉強する方が良いと思う。 Paul=Grahamやgaucheの作者の書いた物がお勧め。
820 名前:デフォルトの名無しさん mailto:sage [2012/01/30(月) 21:57:34.69 ] >>819 いっしょだと思う. template_expand と template_expand_1 さえあれば...
821 名前:デフォルトの名無しさん mailto:sage [2012/01/31(火) 07:26:04.21 ] >>820 条件分岐の面倒さや再帰の深さ制限とか、実行時型情報とかやはり違うと思う。Lispにはリーダマクロ等もある。 boostにもよりLispマクロを目指したmopがあるし、D言語もASTマクロを入れる予定。 ところで調べてて驚いたけど、Perl6にもASTマクロがあるらしい。現状で一番Lispに近い言語なのかも(笑)
822 名前:デフォルトの名無しさん mailto:sage [2012/01/31(火) 20:38:23.98 ] Boost.MPL はマクロに近い
823 名前:デフォルトの名無しさん mailto:sage [2012/02/03(金) 17:32:20.27 ] Why I love Common Lisp and hate Java « Piece of mine https://kuomarc.wordpress.com/2012/01/27/why-i-love-common-lisp-and-hate-java/ Why I love Common Lisp and hate Java, part II – code examples « Piece of mine kuomarc.wordpress.com/2012/02/02/why-i-love-common-lisp-and-hate-java-part-ii-code-examples/
824 名前:デフォルトの名無しさん mailto:sage [2012/02/03(金) 21:18:26.92 ] ネタ記事? Compare class HelloWorldApp { public static void main(String[] args) { System.out.println("Hello World!"); } } with Common Lisp’s equivalent: "Hello World"
825 名前:デフォルトの名無しさん mailto:sage [2012/02/03(金) 22:41:28.18 ] ttp://homepages.inf.ed.ac.uk/wadler/language.pdf を思い出した。
826 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 00:30:57.46 ] 最近common lisp始めてみた。 特に作るののもないのでリストいじってあそんでいる。
827 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 00:35:10.04 ] いらっしゃい。何かを得ていってくれると嬉しい。
828 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 02:32:05.69 ] (defun hoge (x) (format t "hoge start~%")(catch 'c1 (format t "catch c1 start~%") (fuga x) (format t "catch c1 end~%")) (format t "hoge end~%")) (defun fuga (x) (format t "fuga start~%") (if (= x 0)(throw 'c1 "x = 0")(format t "x /= 0~%")) (format t "fuga end~%")) で質問です。このlispの実行結果は、 (hoge 0) hoge start catch c1 start fuga start hoge end nil となるのですが、catch c1 start後に関数fugaのif文でtrueなので (throw 'c1 "x = 0") を実行すると思うんですが (format t "catch c1 start~%") (fuga x) (format t "catch c1 end~%") を実行せずにそのまま"hoge end"で終わっています。 (throw 'c1 "x = 0")の時いったい次どこの処理をするのでしょうか。 また、最後、throwの戻り値の"x = 0"も出力されず、nilとなっています。 "x = 0"が返されるときとはどういうときなのでしょうか。 動きがよくわからなくて困っています。 よろしくお願いします。
829 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 04:02:22.74 ] catchの各formを評価している最中にthrowされると、throwで指定した値がcatchの戻り値になる。 なので、(throw 'c1 "x = 0")によって、catchの戻り値が"x = 0"になる。以降のformは評価されない。 catchの戻り値は、件のコードでは単に捨てられるようになっているので、出力もされない。 catchの後に「hoge end」を出力して、そのまま終了する。 つまり、throwの次に実行されるのは(format t "hoge end~%")。 www.lispworks.com/documentation/HyperSpec/Body/s_catch.htm というか、普通はcatchやthrowを直接使ったりせず、より上位の仕組みのコンディションを使う。
830 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 10:05:55.45 ] >>829 回答ありがとうございます。 throwでx=0の後は、関数fugaは評価されないんですね また、catchというかhogeのcatchが終了したところに戻るんですね 戻り値は受け手はいるけど出力して終了とはならないということですか なるほど。。。非常に難しいですね。。。 ありがとうございます。
831 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 10:16:38.35 ] 1:(defun catch2 (tag) 2: (catch tag 3: (throw 'hack 'yes))) 4:catch2 5: 6:=> catch2 7: 8:(catch 'hack 9: (print (catch2 'hack)) 10: 'no) 11: 12:yes 13:no というプログラムでもやはりcatch,throwのことですがいいでしょうか 先ほどの回答ですと まず8行めのcatchから、1,2行目にとんで3行目のthrowで すでに8行目は行ってるので、8行目に飛ばずにそのままそのthrowは終了 でyesが返ってくる。 それが9行目のprint文にもどるのでyesを出力となるわけですね。 最後の'noはどうやって出力されたのでしょうか。 ここもやっぱりよく分からないのですが。。。
832 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 10:25:18.81 ] (catch2 'hack) は (catch 'hack (throw 'hack 'yes)) になる。
833 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 11:19:25.56 ] 1:(catch 'hack 2: (print 3: (catch 'hack 4: (throw 'hack 'yes))) 5: 'no) とすると 3行目のcatchから、throwで戻り値yesをprintして 残りは'noが残ると思うのですが すると 結果は yes no となるのですが、noは'noがただ評価されたから 出力されているという解釈でいいんでしょうか。
834 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 13:34:40.81 ] (print (catch2 'hack)) がyesを表示してて、 (catch 'hack (print (catch 'hack (throw 'hack 'yes))) 'no) を評価したときの戻り値がno。 インタプリタ上だと標準の出力先と戻り値を表示する先が同じものが多い。
835 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 14:40:06.47 ] リスト操作の質問です (list "test2" "foo34" "bar23" "test5" "foo67" "test9" "bar8" "foo7") こうして作成したリストを ("test234" "bar23" "test567" "test9" "bar8" "foo7") のように変換したいです どういうことかというと、test〜の直後の要素がfoo〜だったら test〜とfooより右側の文字列を結合させます そうでなければその要素はそのままにしておきます (mapcar #'(lambda (a b) のように書きはじめるのかと思いましたが、この場合の a bは二つのリストからそれぞれ 要素を取り出すものなので違うようです どうすればよいでしょうか
836 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 19:03:40.19 ] >>835 reduceを使えば良いんじゃないかな。というわけで、こんなんできました。 ハードコーディングしてる部分は、実際のコードでは修正してー。 (labels ((has-prefix-p (prefix x) (let ((p (search prefix x))) (and p (zerop p)))) (foop (x) (has-prefix-p "foo" x)) (testp (x) (has-prefix-p "test" x))) (reduce (lambda (x r) (if r (destructuring-bind (last . rest) r (if (and (foop last) (testp x)) (cons (concatenate 'string x (subseq last (length "foo"))) rest) (cons x r))) (cons x r))) *list* :from-end t :initial-value nil))
837 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 19:05:43.41 ] ああ、失礼。*list*に対象のリストが入ってるってことで。 (defparameter *list* (list "test2" "foo34" "bar23" "test5" "foo67" "test9" "bar8" "foo7")) こんな感じで。コピペし忘れた。
838 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 19:52:31.82 ] >>834 反応遅くなり申し訳ありません。 catch内の最後に評価された式が最後の返されるんですね だから、yesのあとにprint文でもないのにnoが出力されるということですね ありがとうございます!!
839 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 22:14:41.11 ] >>838 分かりやすいかどうかは知らんが C の setjmp がおおむね catch clhs.lisp.se/Body/s_catch.htm # 仕様書読め(Unix で言うところの read the fucking manual)
840 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 22:53:44.57 ] >>839 ありがとうございます。 TOEIC200点代ですが頑張って解読します。
841 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 23:16:02.80 ] 上でも少し触れたけど、何で直接catchとthrowを使ってるんだろうか。 新しい制御構造でも作るの? かなり斜め上なことをしてる予感がするけども。
842 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 00:20:38.90 ] >>841 emacsのとあるプログラムをxyzzyのcommon lispに書き換えてみたくて 解読してたんですが、catchとthrowがでてきて・・・ 調べてたら、更に分からなくなりまして。。。 なので、新しく何か作るわけではありません。 あまりcatchとthrowは一般的でないみたいですね。
843 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 00:24:46.17 ] >>841 あと、ここで質問したcatch,throwのプログラムは 解説サイトに載っているものです。 理解できなかったので部分コピペで質問させていただきました。
844 名前:834 mailto:sage [2012/02/07(火) 00:50:44.36 ] 最初に>>833 を見たときは、 インデントの所為で(print (catch ...) 'no)としてるのかと思った。
845 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 01:08:08.27 ] >>844 わかりにくくてすいませんでした。 インデントおかしかったですね。今後は気をつけます。
846 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 01:23:05.94 ] >>843 あー、ここか。あまり良い教材とは言えないと思う。 www.fireproject.jp/feature/common-lisp/details/catch_throw.html Common Lispで例外処理をするときは、catchとthrowは普通使わないんだ。 その上に作られたコンディションというものを使う。 xyzzyを使っているなら、 www.geocities.jp/m_hiroi/xyzzy_lisp.html の方がより正確で多くを解説しているので、こちらを参考にした方が良い。 あと、Emacs Lispについては、オリジナルのリファレンスが結局一番詳しい。 日本語でないと厳しいなら、 www.bookshelf.jp/texi/elisp-manual-20-2.5-jp/elisp_10.html を読むほうが、ググッて出てきたブログとかを読むよりは良いと思う。
847 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 01:41:15.91 ] >>842 あと、移植については、単純にxyzzyでプログラムを動かすのが目的のベタ移植なら、 そのままcatchとthrowを使えば良いと思う。 よりCommon Lisp的な表現に全体を書き換えているのなら、コンディションを勧める。 Tutorial on Good Lisp Programming Style www010.upp.so-net.ne.jp/okshirai/tutorial-on-good-lisp-programming-style-ja.txt から引用するけど、 > catchとthrowを使用に対するいくつかの忠告がある: > > - マクロとしてより抽象的な制御構造を実装するときに副プリミティブとして > catchとthrowを用いること。通常のコードの中では用いないこと。 普段使いにはもっと便利なものがあるんで、そっち使いましょうよ、ってこと。
848 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 02:04:41.44 ] >>846 >Common Lispで例外処理をするときは、catchとthrowは普通使わないんだ。 情報が少ない気がしたのですがそういうことだったんですね。 「catch,throw」より「コンディション」ですね! 調べてみます。 実は載せていただいた資料は前に読んだんですが 少し難しかったです。。。 ですが、emacsのサイトは確かに一番読みやすいですね!! >>847 common lisp的なものを書けるようになりたいので 「コンディション」で制御できるよう勉強します。 lispで勉強会があれば出たいですが、なかなかないですね。。。 周りにlisp使ってる人がいない場合、やっぱ独学しかないんでしょうね。
849 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 09:38:28.30 ] >>848 twitter始めてみたら?それか初心者が勉強していくblogを書く。
850 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 12:16:40.84 ] ただ、carの例で考えると、Common Lispでは「対象性」が失われているような気がするんですよね。これが納得 出来ない。 (car '())=>nil (car '(()))=>nil で結果が同じだとマズいだろ、って事ですよね。 ttp://www.shido.info/gb/guestbook.php?id=1422 この話ってcarをscar(仮)で使った方が良いですか? (defun scar (l) (if (tree-equal '() l) "#f" (car l))) またもっとエレガントな方法・アプローチがありますか?
851 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 12:45:54.49 ] とりあえずcond,cons,car,cdr,apply,mapcar,funcallあたりは覚えた。 次はいよいよマクロに手を出してみようかな
852 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 14:14:53.56 ] >>836 ありがとうございます reduceをそのように使えばいいのですね 目から鱗です
853 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 14:24:40.95 ] on lispの2.9compilationを読んで疑問に思ったのですが (defun 50th (lst) (nth 49 lst)) (proclaim ’(inline 50th)) これと、defmacro で50thを作ったときの違いは何なのでしょうか? 2.9の最後にinline functionの制約はmacroのそれと基本的には一緒だと書いてあるのですが、 common lispのmacroとinline compileは実質的にどう違うかよくわかりません
854 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 20:06:22.87 ] >>853 そのまま読み進めていけばinlineで書けない実例が大量に出て来る。
855 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 21:40:28.11 ] >>836 >>835 のような実用用途に対するLISPプログラムを初めて読んだ。 結構時間かかったけど、こういう風にするんだな。面白い。 destructing-bindって融通効かしてくれるんだな。きれいに書きますね〜。 (concatenate 'string "test39" (subseq "foo8" (length "foo"))) こういう実務向けの機能知らな過ぎワロタ このぐらいの長さの物をもっと読みたいんだけど、良いサイトあります? 当方竹内さんの入門書を一冊通した程度の実力。
856 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 22:42:59.10 ] >>855 どういう分野を勉強したいのか、具体的に詳しく書いた方がいいよ。 あと何を作りたいとか。
857 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 23:03:07.02 ] >>855 実務向けの機能と言うか、マニュアル(CLtL2)読めばいいじゃん。
858 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 23:16:28.21 ] >>850 Schemeを使う。半分冗談だけど半分は本気。 Common Lispは利便性と厳格さのトレードオフで利便性を採った言語だから。 多分、その辺が気になるなら、今後も色々引っかかりを覚える事が多いはず。 リーダーをいじって、'()を適当にユニークなデータに置き換えて、 cl:carとかcl:cdrとかcl:consとかも上書き定義して…みたいに頑張るよりは、 nilと空リストが同じことに慣れるか、Scheme使う方が幸せだと思う。
859 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 23:19:16.92 ] 「実務向けの機能」なら実践Common Lispはどうだろ 部分的にしか読んでないけど パス名の扱いとか懇切丁寧に書いてあってすごい参考になった
860 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 23:44:00.80 ] >>858 > Schemeを使う。半分冗談だけど半分は本気。 > Common Lispは利便性と厳格さのトレードオフで利便性を採った言語だから。 > 多分、その辺が気になるなら、今後も色々引っかかりを覚える事が多いはず。 勉強で必要最小限Schemeやるけど、今の所、真面目に勉強する気がないなあ。 Scheme使うのは誰かに任せるよ。自分はCL道を極める。 ちなみにSchemeでデバッグ機能も強力で日本語も使える処理系ってRacket? SchemeってCLみたいに処理系分岐ってできないの? Gaucheの良さって分かるんだけど、学習コストをかけた後に後々やっぱり タスキに長し帯に短しで不満が出てきそうなんだよね。 GaucheのコードをRacketに移植ってコストがかかって面倒くさいでしょ。
861 名前:836 mailto:sage [2012/02/08(水) 00:00:15.62 ] >>855 私幼女だけど、concatenateの部分はむしろ教科書的というか、 多分実用的なコードなら正規表現の後方参照使うと思うの。 あと、(concatenate 'string x y)よりは、(format nil "~a~a" x y)使う。 ついでに、(length ...)の部分は#.(length ...)ってする。 あんま長過ぎず、見てて楽しいっていうと、ユーティリティライブラリじゃないかな。 例えば、こんなんどうだろう。 common-lisp.net/gitweb?p=projects/alexandria/alexandria.git;a=tree;js=1 www.flownet.com/ron/lisp/rg-utils.lisp
862 名前:デフォルトの名無しさん mailto:sage [2012/02/08(水) 00:27:18.15 ] >>860 CL続けるなら、tやnilの使い回しには慣れたほうが良い。 じゃないと、多分CLOSを学習するとき、一番底にあるクラスにビビる。 Schemeだと、現状だとRacketが優秀過ぎるってのはある。 CLに比べると処理系切り替えは楽じゃない。処理系依存部分が大きく、ある程度は面倒。 でもまあ、Gaucheかはともかく、Schemeを勉強するのは、視野が広がって良いと思うよ。
863 名前:SCHEME餃子 ◆8X2XSCHEME mailto:sage [2012/02/08(水) 00:45:13.51 ] >>860 処理系ごとの切り替えは srfi-0 があるが…。 srfi.schemers.org/srfi-0/srfi-0.html そもそも srfi-0 をサポートしてない処理系もあるからなー。 racket だと srfi-7 を使えってことになってたと思う。
864 名前:デフォルトの名無しさん mailto:sage [2012/02/08(水) 00:47:07.73 ] >>862 > でもまあ、Gaucheかはともかく、Schemeを勉強するのは、視野が広がって良いと思うよ。 英語できて、フランス語できれば、視野が広がるのは分かるんだけど、 時間は有限だからなあ。
865 名前:デフォルトの名無しさん mailto:sage [2012/02/08(水) 18:28:29.02 ] >>854 ありがとうございます。読み進めてみます。 >>855 に関連することですが、 THE SEASONED SCHEMERのような短いコードでcommon lispのノウハウを一通り学べるサイトはありますか? とくにseriesの実例をいくつも見てみたいのですが。
866 名前:デフォルトの名無しさん mailto:sage [2012/02/08(水) 20:41:13.84 ] wiki文法をhtml風のs式に変換しようとしているのですが インラインの装飾をどう変換するのでしょう あ\*ああ**//強調&斜体//**ううう この行を (:P "あ*ああ" (:EM (:ITALIC "太字&斜体")) "ううう") こうしたいのですが(//で囲まれていればitalic、**で囲まれていればem、\*は*に)、 (defun wiki-syntax->html-like-sexp (text) ;; cl-ppcre (ppcre:register-groups-bind (first second third) ("^(.*?)\\*\\*(.+?)\\*\\*(.*?)$" text) (list first (list :em second) third))) このように書くと:italicに対応するため正規表現を複雑にしなければなりません 読み込んだ文字列全体を:pでまとめるというのも入れると、こんがらがりそうです どうすればいいのでしょう?
867 名前:デフォルトの名無しさん mailto:sage [2012/02/08(水) 20:53:05.55 ] wikiの文法は知らないけど、正規表現でなく、parserを書いてモードで切り替えた方が楽なんじゃない? clikiを見たらwiki用のライブラリもあるみたいだから参考にすると良いんじゃないかな。
868 名前:デフォルトの名無しさん mailto:sage [2012/02/08(水) 20:56:16.48 ] 自己訂正:コメントじゃないからモードの切り替えは要らないか。
869 名前:デフォルトの名無しさん mailto:sage [2012/02/08(水) 21:20:22.06 ] >>867 の言うように、再帰下降パーサを手書きするか、CL-Yaccやmeta-sexpを使うか、 いくつかあるパーサコンビネータライブラリを使うかした方が多分楽だと思う。 多分、最終的にはもっと多くのWiki構文をサポートするんでしょ?
870 名前:デフォルトの名無しさん mailto:sage [2012/02/09(木) 14:41:12.30 ] >>867-869 ありがとうございます。たしかに既存のパーサを利用するのがよさそうですね。 はい。多くのwiki構文をサポートするつもりです。 早速やってみます。
871 名前:866 mailto:sage [2012/02/09(木) 18:55:09.42 ] すみません。続けて質問します。 字句解析を書いたのですが:があらわれると illegal terminating character after a colon: #\ となってしまいます ソースはこちらです paste.lisp.org/display/127608 コロンを特別の字句として解析するにはどうすればいいのでしょうか。
872 名前:デフォルトの名無しさん mailto:sage [2012/02/09(木) 21:21:08.69 ] >>871 :もreadが読んでる。:の解析部分はこの場合には使用されてない。 もともと内部的にもLispではない文字列だからreadは使えない。怠けず全文字処理すべし。
873 名前:デフォルトの名無しさん mailto:sage [2012/02/10(金) 14:34:06.44 ] >>871 cl-yaccを使うなら、lexerもライブラリを使えば?
874 名前:デフォルトの名無しさん mailto:sage [2012/02/11(土) 15:48:00.58 ] >>872 ありがとうございます 指摘を受けてloopのacrossを使って全文字を処理するようこう書き換えました paste.lisp.org/display/127669 処理できたようなのですが、なぜかサンプルと同じように動きません lispuser.net/memo/lisp/2006-03-30-23-58.html の「つくったら早速 REPL で試してみましょう.」以下と同じく出力されると思うのですが >>873 blogs.yahoo.co.jp/oiron_abok/archive/2011/9/21 これを見てcl-lexをいじってみたのですが#\newlineと#\spaceの検出方法がわかりませんでした
875 名前:デフォルトの名無しさん mailto:sage [2012/02/12(日) 02:09:23.54 ] >>874 あんまloop詳しくないけど、do節の使い方が間違ってる気がする。 あと、字句解析器(lexer)はトークンをひとつずつ返せばいいので、 一度に全体を走査する必要ないはず。 ja.wikipedia.org/wiki/%E5%AD%97%E5%8F%A5%E8%A7%A3%E6%9E%90 それと、想定外の結果になったら、問題の切り分けからすると良いと思う。 この場合、まずlexerが正しく動作するか確認すれば、問題の位置を特定できる。 lexerの中にはloopしかない。loopをマクロ展開すると、どうやら値を返すようになってない。 じゃあ、HyperSpecやCLtL2とかのリファレンスを見てみよう、って感じで。
876 名前:デフォルトの名無しさん mailto:sage [2012/02/12(日) 03:22:32.57 ] テンションが上がったので、ちょっと書いてみた。 こんな感じのことがやりたかったってことで良いんだろうか。 paste.lisp.org/display/127683
877 名前:デフォルトの名無しさん mailto:sage [2012/02/12(日) 10:58:50.37 ] >>874 もう要らないかも知れないけど、cl-lexはlexと同じく正規表現で指定する。
878 名前:デフォルトの名無しさん mailto:sage [2012/02/12(日) 18:22:23.84 ] みなさんありがとうございます。 cl-lexを使うパターンと使わないパターンの二つを書いてみました。 >>875-876 たしかにご指摘のとおりloopの部分がおかしかったです。 そしてまさに>>876 の例が行いたかった処理です。うまく動きました。 ただ、コメントにあるように効率的に処理するために一度に複数のトークンを切り出すのが理想的ですが peek-charを使っても一つ先しか見れません paste.lisp.org/display/127703 このようにして先の文字を読み込むのではなく、はじめにpeek-charを使うと今度は": "の読み込みで 引っかかってしまいます。 >>877 正規表現を書き直したら大方うまく動きました。行も判定できました。 ですが、backslashの判定と、パースの結果をまとめる部分がうまくいきません。 cl-lexを使ってこのように書きました。 paste.lisp.org/display/127704 引き続き調べます。
879 名前:デフォルトの名無しさん mailto:sage [2012/02/12(日) 20:40:33.48 ] >>878 > ただ、コメントにあるように効率的に処理するために一度に複数のトークンを切り出すのが理想的ですが なぜトークンを切り出す関数を別に作らない? (t (values :token (get-token c in))) とかすれば, ええんちゃう?
880 名前:デフォルトの名無しさん mailto:sage [2012/02/12(日) 23:42:39.64 ] >>878 分かってるっぽいけど「複数のトークン」じゃなくて、「複数文字のトークン」。 構文解析のときに一文字ずつ解析するより、ブロックごとの方が効率良くなるという話。 とりあえず、ライブラリで字句解析するみたいだからこの辺で止めとく。 あと、コメントに書いたように、"う\うう"だと"ううう"と同じに解釈されるからね。 "う\\うう"じゃないと、文字列にバックスラッシュが含まれることにならない。 あと、colonの区別が付かないのはread-from-stringしてるから。 元の値を使えば良いと思うんだけど、readしてるのは何か事情があるの?
881 名前:デフォルトの名無しさん mailto:sage [2012/02/13(月) 14:12:28.41 ] >>879 ええ。そうしようとしたのですが、うまくできませんでした。 >>880 read-from-stringを使っていたのはミスでした そのまま値を返せばよいだけでした バックスラッシュについても勘違いしていたようで、 他のファイルのテキストから読み込むときにはバックスラッシュをきちんと認識できていました これで問題が無事解決しました お騒がせいたしました
882 名前:デフォルトの名無しさん mailto:sage [2012/02/14(火) 17:57:50.83 ] common lispを使った講義や開発シーンを動画で公開しているところはありますか? schemeのsicpなら ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-001-structure-and-interpretation-of-computer-programs-spring-2005/video-lectures/ がありますが。
883 名前:デフォルトの名無しさん mailto:sage [2012/02/14(火) 18:47:06.73 ] プログラミングを何も知らない私がClispを始めるには何を用意すれば良いのでしょうか win
884 名前:デフォルトの名無しさん mailto:sage [2012/02/14(火) 20:18:01.64 ] winでclispもろもろをそろえるなら lispboxでいいんじゃない? 紫藤のWiki と lispbox で検索
885 名前:デフォルトの名無しさん mailto:sage [2012/02/14(火) 22:19:27.24 ] www.google.co.jp/search?q=common+lisp+video+lecture おなじの物ばかりかもしれないが。
886 名前:デフォルトの名無しさん [2012/02/15(水) 14:08:33.85 ] 長いリストの出力について教えてください。 (print (make-sequence 'list 100)) これをsbclやclispで行うとNIL19個毎に改行されてしまいます。 どうすれば改行せずに出力出来ますか?次工程でgrepなんかを使いたいのです。 よろしくお願いします。
887 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 14:38:12.07 ] >>886 (let ((*print-pretty* nil) (*print-length* nil)) (print (make-sequence 'list 100)))
888 名前:デフォルトの名無しさん [2012/02/15(水) 14:46:42.86 ] >>887 動きました。ありがとうございます。 pretty print絡みだったんですね。
889 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 15:24:36.69 ] >>885 ありがとう slimeの入門動画なんてものがあったんだな 知らなかったよ
890 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 18:43:19.33 ] “@ajiyoshi: NTTデータでcommon lispが使われるようになったりするのか?!w t.co/9zLNfeRs 株式会社数理システムの子会社化について 2012年2月15日 | ニュースリリース | NTTデータ” 株式会社数理システムの子会社化について ttp://www.nttdata.co.jp/release/2012/021500.html
891 名前:デフォルトの名無しさん mailto:sage [2012/02/16(木) 07:02:40.13 ] MSI、NTTデータの子会社になるんだ。 Common Lispユーザにとって色々有益な情報を出してくれる所だから、少し不安。
892 名前:デフォルトの名無しさん [2012/02/17(金) 01:32:25.22 ] sbclでのコンパイルについて教えて下さい。 以下の方法でSBCL 1.0.40.0.debianでは動いていたはずなのですが、 SBCL 1.0.50.0.debianではエラーが出てしまいます。 メモリが少ないために小分けで何万回と実行する予定ですので コンパイル済みのバイナリとしたいのです。 どうすれば良いでしょうか?よろしくお願い致します。 hell.lisp: (print "HELL!") $ sbcl --noinform --disable-debugger --eval "(compile-file \"hell.lisp\")" --eval '(quit)' ; compiling file "/.../hell.lisp" (written 17 FEB 2012 XX:XX:XX AM): ; compiling (PRINT "HELL!") ; /.../hell.fasl written ; compilation finished in 0:00:00.003 $ chmod +x hell.fasl $ ./hell.fasl unhandled SB-C::INPUT-ERROR-IN-COMPILE-FILE in thread #<SB-THREAD:THREAD "initial thread" RUNNING {AA65919}>: READ failure in COMPILE-FILE: SB-INT:SIMPLE-READER-ERROR at 27 (line 2, column 2) on #<SB-SYS:FD-STREAM for "file /.../hell.fasl" {AA697D9}>: illegal sharp macro character: #\
893 名前:デフォルトの名無しさん [2012/02/17(金) 01:34:17.67 ] (つづき) 0: (SB-DEBUG::MAP-BACKTRACE #<CLOSURE (LAMBDA #) {AA75BAD}> :START 0 :COUNT 128) 1: (BACKTRACE 128 #<SB-SYS:FD-STREAM for "standard error" {AA669C9}>) 2: (SB-DEBUG::DEBUGGER-DISABLED-HOOK #<SB-C::INPUT-ERROR-IN-COMPILE-FILE {AA71861}> #<unavailable argument>) 3: (SB-DEBUG::RUN-HOOK *INVOKE-DEBUGGER-HOOK* #<SB-C::INPUT-ERROR-IN-COMPILE-FILE {AA71861}>) 4: (INVOKE-DEBUGGER #<SB-C::INPUT-ERROR-IN-COMPILE-FILE {AA71861}>) 5: (ERROR SB-C::INPUT-ERROR-IN-COMPILE-FILE :CONDITION #<SB-INT:SIMPLE-READER-ERROR "illegal sharp macro character: ~S" {AA71791}>) 6: (SB-C::READ-FOR-COMPILE-FILE #<SB-SYS:FD-STREAM for "file /.../hell.fasl" {AA697D9}> 25) 7: (SB-INT:LOAD-AS-SOURCE #<SB-SYS:FD-STREAM for "file /.../hell.fasl" {AA697D9}> :VERBOSE NIL :PRINT NIL :CONTEXT "loading")
894 名前:デフォルトの名無しさん [2012/02/17(金) 01:34:51.95 ] (つづき) 8: ((FLET SB-FASL::LOAD-STREAM) #<SB-SYS:FD-STREAM for "file /.../hell.fasl" {AA697D9}> NIL) 9: (LOAD #<SB-SYS:FD-STREAM for "file /.../hell.fasl" {AA697D9}> :VERBOSE NIL :PRINT NIL :IF-DOES-NOT-EXIST T :EXTERNAL-FORMAT :DEFAULT) 10: ((FLET SB-IMPL::LOAD-SCRIPT) #<SB-SYS:FD-STREAM for "file /.../hell.fasl" {AA697D9}>) 11: ((FLET #:WITHOUT-INTERRUPTS-BODY-[PROCESS-SCRIPT]69)) 12: (SB-IMPL::PROCESS-SCRIPT "./hell.fasl") 13: (SB-IMPL::TOPLEVEL-INIT) 14: ((FLET #:WITHOUT-INTERRUPTS-BODY-[RESTART-LISP]30)) 15: ((LABELS SB-IMPL::RESTART-LISP)) unhandled condition in --disable-debugger mode, quitting $
895 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 05:07:44.25 ] lispboxをXPで使いたいんだがbat実行しても動かん; 落としてきてbat実行するだけじゃダメなのかこれ? linuxのはsh実行するだけで普通に動いたんだが
896 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 05:39:03.41 ] 追記:後、時々、win版は自動インストーラがついてるって書いてるブログあるけど、 これは昔のバージョンだけ?lispbox-0.7には入ってないみたいだけど
897 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 06:20:45.30 ] batファイルをどう実行したの? ダブルクリックではなくコマンドプロンプトから実行すれば 何かしらエラーメッセージでも出そうなものだけど
898 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 06:46:01.31 ] >>892 むしろ、その話が事実だと、前はFASLをそのまま実行できたということに。マジですか。 SBCLでバイナリを作るには、cl:compile-fileじゃなくてsbcl-ext:save-lisp-and-dieを使えば大丈夫。 Common Lispでは(Cとかでもそうだけど)コンパイルと実行形式を作ることとは別なのでご注意。 cl.cddddr.org/index.cgi?%bd%e8%cd%fd%b7%cf%3a%bc%c2%b9%d4%a5%d5%a5%a1%a5%a4%a5%eb%a4%ce%ba%ee%a4%ea%ca%fd ただ、メモリの消費量とバイナリにすることって、多分あんまり関係ないと思うけど、 それはそれで大丈夫なんだろうか。
899 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 08:02:38.86 ] >>897 すいません、自己解決しました; windowsのユーザーフォルダ名が日本語だったのでそれが原因でエラーが 起きてた模様 レスありがとうございました
900 名前:デフォルトの名無しさん [2012/02/17(金) 13:12:34.76 ] >>898 ありがとうございます。 >むしろ、その話が事実だと、前はFASLをそのまま実行できたということに。マジですか。 faslにはシバン(#!/usr/bin/sbcl --script)が付加されてるので実質はsbcl呼んでるんですけどね。 0.50にも付いてるのですが動かなくなりました。 >SBCLでバイナリを作るには、cl:compile-fileじゃなくてsbcl-ext:save-lisp-and-dieを使えば大丈夫。 save-lisp-and-die時のTOPLEVELの指定が分かりません。 スクリプトとコンパイルのソースを共有したかったので。 実行時型チェックすれば良いのだろうけど。 >ただ、メモリの消費量とバイナリにすることって、多分あんまり関係ないと思うけど、 起動に掛かる時間を減らしたいのです。 コンパイルとか数秒掛かるでしょ。何万回とかになると何時間にもなるのではないかと。 実際は何百万回とかだた。
901 名前:デフォルトの名無しさん [2012/02/17(金) 13:27:19.85 ] 補足です。 # save-lisp-and-die時のTOPLEVELの指定が分かりません。 WEBだと関数を指定しているものばかりなのですが、 スクリプトの場合は関数の呼び出しまで記述する必要があり 共用させるのに「おまじない」が必要になります。 例示した様なスクリプト形式のままで実行出来る コンパイルの方法が分からないとの意味です。
902 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 14:18:49.78 ] >>900 なるほど。そちらの事情は把握できたと思う。 とりあえず、1.0.51以降でのFASL周りの変更は、型関係の不具合修正だけなはずなので、 1.0.55でも直ってない気はする。1.0.40以降のリリースノートにも書いてないように見える。 それって正式な機能なのかな? マニュアルのFASLの項には特に書いてない感じだけど。 正式な機能ならLaunchpadへ報告どうぞ。そうでなくとも、MLで聞いてみても良いかも。 自分なら、トップレベルの関数を利用する形にスクリプトのコードを自動変換し、 それをコンパイルしてロード、save-lisp-and-dieするまでの処理を自分で書いちゃって、 今度からそれを使うようにすると思う。一度書いちゃえば次からは使い回しもできるし。 ただ、いかにもkludgyではあるので、そちらのお気には召さないかも。 それと、多分バイナリにまでする必要はなくて、ロードした状態のイメージを保存して、 それを処理系を起動するときのイメージとして指定すれば、同じ効果が得られると思う。 ロード時間を削るために良く使われる手じゃないかと。
903 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 18:03:16.60 ] >>900 いまいち何がしたいのか理解できてないけど、バイナリにしたいのではなくて、コンパイル済のファイルを呼び出したいだけではないの? シバンに任せずに普通にloadしてはいけないの?
904 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 18:07:10.83 ] >>900 エラーの直接の原因としてはfaslファイルの2行目の# FASLの部分でマクロキャラクタと判別してるからだと思う。
905 名前:デフォルトの名無しさん [2012/02/17(金) 20:30:39.44 ] 沢山のコメントありがとうございます。 >>902 LISP初心者なんでLaunchpadとかよく分かりません。 ベテランLISPerが誰も困ってないのなら仕様どおりなのでしょう。 処理時間の関係だけなので実はソースを弄ってsave-lisp-and-dieで既に動かしてはいます。 今まで便利だったのでそのまま使えたらと考えました。 >ただ、いかにもkludgyではあるので、そちらのお気には召さないかも。 ソースコードの可読性が損なわれないなら問題ありません。 >トップレベルの関数を利用する形にスクリプトのコードを自動変換し、 LISPならこんな事も簡単?に出来るのでしょうか。勉強してみます。 >ロードした状態のイメージを保存して、それを処理系を起動するときのイメージとして指定すれば、 これってsave-lisp-and-dieの事ですよね。 >>903 個人的にsave-lisp-and-dieの方法も検討していたので書き方が混乱していました。 目的は処理時間の短縮なので方法には拘りません。今まで(とは言っても数日ですが) 動いていたのが環境を変えたら動かなくなったのでどうなったのかなと。 >>904 なるほど。 実は0.40ではシバン付けたままでもコンパイルが通ってたんですよ。 シャープマクロ?の解析方法が変わったのかもしれませんね。
906 名前:デフォルトの名無しさん mailto:sage [2012/02/18(土) 00:55:04.52 ] >>905 Launchpadってのは、オープンソースプロジェクトのホスティングサービスで、 その機能のひとつであるバグトラッキングシステムをSBCLは使ってる。 非公式な機能でなければ、開発者に不具合報告してみれば良いのでは、って話。 イメージの件はそう。:executable tを指定しなければ単なるコアイメージができる。 あと、コードの変換については、別にそんな難しいことを言ってるわけじゃなくって、 こういうのをcompile-fileの代わりに使えば良いんじゃないかと思う。 (defun script->executable (exe-file-name src-file-name) (let ((tmp-file-name (format nil "~a.tmp" src-file-name)) (toplevel-symbol (gentemp "TOPLEVEL"))) (with-open-file (src src-file-name) (with-open-file (tmp tmp-file-name :direction :output :if-exists :error) (format tmp "(defun ~a ()~%" toplevel-symbol) (do ((line (read-line src nil) (read-line src nil))) ((null line)) (write-line line tmp)) (format tmp "~&)~%"))) (compile-file tmp-file-name) (load tmp-file-name) (delete-file tmp-file-name) (sb-ext:save-lisp-and-die exe-file-name :toplevel toplevel-symbol :executable t)))
907 名前:デフォルトの名無しさん [2012/02/18(土) 18:08:27.54 ] >>906 コードまでありがとうございます。全体をdefunで括っても構わないのですね。 何となくdefunやrequireなんかを除外しないといけない様な気がしていました。 早速シバンの除去とコマンドラインから起動出来る様にしました。 これで今まで同様の操作で行けます。本当にありがとうございました。
908 名前:デフォルトの名無しさん [2012/02/18(土) 18:09:12.81 ] あと、皆様ごめんなさい。 SBCL自体では *シバンはサポートしてない* みたいです。 私の環境で動いたのは~/.sbclrcに以下を記述していた為でした。 (同様な記述がいくつもありますがおそらくwww.kono.cis.iwate-u.ac.jp/~hiki/?SBCL からのコピペ) 0.40でも0.50でも全く同じに設定(FTPでコピーしたのでcksum値も同じ)してあるのですが、 動作が変わった理由が分かる方おられますか? なお、上記代替策がありますのでそれ程逼迫したものではありません。 お騒がせして申し訳ありませんでした。 ;;; If the first user-processable command-line argument is a filename, ;;; disable the debugger, load the file handling shebang-line and quit. (let ((script (and (second *posix-argv*) (probe-file (second *posix-argv*))))) (when script ;; Handle shebang-line (set-dispatch-macro-character #\# #\! (lambda (stream char arg) (declare (ignore char arg)) (read-line stream))) ;; Disable debugger (setf *invoke-debugger-hook* (lambda (condition hook) (declare (ignore hook)) ;; Uncomment to get backtraces on errors ;; (sb-debug:backtrace 20) (format *error-output* "Error: ~A~%" condition) (quit))) (load script) (quit)))
909 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 03:31:07.45 ] stumpwmはそろそろ実用してもいいのだろうか
910 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 19:41:19.23 ] emacsのslimeを使っていて疑問に思ったのですが、 slimeやACLのIDEができる前のcommon lispの開発は どういう環境で行っていたのでしょう? まさかとは思いますが括弧の対応を一つ一つ目で確認していたのですか
911 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 19:47:39.55 ] Emacsが処理系の中に実装されていたのです。MacLisp, Symbolics 二昔前のLispは統合開発環境しかなかったんです。(ちょっと嘘w) というか統合開発環境とはLispのことでした。(Basicとかもあったけどw)
912 名前:SCHEME餃子 ◆8X2XSCHEME mailto:sage [2012/02/20(月) 20:00:20.08 ] 今だと OS, 言語処理系, 開発環境 という概念が分かれているけど、 昔はそれほどきちんとした線引きが無かった。 今でも厳密に定義付けされているわけではない。 俺は世代的にそれほど古い時代を知ってるわけじゃないが、 N88-Basic (DISK版) が OS であり 言語処理系であり エディタ であり デバッガでありアセンブラであったことは知ってる。 (使ってた) それと似たような感じなのかなぁ?
913 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 23:02:35.23 ] Emacs としては標準で LISP モードがあったし、 さらに、各処理系ごとに独自の emacs モードを添付していたりしてた。 統合環境としては SLIME の前 (90年代) には ILISP というものががあった。 自分の経験(ここ20年)でいえば、手で括弧対応ってのは一度もなかったね。
914 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 23:37:47.09 ] うろ覚えなんだけど、昔、超括弧ってあったよね? ] を入力すると括弧全部閉じたことになるやつ。 エディタが賢くなって無意味になったけど。
915 名前:デフォルトの名無しさん mailto:sage [2012/02/21(火) 00:40:57.06 ] [もあったよ。 ]で最初の[まで全部閉じる。 要するに[(([((]]は、(((((())))))と同じ。
916 名前:デフォルトの名無しさん mailto:sage [2012/02/21(火) 01:10:50.04 ] みんな若いんだなぁ PC-8001でカセットテープからLispインタープリタ読み込んで 左かっこで指折って右かっこで指伸ばして数えてたこと思いだした
917 名前:デフォルトの名無しさん mailto:sage [2012/02/21(火) 11:36:03.91 ] [(((;゚Д゚]
918 名前:デフォルトの名無しさん mailto:sage [2012/02/21(火) 11:42:33.18 ] 911です。皆さんありがとうございます。 知らない話ばかり聞けてうれしいです。 たしかgaucheのshiroさんだったと思うのですが common lispはそれ一つで完結する開発環境を持っているとおっしゃっていた気がしますが 伝統的なものなのですね。勉強になりました。
919 名前:デフォルトの名無しさん mailto:sage [2012/02/21(火) 21:12:52.60 ] >>914-915 それは凶悪シンタックスだな。
920 名前:デフォルトの名無しさん mailto:sage [2012/02/22(水) 09:53:27.22 ] lisp始めたてだけどまだまだ括弧の多さになれない。
921 名前:866 mailto:sage [2012/02/22(水) 16:21:37.34 ] 字句解析について質問していたものです。その節はありがとうございました。 今度はcl-yaccについてお聞きしたいのですが、 paste.lisp.org/display/127909 ソース冒頭に書いた3点に対応するにはどう書き換えればよいでしょうか。
922 名前:デフォルトの名無しさん mailto:sage [2012/02/22(水) 21:20:24.55 ] Common Lisp はそれ単体で完結した開発環境ではない。 その証拠にエディタを起動する手続き ed が存在する。
923 名前:デフォルトの名無しさん mailto:sage [2012/02/22(水) 21:54:17.92 ] edは内部で実装されてる関数でもいいんだけども。 (ed '関数名) (ed "ファイル名") こんな関数でもいいし。 CMU Common Lispでは内部にEmacs-likeなeditor, HEMLOCKが実装されていて、 ed関数を実行するとHEMLOCKが呼び出された。 最近使ってないから今もそうかは知らない。
924 名前:デフォルトの名無しさん mailto:sage [2012/02/23(木) 07:41:50.10 ] sites.google.com/site/shidoinfo/Home/programing-lang/%E9%96%A2%E6%95%B0%E5%9E% 8B%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E8%A8%80%E8%AA%9E /lisp/common-lisp/%E5%88%9D%E5%BF%83%E8%80%85%E3%81%AE%E7%82%B A%E3%81%AElisp%E7%92%B0%E5%A2%83 ここのlispboxの使い方の項なんですが、 smartcalcconsoleini.lispをc-c c-kでコンパイルしようとしても 1 compiler notes: smartcalcconsoleini.lisp:14:1: warning: Undeclared free variable *WARN-ON-FLOATING-POINT-CONTAGION* Compilation failed. となってしまうんですが、どうしたらいいのでしょうか?
925 名前:924 mailto:sage [2012/02/23(木) 09:37:42.03 ] 失礼、自己解決しました; 普通に (load "smartcalcconsoleini.lisp") で動きました; 手順にコンパイルするよう書いてあったのでそうしたのですが、、、 動いてよかったけどなんで動いたのか・・・;
926 名前:デフォルトの名無しさん mailto:sage [2012/02/24(金) 02:42:41.49 ] PAIP邦訳の5章の演習問題の回答に5.19とあるのですが5.18の表記ミスですか?