1 名前:デフォルトの名無しさん mailto:sage [2009/07/27(月) 10:15:31 ] ※ ここはCommon Lisp、SchemeをはじめとするLisp族全般のスレです ※ ■過去スレ Part26: ttp://pc12.2ch.net/test/read.cgi/tech/1240567959/ Part25: ttp://pc12.2ch.net/test/read.cgi/tech/1231856193/ Part24: ttp://pc11.2ch.net/test/read.cgi/tech/1224939205/ Part23: ttp://pc11.2ch.net/test/read.cgi/tech/1215875388/ Part22: ttp://pc11.2ch.net/test/read.cgi/tech/1211381920/ Part21: ttp://pc11.2ch.net/test/read.cgi/tech/1207300697/ Part20: ttp://pc11.2ch.net/test/read.cgi/tech/1205021786/ Part19: ttp://pc11.2ch.net/test/read.cgi/tech/1200237296/ Part18: ttp://pc11.2ch.net/test/read.cgi/tech/1186922295/ Part17: ttp://pc11.2ch.net/test/read.cgi/tech/1177065699/ Part16: ttp://pc11.2ch.net/test/read.cgi/tech/1172404795/ Part15: ttp://pc11.2ch.net/test/read.cgi/tech/1151025773/ Part14: ttp://pc11.2ch.net/test/read.cgi/tech/1132275726/ Part13: ttp://pc11.2ch.net/test/read.cgi/tech/1115901841/ Part12: ttp://pc11.2ch.net/test/read.cgi/tech/1100229366/ Part11: ttp://pc11.2ch.net/test/read.cgi/tech/1091456033/ Part10: ttp://pc11.2ch.net/test/read.cgi/tech/1075630259/ Part09: ttp://pc11.2ch.net/test/read.cgi/tech/1069594582/ Part08: ttp://pc5.2ch.net/tech/kako/1058/10582/1058263391.html Part07: ttp://pc5.2ch.net/tech/kako/1042/10421/1042167213.html Part06: ttp://pc3.2ch.net/tech/kako/1031/10315/1031560687.html Part05: ttp://pc3.2ch.net/tech/kako/1023/10230/1023091882.html Part04: ttp://pc.2ch.net/tech/kako/1016/10162/1016211619.html Part03: ttp://pc.2ch.net/tech/kako/1008/10082/1008220265.html Part02: ttp://pc.2ch.net/tech/kako/1002/10025/1002584344.html Part01: ttp://piza2.2ch.net/tech/kako/987/987169286.html ■テンプレート置き場 ttp://wiki.fdiary.net/lisp/ (id:guest pass:cl)
2 名前:デフォルトの名無しさん mailto:sage [2009/07/27(月) 10:17:59 ] ■仕様関連 □The final public draft of the ANSI X3.226-1994 (英語) ttp://lispm.dyndns.org/news?ID=NEWS-2009-02-22-1 □CLtL2: Common Lisp the Language 2nd edition (英語) ttp://www-2.cs.cmu.edu/Groups/AI/html/cltl/cltl2.html □CLHS: Common Lisp Hyper Spec (英語) ttp://www.lispworks.com/documentation/HyperSpec/Front/index.htm □Common Lisp Quick Reference (英語) ttp://clqr.berlios.de/ □R5RS: Revised(5) Report on the Algorithmic Language Scheme (英語) ttp://swiss.csail.mit.edu/~jaffer/r5rs_toc.html □R5RS: Revised(5) Report on the Algorithmic Language Scheme (日本語) ttp://www.sci.u-toyama.ac.jp/~iwao/Scheme/r5rsj/html/r5rsj.html □ERR5RS: A proposal for an Extended R5RS Scheme (英語) ttp://scheme-punks.cyber-rush.org/wiki/index.php?title=ERR5RS:Charter □R6RS: Revised(6) Report on the Algorithmic Language Scheme (英語) ttp://www.r6rs.org/final/html/r6rs/r6rs.html ■Lisp全般に関する情報源 □LISP - Wikipedia (日本語) ttp://ja.wikipedia.org/wiki/LISP □Association of Lisp Users (英語): 米国のLispユーザ会です。 ttp://www.alu.org/alu/home □日本Lispユーザ会 (日本語): 各種処理系や関連書籍の一覧等。 ttp://jp.franz.com/jlug/index.html □LispUser.net (日本語): Lisp関連の有用な情報がまとめられています。Common Lispの話題が中心。 ttp://lispuser.net/ □John McCarthy's Home Page (英語): Lispの生みの親、John McCarthyのサイト。 ttp://www-formal.stanford.edu/jmc/ □どう転んでもLisp (日本語): 竹内郁雄氏による発表のスライドです。 ttp://jp.franz.com/base/seminar/2005-11-18/SeminarNov2005-Takeuchi.files/v3_document.htm
3 名前:デフォルトの名無しさん mailto:sage [2009/07/27(月) 10:19:22 ] ■Common Lispに関する情報源 □Common Lisp - Wikipedia (日本語) ttp://ja.wikipedia.org/wiki/Common_Lisp □CLiki (英語): Common Lisp関連のリソースが集積されています。 ttp://www.cliki.net/index □Common-Lisp.net (英語): 多くのプロジェクトがホスティングされています。 ttp://common-lisp.net/ □CMU Common Lisp Repository (英語): 新旧様々なプログラムが置いてあります。 ftp://ftp.cs.cmu.edu/afs/cs/project/ai-repository/ai/lang/lisp/0.html □The EncyCMUCLopedia (英語): CMUCL関連文書。CMUCLユーザーでなくとも有益なはず。 ttp://www.isr.ist.utl.pt/library/docs/encycmuclopedia/doc/ □The Common Lisp Cookbook (英語): いわゆるCookbookです。 ttp://cl-cookbook.sourceforge.net/ ■Schemeに関する情報源(1) □Scheme - Wikipedia (日本語) ttp://ja.wikipedia.org/wiki/Scheme □プログラミング言語Scheme (日本語): Schemeの人はまずここを見ましょう。 ttp://www.sci.u-toyama.ac.jp/~iwao/Scheme/scheme.html □Scheme-users.jp (日本語): Schemeユーザのためのハブサイトです。 ttp://scheme-users.jp/ □Schemeへの道 (日本語): Schemeの入門サイト。 ttp://www.stdio.h.kyoto-u.ac.jp/~hioki/gairon-enshuu/SchemeNotes/scheme.html □独習Scheme三週間 (日本語): Schemeの教科書。 ttp://www.sampou.org/scheme/t-y-scheme/t-y-scheme-Z-H-1.html □Practical Scheme (日本語): Scheme処理系「Gauche」の作者である川合史朗氏のサイト。 Paul Grahamの「普通のやつらの上を行け」など、興味深い文書を沢山翻訳されています。 ttp://practical-scheme.net/index-j.html
4 名前:デフォルトの名無しさん mailto:sage [2009/07/27(月) 10:20:08 ] ■Schemeに関する情報源(2) □Bibliography of Scheme-related Research (英語): Scheme関連の論文リンク集。 ttp://library.readscheme.org/ □Scheme Hash (英語): S式でXMLを使えるようにするSXML等。 ttp://okmij.org/ftp/Scheme/index.html □(Scheme) (Lisp) (日本語): 各種Scheme処理系をCygwin上でビルドする方法など。 ttp://www.geocities.co.jp/SiliconValley-PaloAlto/7043/ □SLIB (英語): Scheme用のライブラリとして有名なSLIBのサイトです。 ttp://swiss.csail.mit.edu/~jaffer/SLIB □Scheme Requests for Implementation (英語): いわゆる「SRFI」のサイトです。 ttp://srfi.schemers.org/ □継続関連 □なんでも継続 (日本語) ttp://practical-scheme.net/docs/cont-j.html □Schemeへの道:継続 (日本語) ttp://www.stdio.h.kyoto-u.ac.jp/~hioki/gairon-enshuu/SchemeNotes/continuation.html □継続の使い方 (日本語) ttp://www.geocities.co.jp/SiliconValley-PaloAlto/7043/index.html#continuation □継続の使用法 (日本語) ttp://www.ice.nuie.nagoya-u.ac.jp/~h003149b/lang/block.html □Kahua: 継続ベースのアプリケーションサーバ。 ttp://www.kahua.org/
5 名前:デフォルトの名無しさん mailto:sage [2009/07/27(月) 10:20:51 ] ■Common Lisp関連の書籍 □Common Lisp: A Gentle Introduction to Symbolic Computation (英語): Common Lispを使った非常に丁寧なプログラミング入門書。 全文がpdf形式でダウンロードできます。 ttp://www.cs.cmu.edu/~dst/LispBook/ □Common Lisp: An Interactive Approach (英語): 人工知能の大家、Stuart ShapiroによるCommon Lispの教科書。 全文がpdf形式でダウンロードできます。 ttp://www.cse.buffalo.edu/~shapiro/Commonlisp/ □On Lisp (英語/日本語): LispハッカーPaul Grahamが、Lispの力の源泉であるマクロプログラミングを解説。 ttp://ssl.ohmsha.co.jp/cgi-bin/menu.cgi?ISBN=978-4-274-06637-5 ttp://user.ecc.u-tokyo.ac.jp/~tt076524/onlispjhtml/ (日本語訳HTML版) ttp://www.paulgraham.com/onlisp.html (英語原文がダウンロード可) □Practical Common Lisp (英語/日本語): S式の羅列で現実的な問題をどう解くのか、そのギャップに悩まされてる人に。 全文がオンラインで読めます。日本語版は『実践Common Lisp』として出版されています。 ttp://www.gigamonkeys.com/book/ ttp://ssl.ohmsha.co.jp/cgi-bin/menu.cgi?ISBN=978-4-274-06721-1 ttp://pcl.lispuser.net/ (日本語版非公式サポートページ)
6 名前:デフォルトの名無しさん mailto:sage [2009/07/27(月) 10:21:36 ] ■Scheme関連の書籍 □Structure and Interpretation of Computer Programs (英語/日本語): 通称「SICP」として知られる計算機科学の教科書。全文がオンラインで読めます。 日本語版は『計算機プログラムの構造と解釈』として出版されています。 ttp://mitpress.mit.edu/sicp/ ttp://sicp.ipl.t.u-tokyo.ac.jp/ (日本語版サポートサイト) □Programming Languages: Application and Interpretation (英語): ブラウン大学で使われている、Schemeを使ったプログラミング言語論の教科書。 SICPでは触れられていない継続についても、Webアプリと関連づけて詳述されています。 ttp://www.cs.brown.edu/~sk/Publications/Books/ProgLangs/ 全文がpdf形式でダウンロードできます。 □How to Design Programs (英語): Schemeを使った優れたプログラミング入門書。全文がオンラインで読めます。 ttp://www.htdp.org/2003-09-26/Book/ □The Little Schemer/The Seasoned Schemer (英語): Schemeの教科書として定評のある「Schemerシリーズ」のサポートページです。 ttp://www.ccs.neu.edu/home/matthias/BTLS/ ttp://www.ccs.neu.edu/home/matthias/BTSS/ □The Scheme Programming Language (英語): Schemeの入門書。全文がオンラインで読めます。 ttp://www.scheme.com/tspl3/ □入門Scheme (日本語): 幻となったScheme入門書。全文がダウンロードできます。 ttp://www4.ocn.ne.jp/~inukai/scheme_primer_j.html □プログラミングGauche (日本語): Scheme処理系言語「Gauche」の初の解説書! ttp://ssl.ohmsha.co.jp/cgi-bin/menu.cgi?&ISBN=978-4-87311-348-7 ttp://karetta.jp/book/gauche-hacks (立ち読み版) ttp://karetta.jp/book-cover/programming-gauche (サポートページ)
7 名前:デフォルトの名無しさん mailto:sage [2009/07/27(月) 10:33:23 ] ■Common Lispの実装 □Steel Bank Common Lisp: 代表的な処理系。CMUCLより派生。 ttp://www.sbcl.org/ □CMUCL: カーネギーメロン大学で開発された処理系。 ttp://www.cons.org/cmucl/ □GNU CLISP: バイトコード変換系。 ttp://www.clisp.org/ □Clozure CL: OpenMCLから改名されました。 ttp://trac.clozure.com/openmcl □Embeddable Common Lisp: Cで書かれたプログラムへの埋め込みが可能な処理系。 ttp://ecls.sourceforge.net/ □Armed Bear Common Lisp: JVM上で動く処理系。JVMバイトコード変換系。 ttp://armedbear.org/abcl.html □Allegro Common Lisp: 代表的な商用処理系。無料試用版も有り。 ttp://www.franz.com/products/allegrocl/ □LispWorks: 商用処理系。無料試用版も有り。 ttp://www.lispworks.com/ □Corman Common Lisp: Windows専用の商用処理系。無料試用版も有り。 ttp://www.cormanlisp.com/ □Scieneer Common Lisp: CMUCLより派生した商用処理系。非商用利用なら無料。 ttp://www.scieneer.com/scl/index.html
8 名前:デフォルトの名無しさん mailto:sage [2009/07/27(月) 10:34:20 ] ■Schemeの実装(1) □Gauche: マルチバイト文字に対応したR5RS準拠処理系。川合史朗氏作。 ttp://practical-scheme.net/gauche/index-j.html ttp://jp.youtube.com/watch?v=WEBOdWyGE3E (川合氏によるGaucheに関するトーク) □PLT Scheme: DrScheme、MzSchemeなどのR5RS準拠および独自拡張のScheme処理系。 ttp://www.plt-scheme.org/ □Scheme48: R5RS準拠のバイトコードインタプリタ。 ttp://www.s48.org/ □Gambit-C: R5RS準拠処理系。 ttp://dynamo.iro.umontreal.ca/~gambit/wiki/index.php/Main_Page □Chicken: R5RS準拠処理系。スタンドアロン実行ファイルが簡単に作成可能。 ttp://www.call-with-current-continuation.org/ □Stalin: 激烈な最適化を施す処理系。人間の書くCコードより速いという噂。 ttp://cobweb.ecn.purdue.edu/~qobi/software.html ftp://ftp.ecn.purdue.edu/qobi/fdlcc.pdf (Stalinの最適化技術を解説した論文) □Bigloo: CLR用のコードを吐けるようになったらしい。 ttp://www-sop.inria.fr/mimosa/fp/Bigloo/ □Guile: R5RS準拠のGNU公式拡張用言語。もちろんSLIBも使えます。 ttp://www.gnu.org/software/guile/guile.html □JScheme: Javaで書かれたR4RS準拠処理系。Javaインターフェイスをサポート。 ttp://jscheme.sourceforge.net/jscheme/main.html
9 名前:デフォルトの名無しさん mailto:sage [2009/07/27(月) 10:35:05 ] ■Schemeの実装(2) □Chez Scheme: R6RS準拠の商用処理系。インタプリタはフリー。 ttp://www.scheme.com/ □IronScheme: Microsoft DLR上で動作するR6RS準拠処理系。ERR5RSもサポート予定。 ttp://www.codeplex.com/IronScheme □Ypsilon Scheme System: 藤田善勝氏が開発中のR6RS準拠処理系。 ttp://www.littlewingpinball.net/mediawiki-ja/index.php/Ypsilon_Scheme_System □Mosh: higepon氏が開発中のR6RS準拠処理系。 ttp://code.google.com/p/mosh-scheme/ □SECDR-Scheme: SECD machine modelに基づく実装。 ttp://lily.fan.gr.jp/~kmd/adhoc/view.rhtml?n=SECDR-Scheme_woyomu □LispMe: Palm上で動く処理系。これもSECD virtual machine。 ttp://www.lispme.de/lispme/ □Minischeme: 1ファイルに凝縮された処理系。 ttp://tinyscheme.sourceforge.net/minischeme.tar.gz □TinyScheme: Minischemeを色々弄ったもの。 ttp://tinyscheme.sourceforge.net/ □Schemix: Linuxのkernelへのパッチで/dev/として扱えるTinyScheme。 ttp://www.abstractnonsense.com/schemix/ □Bit: Minischemeよりも小さい(?)バイトコード変換系。 ttp://www.iro.umontreal.ca/~dube/ □KI-Scheme, AM-Scheme, etc... ttp://www.nifty.com/download/dos/prog/lisp/
10 名前:デフォルトの名無しさん mailto:sage [2009/07/27(月) 10:35:51 ] ■その他のLisp実装 □awklisp: Awkで書かれたわずか500行のLispインタプリタ。 ttp://www.accesscom.com/~darius/ □CAMPUS LIsP Lemon version: Cでわずか1000行。 ttp://www-masu.ist.osaka-u.ac.jp/~kakugawa/hacks/clisp/ □Lisp interpreter in AS3: ActionScriptで書かれたLispインタプリタ。 ttp://www.solve-et-coagula.com/?p=8 □newLISP: Lispライクな軽量スクリプト言語。 ttp://www.newlisp.org/ □Arc: Paul Grahamが開発中の新しいLisp。 ttp://arclanguage.org/ □Clojure: MLやHaskellの特長を取り入れた新しいLisp。JVMバイトコード変換系。 ttp://clojure.org/ □Qi: MLやHaskellの特長を取り入れた新しいLisp。型の定義にシーケント計算表記を用います。 ttp://www.lambdassociates.org/ □GOO: DylanとSchemeの影響を受け、OOPをサポートした新しいLisp。 ttp://people.csail.mit.edu/jrb/goo/ □Liskell: Lispの顔をしたHaskell。 ttp://liskell.org/
11 名前:デフォルトの名無しさん mailto:sage [2009/07/27(月) 10:36:56 ] ■コミュニティ、イベント関連 □初心者が集うIRC 布教してくれる先生も大募集です。 irc.scenecritique.com:6667 #Lisp_Scheme □Shibuya.lisp 東京地区、特に渋谷周辺半径2万キロのLisp系プログラマによる非営利団体。 第3回テクニカルトークは2009年7月4日開催予定です。 ttp://shibuya.lisp-users.org/ □GaucheNight 第2回 (2008年3月8日) 「SchemeとGaucheとλとS式を愛するすべての人に贈るマクロな一夜」 出演:川合史朗、伊藤篤、山下伸夫、笹田耕一、ひげぽん、zick、 黒田寿男、えんどうやすゆき、ほか ttp://practical-scheme.net/wiliki/wiliki.cgi?gauche.night □GaucheNight 第1回 (2007年5月9日) 出演:川合史朗、黒田寿男、まつもとゆきひろ(Skype中継)、小飼弾、 伊東勝利、久井亨、小黒直樹、ほか ttp://practical-scheme.net/wiliki/wiliki.cgi?GaucheNight%3a2007 □黒田寿男氏関連 (黒板の人) ttp://pc10.2ch.net/test/read.cgi/tech/1151025773/901-909 ttp://www.bookshelf.jp/2ch/tech/1151025773.html#901 □Schemeのマクロに関する黒田氏の所感 ttp://cl-www.msi.co.jp/solutions/knowledge/lisp-world/articles/scheme □それに対する川合史朗氏の応答 ttp://practical-scheme.net/wiliki/wiliki.cgi?Scheme%3a%e3%83%9e%e3%82%af%e3%83%ad%3aCommonLisp%e3%81%a8%e3%81%ae%e6%af%94%e8%bc%83 □それに対する黒田氏の再反論 ttp://cl-www.msi.co.jp/solutions/knowledge/lisp-world/articles/gauche-night □それに対する川合氏の応答 ttp://practical-scheme.net/wiliki/wiliki.cgi?Scheme%3a%e3%83%9e%e3%82%af%e3%83%ad%3aCommonLisp%e3%81%a8%e3%81%ae%e6%af%94%e8%bc%83%3a%e6%84%8f%e5%91%b3%e8%ab%96 □その他、黒田氏によるLisp関連のエッセイがこちらで読めます。 ttp://cl-www.msi.co.jp/solutions/knowledge/lisp-world/
12 名前:デフォルトの名無しさん mailto:sage [2009/07/27(月) 11:01:15 ] ■2ch関連 □Meadow memo: 2ちゃんねるログ: dat落ちした過去スレの一部が閲覧できます。 ttp://www.bookshelf.jp/2ch/index.html □2ch上にあるLisp関連のスレ 【入門】Common Lisp その6【質問よろず】 ttp://pc12.2ch.net/test/read.cgi/tech/1234884136/ Emacs Lisp 3 ttp://pc12.2ch.net/test/read.cgi/tech/1191875993/ 【GNU】スクリプト言語 Guile【scheme】 ttp://pc12.2ch.net/test/read.cgi/tech/1239985829/ 【SICP】計算機プログラムの構造と解釈 Part2 ttp://pc12.2ch.net/test/read.cgi/tech/1203096230/ 【普通のやつらの】 Arc Language 0 【上を行け】 ttp://pc12.2ch.net/test/read.cgi/tech/1202098949/ 【魔法】リリカル☆Lisp【言語】 ttp://pc12.2ch.net/test/read.cgi/tech/1183396621/ 【CGI】実用比較Lisp vs C/C++【GUI】 ttp://pc12.2ch.net/test/read.cgi/tech/1150501484/ 【ヤパーリ】XMLをS式に置換えていくスレ【LISP最強】 ttp://pc12.2ch.net/test/read.cgi/tech/1140006937/ Lisp@UNIX版 ttp://pc12.2ch.net/test/read.cgi/unix/1019926525/ Lisperこそ真のプログラマーよ!! ttp://pc11.2ch.net/test/read.cgi/prog/1175791979/ LISPってさ〜 ttp://science6.2ch.net/test/read.cgi/sim/1015169050/ 【数式処理システム】 Maxima 【Common Lisp】 ttp://science6.2ch.net/test/read.cgi/math/1220340695/ ■スレ上でSchemeのコードを晒す場合は、こちらをご利用ください。 ttp://codepad.org/
13 名前:デフォルトの名無しさん mailto:sage [2009/07/27(月) 11:52:47 ] >>1 マジで乙。
14 名前:デフォルトの名無しさん mailto:sage [2009/07/27(月) 11:56:11 ] フッ… l! |l| i|li , __ _ ニ_,,..,,,,_ l|!・ω・ :l. __ ̄ ̄ ̄ / ・ω・≡ !i ;li  ̄ ̄ ̄ キ 三 i!| |i  ̄ ̄  ̄ =`'ー-三‐ ― / ; / ; ; ; _,/.,,,// / ヒュンッ /・ω・ / | / i/ //ー--/´ : / / /; ニ_,,..,,,,,_ / ・ω・`ヽ ニ≡ ; .: ダッ キ 三 三 人/! , ; =`'ー-三‐ ―_____从ノ レ, 、
15 名前:デフォルトの名無しさん mailto:sage [2009/07/27(月) 12:31:46 ] >1乙
16 名前:デフォルトの名無しさん mailto:sage [2009/07/27(月) 14:52:17 ] >>1 乙。 すっかり忘れてたな
17 名前:デフォルトの名無しさん mailto:sage [2009/07/27(月) 18:32:54 ] a が nil なら b="b", c="c" a がそれ以外なら b=a, c=a と処理したいのですが どう書けば良いでしょうか? 自分やってダメだった物を書いておきます。 (let ((a nil)) (let ((if a (list '(b a) '(c c)) (list '(b "b") '(c "c")))) (print b) (print c))) 環境は Common Lisp (xyzzy) です。
18 名前:デフォルトの名無しさん mailto:sage [2009/07/27(月) 18:41:14 ] (defun f (a) (cond (a (list (list 'b a) (list 'c a))) (t (list (list 'b "b") (list 'c "c"))))) (f 1) (f nil)
19 名前:デフォルトの名無しさん mailto:sage [2009/07/27(月) 19:05:17 ] (デフン フ(ァ) (コンド(ァ(リスト(リスト 'ブ ァ)(リスト 'ク ァ))) (テ(リスト(リスト 'ブ "バ゙")(リスト 'ク "カ"))))) (フ 1) (フ ニル) ↑見てたら唐突に8bitマシンリスプというのを思いついた 馬鹿にしてるわけじゃないお
20 名前:デフォルトの名無しさん mailto:sage [2009/07/27(月) 19:15:26 ] >>18 ありがとうございます。
21 名前:デフォルトの名無しさん mailto:sage [2009/07/27(月) 19:20:41 ] >>19 ぜんぜんおもしろくないです。
22 名前:デフォルトの名無しさん mailto:sage [2009/07/27(月) 19:28:22 ] デフコン1! デフコン1!
23 名前:デフォルトの名無しさん mailto:sage [2009/07/27(月) 19:37:34 ] 前スレにHarropくさいのが湧いてたな。 Harropよけをまいておこう。 λ... Haskell Haskel Haskell
24 名前:デフォルトの名無しさん mailto:sage [2009/07/27(月) 20:06:03 ] >>1 > ■過去スレ > Part09: ttp://pc11.2ch.net/test/read.cgi/tech/1069594582/ 行方不明になっている模様
25 名前:デフォルトの名無しさん mailto:sage [2009/07/27(月) 20:14:08 ] 技術系のスレを収集してるサイトなかったっけ
26 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 16:56:43 ] なんか再帰を使うおもしろい問題ない? こないだのカタラン数のは良かったよ。
27 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 17:33:52 ] >>26 基本だけど、冪集合を列挙するというのはどうよ。
28 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 17:54:36 ] >>27 難しそうだけど面白そう。 考えてみるよ。
29 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 21:24:16 ] common lisp に list 内の2つの値を入れ替える関数は標準で用意されていますか?
30 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 21:33:01 ] お前の世界のリストは常に2つの値から成るのか
31 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 21:39:42 ] ここまで間抜けな返しは久々に見る。
32 名前:28 mailto:sage [2009/07/28(火) 21:40:35 ] べき集合 書いてみたら長くなった。無駄がありそう。 codepad.org/IvzgMsyr
33 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 21:43:23 ] >>29 自分もそれ考えてた。選択ソートとかバブルソートで必要だけど リストだと効率悪いよね。
34 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 22:25:08 ] (俺は評価する >>30 ) イマイチだな >
35 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 22:42:50 ] 効率が求められる処理に こんなアホな関数の出番はないけど (defun swap (l x y) (let ((tmp (nth x l))) (setf (nth x l) (nth y l)) (setf (nth y l) tmp)))
36 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 23:12:39 ] ベクターに変換すれば多少はいいのだろうか? (define (swap m n ls) (let* ((v (list->vector ls)) (vm (vector-ref v (- m 1))) (vn (vector-ref v (- n 1)))) (vector-set! v (- n 1) vm) (vector-set! v (- m 1) vn) (vector->list v))) Schemeでスマンです。
37 名前:デフォルトの名無しさん mailto:sage [2009/07/29(水) 00:53:37 ] 関数じゃなくてマクロだけど rotatef かなあ。 www.lispworks.com/documentation/HyperSpec/Body/m_rotate.htm まあ、リストのソートならおとなしくマージソートがいいとは思うけど。
38 名前:デフォルトの名無しさん mailto:sage [2009/07/29(水) 01:03:54 ] rotatef いいよね。最初知ったとき感動したわ。
39 名前:29 mailto:sage [2009/07/29(水) 02:53:33 ] >>35 >>36 >>37 ありがとうございます 今回は rotatef を使うことにします。
40 名前:デフォルトの名無しさん mailto:sage [2009/07/29(水) 05:15:33 ] (cdr '(1 2 3)) (nthcdr 1 '(1 2 3)) この2つは等価だと思ってたんですが (pop (cdr '(1 2 3))) (pop (nthcdr 1 '(1 2 3))) これの下側がエラーになってしまいます。 どう書けば回避できるか どなたか教えていただけませんか?
41 名前:デフォルトの名無しさん mailto:sage [2009/07/29(水) 06:16:22 ] >>40 泥縄な解決法としては、 (defun foo (ls n) (if (= n 0) (pop ls) (pop (cdr (nthcdr (- n 1) ls))) )) くらいじゃないですか。 pop とかの代入とか更新とかする系のマクロは 参照先として場所を示す式を取れるわけですけれど、 nthcdr は標準では場所を表す名前として使えるようになっていないので この場合はワンクッション置く必要があります。 突っ込むと説明がややこしいところですけど。仕様的にはだいたいこのへん。 www.lispworks.com/documentation/HyperSpec/Body/05_a.htm
42 名前:デフォルトの名無しさん mailto:sage [2009/07/29(水) 06:46:45 ] >>41 んんん、難しいですね。 提示されたリンク先何度か繰り返して読んでみます。 ありがとうございました。
43 名前:デフォルトの名無しさん mailto:sage [2009/07/29(水) 15:42:26 ] phpのwebサービスがちょっと負荷かかると鯖ごと落としてくれるんだけど common lispやschmeの処理系は、その辺はどのぐらい頑健なの?
44 名前:デフォルトの名無しさん mailto:sage [2009/07/29(水) 16:05:37 ] emacs22に標準で入ってるscheme編集モードをみんな使ってるんだろうか
45 名前:デフォルトの名無しさん mailto:sage [2009/07/29(水) 16:45:19 ] >>41 すいません、良く試してみると返り値は正しいんですが 元のリストの変更は n=0 の時失敗してしまうようです…。 (let ((ls '(1 2 3))) (foo ls 0) ls)
46 名前:27 mailto:sage [2009/07/29(水) 17:01:31 ] >>32 自分が書いたのはこんなの。 Lisp/Schemeはほとんど使ったことないんで書き方がおかしいかもしれないが。 (define (add-elt elt set) (cond ((null? set) (list elt)) ((member elt set) set) (else (cons elt set)))) (define (map-add-elt elt set) (cond ((null? set) '()) (else (map (lambda (m) (add-elt elt m)) set)))) (define (power-set set) (cond ((null? set) '(())) (else (let ((ps (power-set (cdr set)))) (append ps (map-add-elt (car set) ps))))))
47 名前:32 mailto:sage [2009/07/29(水) 17:55:23 ] >>46 ああ〜〜〜〜〜、そうかぁ。 集合の要素を1つ抜いた部分集合を全部の要素について考えたのですが、 ああ、そうですね。全部考える必要などなかったです。
48 名前:デフォルトの名無しさん mailto:sage [2009/07/29(水) 18:38:55 ] 冪集合は格要素を「とる」か「とらない」で再帰すれば良いと考えて こう書いてみました (define (power l) (if (not (pair? l)) (list l) (append (power (cdr l)) ;先頭をとらない (map (pa$ cons (car l)) (power (cdr l))) ;先頭をとる )))
49 名前:デフォルトの名無しさん mailto:sage [2009/07/29(水) 18:42:50 ] こないだカタランの問題、続きがあるので 良かったら考えてみてください 元々は小町算を解くために考えた問題です 結局、カタランが出来たのにこれはまだ解けずにいます 問題 2引数を取る演算子のリストと、演算数のリスト(演算子より1個多い)を引数にとって 全ての生成可能な式のリストを生成するkomachiを定義せよ (komachi '(+ - *) '(1 2 3 4)) を実行すると ( (+ (- (* 1 2) 3) 4) (+ (- 1 (* 2 3)) 4) (+ (- 1 2) (* 3 4)) ... ;こんな感じで全パターンが出るまで続く。上の並びは適当 ) この条件をつけるかはお任せ 条件:「演算子、あるいは演算数のみに注目した場合、順序の入れ替えはないものとする」 例えば '(+ -) '(1 2 3)において (+ 1 (- 2 3))を(+ 1 (- 3 2)) ;演算数の順序を入れ替えたのでNG (+ 1 (- 2 3))を(- 1 (+ 2 3)) ;演算子の順序を入れ替えたのでNG こうすると、komachiが生成する式の総数は (演算子は空気と思えばよいので)演算数のカタラン数に一致します。多分。
50 名前:32 mailto:sage [2009/07/29(水) 18:53:31 ] >>48 なるほどよくわかりました。2^nを計算 するアルゴリズムと基本的には同じですね。 要素をとる、とらない、の2通りがあるから。 冪集合の名前の通りだ。
51 名前:27 mailto:sage [2009/07/29(水) 19:25:07 ] >>48 pa$というのは何ですか?mzschemeだとエラーになってしまいます。
52 名前:デフォルトの名無しさん mailto:sage [2009/07/29(水) 19:35:51 ] >>51 (define (pa$ fn . args) (lambda more-args (apply fn (append args more-args))))
53 名前:デフォルトの名無しさん mailto:sage [2009/07/29(水) 20:28:19 ] >>51 部分適用といって、手続きの引数の一部を固定した新たな引数を返す手続き。 例えば、 ((pa$ + 3) 2) ⇒ 5 みたいな。SRFI-26のcutと似たようなもの。cutなら、 ((cut + 3 <>) 2) ⇒ 5 こんな感じ。
54 名前:デフォルトの名無しさん mailto:sage [2009/07/29(水) 20:33:40 ] 新たな引数→新たな手続きの間違い。失礼。
55 名前:デフォルトの名無しさん mailto:sage [2009/07/29(水) 21:11:30 ] 教えてもらってやっと納得のいくコードが書けたよ。 最初に書いたのは無駄だらけだった(笑)。 (define (power-set ls) (if (null? ls) '(()) (let ((subset (power-set (cdr ls)))) (append subset (map (lambda (x) (cons (car ls) x)) subset)))))
56 名前:デフォルトの名無しさん mailto:sage [2009/07/29(水) 22:22:39 ] >>45 おっと失礼。マクロじゃなきゃダメですね。 (defmacro foo (ls n) `(if (= ,n 0) (pop ,ls) (pop (cdr (nthcdr (- ,n 1) ,ls))) ))
57 名前:デフォルトの名無しさん mailto:sage [2009/07/29(水) 23:07:40 ] >>51 mzscheme なら curry ちなみに >>52 の pa$ は片方が空リストになる時にエラーになった
58 名前:デフォルトの名無しさん mailto:sage [2009/07/30(木) 00:37:16 ] >>52 >>53 >>57 curryingのことだったのか。名前の由来には何か歴史的な事情でもある?
59 名前:デフォルトの名無しさん mailto:sage [2009/07/30(木) 02:25:44 ] ((pa$ + 3) 2) ⇒ 5 こんなのは無駄に問題を難しくしてるだけ (+ 3 2) これでいいじゃないか (pa$ + 3) は何を返す? 手続きを作ったところでそれを保存したり表示したりできるわけでもないし 無駄なことをするな
60 名前:デフォルトの名無しさん mailto:sage [2009/07/30(木) 03:20:20 ] >>58 歴史的経緯は知らないけれど、部分適用をあらわすのに$を使うのはgaucheの命名規約。 practical-scheme.net/wiliki/wiliki.cgi?Scheme%3a!%E3%81%A8%3f#H-yofpb1 個人的には、curry って名前なら(lambda (x y z) ...) を (lambda (x) (lambda (y) (lambda (z) ...)))ってしてくれるんじゃないと違和感があるなあ。 可変長引数で困るけど。 >>59 そりゃ実用上はpa$をそんな使い方する人いないでしょ。
61 名前:デフォルトの名無しさん mailto:sage [2009/07/30(木) 07:46:09 ] >>59 作った手続きを束縛して再利用するに決まってんじゃん。 もしかして、複数の引数を持つ手続きを呼ぶ際には、 毎回必ず全ての引数の値が異なるようになる呪いを掛けられてる人ですか? というか、クロージャがファーストクラスな言語でそういう事を言うのが信じられない。
62 名前:デフォルトの名無しさん mailto:sage [2009/07/30(木) 08:07:48 ] >>58 partial apply で $ をつけるのは Haskell の $ 演算子由来だそうな ttp://practical-scheme.net/wiliki/wiliki.cgi?Scheme%3a%e5%88%9d%e5%bf%83%e8%80%85%e3%81%ae%e8%b3%aa%e5%95%8f%e7%ae%b1%3alog00#H-1bifybk
63 名前:デフォルトの名無しさん mailto:sage [2009/07/30(木) 09:17:14 ] カリー化を使うとうまく解ける問題があったら教えてください。
64 名前:デフォルトの名無しさん mailto:sage [2009/07/30(木) 09:37:19 ] 構文糖衣みたいなもんなので特にない
65 名前:デフォルトの名無しさん mailto:sage [2009/07/30(木) 10:08:48 ] (pa$ + 3) とか (cut + 3 <>) とかではなくマクロにして (bind (+ 100 $1)) とか (bind (+ 200 . $rest)) とか書けないかな。 直観的になって嬉しいと思うんだけど。
66 名前:デフォルトの名無しさん mailto:sage [2009/07/30(木) 12:44:20 ] >>65 前以って arity がわかってるんなら syntax-case で codepad.org/29239gmR みたいな感じとか。 (bind 1 (+ 100 $1)) みたいに使う。後者の例はどうするのがいいんだろ。
67 名前:デフォルトの名無しさん mailto:sage [2009/07/30(木) 12:57:17 ] arityを書かなきゃいけないのはダサいな。式の中の$nを調べて自動で出してほしいところ。
68 名前:デフォルトの名無しさん mailto:sage [2009/07/30(木) 13:00:09 ] 一方ロシアは (^(x) (+ 100 x))
69 名前:デフォルトの名無しさん mailto:sage [2009/07/30(木) 13:00:55 ] (define-macro (bind . body) `(lambda ($1) ,@body)) 後者は構文として正しくない
70 名前:デフォルトの名無しさん mailto:sage [2009/07/30(木) 13:06:38 ] > (bind (+ 200 . $rest)) @restとすると展開 $restとすると単値(リスト) がいいかも ((bind (+ 200 @rest)) 300 400) ; ==> 900 ((bind (cons 200 $rest)) 300 400) ; ==> (200 300 400)
71 名前:デフォルトの名無しさん mailto:sage [2009/07/30(木) 14:04:09 ] >>67 LOL の 5.2 節を参考にしてみたんだけどダサいかな。 マクロ引数を flatten してごにょごにょすればそういうのもできるよ
72 名前:デフォルトの名無しさん mailto:sage [2009/07/30(木) 15:20:22 ] >>65 srfi-26 の議論の中で引数の番号つきの部分適用の話が出たことはあるそうだ。 srfi.schemers.org/srfi-26/mail-archive/msg00018.html >>66-67 最も大きい番号を arity とみなす実装。 d.hatena.ne.jp/SaitoAtsushi/20080811/1218380989 確かにどこから rest 引数にすりゃいいのか決められないな。
73 名前:デフォルトの名無しさん mailto:sage [2009/07/30(木) 15:33:03 ] > 確かにどこから rest 引数にすりゃいいのか決められないな。 単純に最も大きい番号の数より多い引数が rest になるんじゃまずいのかな。 式の中で $1, $2, $3, $rest が使われていたら (lambda ($1 $2 $3 . $rest) ...) になるみたいな。
74 名前:デフォルトの名無しさん mailto:sage [2009/07/30(木) 15:55:35 ] >>56 ありがとうございます。 こういう時にマクロを使うんですね。勉強になります。
75 名前:デフォルトの名無しさん mailto:sage [2009/07/30(木) 16:04:53 ] (define-macro (bind1 . body) `(lambda ($1 . $rest) ,@body)) (define-macro (bind2 . body) `(lambda ($2 . $rest) (lambda ($1) ,@body)))
76 名前:デフォルトの名無しさん mailto:sage [2009/07/30(木) 18:59:24 ] 誰か弟子にしてください!!
77 名前:デフォルトの名無しさん mailto:sage [2009/07/30(木) 19:06:06 ] おう! いいぞ。 今日から俺のことを師匠と呼べ。
78 名前:デフォルトの名無しさん mailto:sage [2009/07/30(木) 20:12:50 ] 再帰使って自分を弟子にしろ
79 名前:デフォルトの名無しさん mailto:sage [2009/07/30(木) 20:14:17 ] どこかに終了条件がないと無限ループになるぞ
80 名前:デフォルトの名無しさん mailto:sage [2009/07/30(木) 20:28:49 ] streamにして、毎回弟子を取り出せばおk
81 名前:デフォルトの名無しさん mailto:sage [2009/07/30(木) 20:32:38 ] ((null 弟子) nil)
82 名前:デフォルトの名無しさん mailto:sage [2009/07/30(木) 22:19:40 ] _これって何? どんな時に使うの?
83 名前:デフォルトの名無しさん mailto:sage [2009/07/30(木) 22:42:53 ] >>82 プレースホルダー。 使わない引数とかを表現するのに使う作法。 (define (const a) (lambda _ a)) とか。
84 名前:デフォルトの名無しさん mailto:sage [2009/07/30(木) 22:42:59 ] 引数が必要ない時に使う 透明あぼーんと同じ
85 名前:デフォルトの名無しさん mailto:sage [2009/07/30(木) 22:53:15 ] 仕様にあるんだっけ? いつもdummy、みたいな変数名を付けてた
86 名前:デフォルトの名無しさん mailto:sage [2009/07/30(木) 22:55:17 ] 仕様にはない。 あくまで作法。
87 名前:デフォルトの名無しさん mailto:sage [2009/07/30(木) 22:59:04 ] prologではそれで最適化とかなかったっけ まあフロー解析すりゃいいけど
88 名前:デフォルトの名無しさん mailto:sage [2009/07/30(木) 23:00:47 ] ああ、CLやschemeは_も変数として定義出来るのを忘れてたよ
89 名前:デフォルトの名無しさん mailto:sage [2009/07/30(木) 23:04:28 ] 82です.分かりました. みなさんありがとうございます.
90 名前:デフォルトの名無しさん mailto:sage [2009/07/30(木) 23:14:28 ] Erlang だと _X みたいな変数は自動で CL で言うところの ignore 扱いになるね
91 名前:デフォルトの名無しさん mailto:sage [2009/07/30(木) 23:23:04 ] haskell でも言語仕様でプレースホルダーとしての意味を規定してたはず。
92 名前:デフォルトの名無しさん mailto:sage [2009/07/31(金) 17:54:45 ] >>82 R6RS のマクロパターンではワイルドカード それ以外の場所ではただのシンボル
93 名前:デフォルトの名無しさん mailto:sage [2009/07/31(金) 20:57:59 ] 自分はand-let*の中でよく使いますね < '_
94 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 05:00:54 ] >>93 and-let*で _ 使いたくなる時ってある? 単に条件判断のみやりたい時は変数書かなくてもいいわけだし。
95 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 10:21:04 ] SICP昔読んだ程度の初心者なのですが、最近翻訳された「Let Over Lambda」は Lisperの皆様から見てどんな感想でしょうか。 どうもマクロというと難しいという印象強いので、翻訳以前から本は知ってましたけど 読むのは気が引けてました。 また、翻訳レベルはどうでしょうか?Amazonの立ち読み見た限りではかなり良い 翻訳に感じました。
96 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 12:34:57 ] >>94 単に趣味の問題です:-) 変数だけ書いたり式だけ書いたりするのはバランスが悪く感じるので '_を使っているんです Cなんかで変数宣言&初期化する時に=を揃えるような感覚です int hoge = 10; int foo = 30;
97 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 12:36:09 ] 揃わなかった:-(
98 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 12:45:30 ] Cの代入で桁をきれいに揃えようとして0で埋めたら8進になっちゃった という話を思い出した。 x = 123; y = 054;
99 名前:デフォルトの名無しさん [2009/08/01(土) 22:40:23 ] すみません、どこで質問していいのか分からなかったので教えてください LispマシンっていうのはPC98がBASICだったみたいに LISPを基本的に動作するパソコンんの事でしょうか?
100 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 22:44:52 ] まずはPC98が何だったか調べる作業から始めろ