1 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 23:16:33 ] ※ ここはCommon Lisp、SchemeをはじめとするLisp族全般のスレです ※ 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://pc10.2ch.net/test/read.cgi/tech/1151025773/ Part14: ttp://pc8.2ch.net/test/read.cgi/tech/1132275726/ Part13: ttp://pc8.2ch.net/test/read.cgi/tech/1115901841/ Part12: ttp://pc8.2ch.net/test/read.cgi/tech/1100229366/ Part11: ttp://pc5.2ch.net/test/read.cgi/tech/1091456033/ Part10: ttp://pc5.2ch.net/test/read.cgi/tech/1075630259/ Part09: ttp://pc2.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
2 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 23:17:35 ] □テンプレート置き場□ ttp://wiki.fdiary.net/lisp/ (id:guest pass:cl) □参考リンク□ 日本Lispユーザ会 (日本語) ttp://jp.franz.com/jlug/index.html ここにかなりの情報があります。削るとAllegro Common Lispのページへ。 プログラミング言語Scheme (日本語) ttp://www.sci.u-toyama.ac.jp/~iwao/Scheme/scheme.html Schemeの人はまずここを見ましょう。 Schemeへの道 (日本語) ttp://www.stdio.h.kyoto-u.ac.jp/~hioki/gairon-enshuu/SchemeNotes/scheme.html Schemeの入門サイト。 Practical Scheme (日本語) ttp://practical-scheme.net/index-j.html Scheme処理系「Gauche」の作者である川合史朗氏のサイト。 「普通のやつらの上を行け」など、興味深い文書を沢山翻訳されてます。 LispUser.net (日本語) ttp://lispuser.net/ Lisp関連の有用な情報がまとめられています。Common Lispの話題が中心。
3 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 23:18:30 ] 面倒くせえ 後は誰か頼むw
4 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 00:08:31 ] □仕様関係□ 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
5 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 00:08:56 ] □Wikipedia関連□ ttp://ja.wikipedia.org/wiki/LISP ttp://ja.wikipedia.org/wiki/Common_Lisp ttp://ja.wikipedia.org/wiki/Scheme □継続関連□ なんでも継続 (日本語) 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/
6 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 00:09:24 ] □書籍関連(1)□ Structure and Interpretation of Computer Programs (英語) ttp://mitpress.mit.edu/sicp/ 通称「SICP」として知られる『計算機プログラムの構造と解釈』の原書です。 全文がオンラインで読めます。 ttp://sicp.ipl.t.u-tokyo.ac.jp/ (日本語版サポートサイト) Programming Languages: Application and Interpretation (英語) ttp://www.cs.brown.edu/~sk/Publications/Books/ProgLangs/ ブラウン大学で使われている、Schemeを使ったプログラミング言語論の教科書。 SICPでは触れられていない継続についても、Webアプリと関連づけて詳述されています。 全文がpdf形式でダウンロードできます。 How to Design Programs (英語) ttp://www.htdp.org/2003-09-26/Book/ Schemeを使った優れたプログラミング入門書。全文がオンラインで読めます。 The Little Schemer (英語) ttp://www.ccs.neu.edu/home/matthias/BTLS/ The Seasoned Schemer (英語) ttp://www.ccs.neu.edu/home/matthias/BTSS/ Schemeの教科書として定評のある「Schemerシリーズ」のサポートページです。 The Scheme Programming Language (英語) ttp://www.scheme.com/tspl3/ Scheme入門書。全文がオンラインで読めます。
7 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 00:10:01 ] □書籍関連(2)□ 『プログラミング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 (サポートページ) Scheme処理系言語Gaucheの初の解説書! 『入門Scheme』 (日本語) ttp://www4.ocn.ne.jp/~inukai/scheme_primer_j.html 幻となったScheme入門書。全文がダウンロードできます。 Common Lisp: A Gentle Introduction to Symbolic Computation (英語) ttp://www.cs.cmu.edu/~dst/LispBook/ Common Lispを使った非常に丁寧なプログラミング入門書。 全文がpdf形式でダウンロードできます。 Practical Common Lisp (英語) ttp://www.gigamonkeys.com/book/ ttp://ssl.ohmsha.co.jp/cgi-bin/menu.cgi?ISBN=978-4-274-06721-1 S式の羅列で現実的な問題をどう解くのか、そのギャップに悩まされてる人に。 全文がオンラインで読めます。日本語版は『実践Common Lisp』として出版されています。 ttp://pcl.lispuser.net/ (日本語版非公式サポートページ) 『On 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 (英語原文がダウンロード可) LispハッカーPaul Grahamが、Lispの力の源泉であるマクロプログラミングを解説。
8 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 00:10:14 ] 実装いろいろ ttp://community.schemewiki.org/?scheme-faq-standards#implementations
9 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 00:10:24 ] □その他(1)□ John McCarthy's Home Page (英語): Lispの生みの親、ジョン・マッカーシーのサイトです。 ttp://www-formal.stanford.edu/jmc/ Association of Lisp Users (英語): 米国のLispユーザ会です。 ttp://www.alu.org/alu/home CLiki (英語): Common Lisp関連のリソースが集積されています。 ttp://www.cliki.net/index CMU Common Lisp Repository (英語): 新旧様々なプログラムが置いてあります。 ftp://ftp.cs.cmu.edu/afs/cs/project/ai-repository/ai/lang/lisp/0.html The Common Lisp Cookbook (英語): いわゆるCookbookです。 ttp://cl-cookbook.sourceforge.net/ The EncyCMUCLopedia (英語): CMUCL関連文書。CMUCLユーザーでなくとも有益なはず。 ttp://www.isr.ist.utl.pt/library/docs/encycmuclopedia/doc/ Common-Lisp.net (英語): 多くのプロジェクトがホスティングされています。 ttp://common-lisp.net/ よろずや (日本語): Lisp関連の実用的な情報が色々。 ttp://www.geocities.co.jp/SiliconValley-SanJose/7474/ どう転んでもLisp (日本語): 竹内郁雄氏による発表のスライドです。 ttp://jp.franz.com/base/seminar/2005-11-18/SeminarNov2005-Takeuchi.files/v3_document.htm Lispとは何か (日本語): 中村正三郎氏による発表のスライドです。 ttp://www.asahi-net.or.jp/%7Eki4s-nkmr/lisp20061121/lisp.html
10 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 00:13:38 ] □その他(2)□ 独習Scheme三週間 (日本語): Schemeの教科書。 ttp://www.sampou.org/scheme/t-y-scheme/t-y-scheme-Z-H-1.html Bibliography of Scheme-related Research (英語): Scheme関連の論文リンク集。 ttp://library.readscheme.org/ Scheme Hash (英語): S式でXMLを使えるようにするSXML等。 ttp://okmij.org/ftp/Scheme/index.html Scheme-users.jp (日本語): Schemeユーザのためのハブサイトです。 ttp://scheme-users.jp/ (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/ Meadow memo: 2ちゃんねるログ: dat落ちした過去スレの一部が見られます。 ttp://www.bookshelf.jp/2ch/index.html
11 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 00:14:18 ] □その他(3)□ 初心者が集うIRC(布教してくれる先生も大募集です)。 irc.scenecritique.com port 6667 チャンネル #Lisp_Scheme Schemeのテストコード書いたり、簡単な実行したりコードさらしたりするにはここへカモン。 ttp://codepad.org/ コードを書いて実行した時のURLを記録しておけば、実行結果も一緒にさらす事が出来て幸せです。
12 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 00:14:42 ] □Schemeの実装(1)□ Gauche: マルチバイト文字に対応したR5RS準拠のScheme処理系。川合史朗氏作。 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準拠のSchemeバイトコードインタプリタ。 ttp://www.s48.org/ Gambit-C: R5RS準拠のScheme処理系。 ttp://dynamo.iro.umontreal.ca/~gambit/wiki/index.php/Main_Page Chicken: R5RS準拠のScheme処理系。スタンドアロン実行ファイルが簡単に作成可能。 ttp://www.call-with-current-continuation.org/ Stalin: 激烈な最適化を施すScheme処理系。人間の書く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準拠Scheme処理系。Javaインターフェイスをサポート。 ttp://jscheme.sourceforge.net/jscheme/main.html
13 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 00:15:16 ] □Schemeの実装(2)□ Chez Scheme: R6RS準拠の商用Scheme処理系。インタプリタはフリー。 ttp://www.scheme.com/ Ypsilon Scheme System: 藤田善勝氏が開発中のR6RS準拠のScheme処理系。 ttp://www.littlewingpinball.net/mediawiki-ja/index.php/Ypsilon_Scheme_System Mosh: higepon氏が開発中のR6RS準拠Scheme処理系。 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上で動くScheme処理系。これもSECD virtual machine。 ttp://www.lispme.de/lispme/ Minischeme: 1ファイルに凝縮されたScheme処理系。 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/
14 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 00:15:53 ] □Common Lispの実装□ Steel Bank Common Lisp: 代表的なCommon Lisp処理系。CMUCLより派生。 ttp://www.sbcl.org/ CMUCL: Common Lisp処理系。 ttp://www.cons.org/cmucl/ GNU CLISP: Common Lisp処理系。バイトコード変換系。 ttp://www.clisp.org/ Clozure CL: Common Lisp処理系。 ttp://trac.clozure.com/openmcl Embeddable Common Lisp: Cで書かれたプログラムへの埋め込みが可能なCommon Lisp処理系。 ttp://ecls.sourceforge.net/ Armed Bear Common Lisp: JVM上で動くCommon Lisp処理系。JVMバイトコード変換系。 ttp://armedbear.org/abcl.html Allegro Common Lisp: 代表的な商用Common Lisp処理系。 ttp://www.franz.com/products/allegrocl/ LispWorks: 商用Common Lisp処理系。 ttp://www.lispworks.com/ Corman Common Lisp: 商用Common Lisp処理系。 ttp://www.cormanlisp.com/ Scieneer Common Lisp: 商用Common Lisp処理系。 ttp://www.scieneer.com/scl/index.html
15 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 00:17:40 ] // / / パカッ //⌒)∩__∩ /.| .| ノ ヽ / | | ● ● | / | 彡 ( _●_) ミ まピョーん☆ / | ヽ |∪| /_ // │ ヽノ \/ " ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ
16 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 00:17:46 ] □その他の実装□ 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 Arc: ポール・グレアム氏が開発中の新しい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/
17 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 00:18:10 ] □イベント関連□ Shibuya.lisp ttp://shibuya.lisp-users.org/ 東京地区、特に渋谷周辺半径2万キロの Lisp 系プログラマによる非営利団体。 第1回テクニカルトークは2008年10月18日に開催されました。 GaucheNight (2008-03-08) ttp://practical-scheme.net/wiliki/wiliki.cgi?gauche.night 「SchemeとGaucheとλとS式を愛するすべての人に贈るマクロな一夜」 出演:川合史朗、伊藤篤、山下伸夫、笹田耕一、ひげぽん、zick、 黒田寿男、えんどうやすゆき、ほか GaucheNight (2007-05-09) ttp://practical-scheme.net/wiliki/wiliki.cgi?GaucheNight%3a2007 出演:川合史朗、黒田寿男、まつもとゆきひろ(Skype中継)、小飼弾、 伊東勝利、久井亨、小黒直樹、ほか 黒田寿男氏関係 (黒板の人) 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/
18 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 00:20:33 ] □2ch上にあるLisp関連のスレ□ (make-thread :name common-lisp :part 5) ttp://pc11.2ch.net/test/read.cgi/tech/1215834213/ Emacs Lisp 3 ttp://pc11.2ch.net/test/read.cgi/tech/1191875993/ 【魔法】リリカル☆Lisp【言語】 ttp://pc11.2ch.net/test/read.cgi/tech/1183396621/ 【SICP】計算機プログラムの構造と解釈 Part2 ttp://pc11.2ch.net/test/read.cgi/tech/1203096230/ 【普通のやつらの】 Arc Language 0 【上を行け】 ttp://pc11.2ch.net/test/read.cgi/tech/1202098949/ 【CGI】実用比較Lisp vs C/C++【GUI】 ttp://pc11.2ch.net/test/read.cgi/tech/1150501484/ 【ヤパーリ】XMLをS式に置換えていくスレ【LISP最強】 ttp://pc11.2ch.net/test/read.cgi/tech/1140006937/ Lisp@UNIX版 ttp://pc11.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/
19 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 00:22:31 ] テンプレ長いよ! 連投規制に二回も引っ掛かったよ! >>3 諦めんなよ! >>8 >>15 お前らも手伝えよ!
20 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 00:36:46 ] これは乙じゃなくてλなんだからね
21 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 00:55:07 ] 乙です
22 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 01:00:04 ] >>1 っT
23 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 01:37:21 ] 1乙 Little終わったので萩谷先生の関数プログラミング買った。 3月まではこれとものまね鳥読む。
24 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 04:37:00 ] てんぷら増えすぎじゃないか? 毎回20レス近く潰れるのは無駄な気がする どうせ雑談しかしてないし、こんな長いと読まないっしょ 仕様書程度でいいんじゃないか
25 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 04:47:45 ] つまり Common Lisp→EuLisp R6RS→R5RS ですね 乙と違うんだからね
26 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 05:00:33 ] >>24 「仕方ない。代わりに貼るか→この分量マジすか」 というコンボを喰らった身としては、同意せざるを得ない。 細かい内容は、テンプレ置き場でまとめれば良いと思う。
27 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 06:12:57 ] ∩_ 〈〈〈 ヽ 〈⊃ } ∩___∩ | | | ノ ヽ ! ! / ● ● | / | ( _●_) ミ/ まピョーん☆ 彡、 |∪| / / __ ヽノ / (___)
28 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 06:49:51 ] なんだお前?やるんか? くらえ!つ nil
29 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 11:03:20 ] テンプレ置き場ってないし。 WiLikiあたり借りる?
30 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 11:21:19 ] >>29 >>2
31 名前:デフォルトの名無しさん mailto:sage [2009/01/15(木) 00:50:24 ] テンプレが役に立ってないことがよくわかる。
32 名前:デフォルトの名無しさん mailto:sage [2009/01/15(木) 07:52:33 ] >>30 の役には立っている。
33 名前:デフォルトの名無しさん mailto:sage [2009/01/15(木) 08:45:23 ] on lisp読み終わったんだが 次はpractical common lisp読んだらいいのかな schemeの対応する本はないのかな
34 名前:デフォルトの名無しさん mailto:sage [2009/01/15(木) 09:04:48 ] SICP
35 名前:デフォルトの名無しさん mailto:sage [2009/01/15(木) 10:10:36 ] >>34 昔、飛ばし読みしちゃったので 今度は問題やりながら読んできます
36 名前:デフォルトの名無しさん mailto:sage [2009/01/15(木) 17:23:59 ] cheese.2ch.net/math/kako/1000/10001/1000107761.html ★100!と1000!の桁数の出し方★ codepad.org/lbITOona
37 名前:デフォルトの名無しさん mailto:sage [2009/01/15(木) 22:59:45 ] >>36 このほうがいい。10000!の桁数も楽々 (define (place-of n) (+ 1 (inexact->exact (floor (* 0.4342944819032518 (log n)))))) codepad.org/8evfGr7x
38 名前:デフォルトの名無しさん mailto:sage [2009/01/16(金) 19:14:11 ] 関数のアーギュメントの順番ってこうするのがいいって習慣みたいなのはないの? (setf 出力 入力) (with-open-file 変数 ファイル) だと、出力 入力の順番なのかな? この辺の例をみてると www.geocities.jp/m_hiroi/xyzzy_lisp/abclisp11.html (fun 主要なもの 補助的なもの さらに補助的なもの...) と定義してるようにも見えるんだけど
39 名前:デフォルトの名無しさん mailto:sage [2009/01/16(金) 23:10:26 ] その辺は場合にもよるから一般化はできないね。 反例は例えば with-input-from-string は入力が先だし。 まぁ、主要なもの、対象とするものが前のほう、くらいだろうね。
40 名前:デフォルトの名無しさん mailto:sage [2009/01/16(金) 23:53:23 ] jibun.atmarkit.co.jp/ljibun01/rensai/genius/03/01.html 誰も言及しないのは何故。
41 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 01:26:16 ] 既にCyanスレで見たから。
42 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 01:40:01 ] そんなのもあるんだ
43 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 01:40:49 ] クラスのないオブジェクト指向とかS式のないマクロとかは面白いね 大前提をぶっ壊すところが
44 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 03:00:46 ] >>43 S式の無いマクロならDylanがあるし、 プロトタイプベースのOOPならSelfとかがあるじゃん。 むしろ、そういう引用元の概念を、あの歳できっちり理解してるのが末恐ろしいよ。
45 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 04:16:34 ] 5つの自然言語ならよかったのになあ
46 名前:デフォルトの名無しさん [2009/01/17(土) 15:28:41 ] 高速で使えるライブラリのそろったCyan実装が登場したら Ruby以上に世界中のハッカーにインパクトを与えそう。
47 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 16:11:52 ] >>40 ニュータイプって感じだね。
48 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 20:20:32 ] 私は信じんよ、ニュータイプの存在など
49 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 21:30:31 ] 既存のpythonのlibraryが使えてマクロありなら便利かもね
50 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 23:55:38 ] 現状だと荒削りだし、そりゃ言い杉なんじゃないかな。将来は楽しみだけど。 素直に理論面とかハードウェアの知識を学んでいったら楽しみだね。 まだだ、まだ終わらんよ!とか言わされちゃうのかなー
51 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 00:14:09 ] 本人乙www
52 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 01:22:19 ] クワトロ・バジーナ降臨ときいてすっ飛んできました。 アクシズ落とさないでね。
53 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 09:45:33 ] wikipediaのclikiのリンクが古いままだ
54 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 12:38:12 ] >>53 なんのための「Wiki」pediaだよ
55 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 12:59:52 ] >>53 ,54 直しておきますた ノシ
56 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 18:08:54 ] >>37 goshだとexactな数値のlogがとれなかった
57 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 22:18:02 ] >>56 他の処理系みた? Gaucheで数値計算するから・・・
58 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 23:06:53 ] >>56 普通にとれるだろ gosh> (log 1000) 6.907755278982137 gosh> (log 10000) 9.210340371976184 gosh> (log 100000) 11.512925464970229 gosh> (* 0.4342944819032518 (log 1000)) 3.0 gosh> (* 0.4342944819032518 (log 10000)) 4.0 gosh> (* 0.4342944819032518 (log 100000)) 5.0
59 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 23:13:57 ] gosh> (* 0.4342944819032518 (log 3628800)) 6.559763032876794 gosh> (* 0.4342944819032518 (log 93326215443944152681699238856266700490715968264 38162146859296389521759999322991560894146397615651828625369792082722375825118521 0916864000000000000000000000000)) 157.97000365471578
60 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 23:17:51 ] gosh> (log 402387260077093773543702433923003985719374864210714632543799910429938 51239862902059204420848696940480047998861019719605863166687299480855890132382966 99445909974245040870737599188236277271887325197795059509952761208749754624970436 01418278094646496291056393887437886487337119181045825783647849977012476632889835 95573543251318532395846307555740911426241747434934755342864657661166779739666882 02912073791438537195882498081268678383745597317461360853795345242215865932019280 90878297308431392844403281231558611036976801357304216168747609675871348312025478 58932076716913244842623613141250878020800026168315102734182797770478463586817016 43650241536913982812648102130927612448963599287051149649754199093422215668325720 80821333186116811553615836546984046708975602900950537616475847728421889679646244 94516076535340819890138544248798495995331910172335555660213945039973628075013783 76153071277619268490343526252000158885351473316117021039681759215109077880193931 78114194545257223865541461062892187960223838971476088506276862967146674697562911 23408243920816015378088989396451826324367161676217916890977991190375403127462228 99880051954444142820121873617459926429565817466283029555702990243241531816172104 65832036786906117260158783520751516284225540265170483304226143974286933061690897
61 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 23:18:15 ] 96848259012545832716822645806652676995865268227280707578139185817888965220816434 83448259932660433676601769996128318607883861502794659551311565520360939881806121 38558600301435694527224206344631797460594682573103790084024432438465657245014402 82188525247093519062092902313649327349756551395872055965422874977401141334696271 54228458623773875382304838656889764619273838149001407673104466402598994902222217 65904339901886018566526485061799702356193897017860040811889729918311021171229845 90164192106888438712185564612496079872290851929681937238864261483965738229112312 50241866493531439701374285319266498753372189406942814341185201580141233448280150 51399694290153483077644569099073152433278288269864602789864321139083506217095002 59738986355427719674282224875758676575234422020757363056949882508796892816275384 88633969099598262809561214509948717012445164612603790293091208890869420285106401 82154399457156805941872748998094254742173582401063677404595741785160829230135358 08184009699637252423056085590370062427124341690900415369010593398383577793941097 00277534720000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000) +inf.0
62 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 23:21:43 ] (log (fact 1000))が計算できないのはGaucheの事情。 practical-scheme.net/wiliki/wiliki.cgi?Gauche%3A%E6%95%B0%E5%80%A4%E3%81%AE%E5%85%A5%E5%87%BA%E5%8A%9B
63 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 23:25:55 ] practical-scheme.net/wiliki/wiliki.cgi?Gauche%3A%E7%B5%84%E3%81%BF%E8%BE%BC%E3%81%BF%E9%96%A2%E6%95%B0%E3%81%AE%E5%86%8D%E5%AE%9A%E7%BE%A9
64 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 23:34:44 ] 一般的なlog10の計算の注意点 codepad.org/MjooyHH4
65 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 11:15:03 ] on lispの原著が34000円もするなんて・・・ 最後のいくつかの章で図がみえないから欲しかったのに
66 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 17:18:17 ] 何千ページの本なの?
67 名前:デフォルトの名無しさん [2009/01/19(月) 20:55:42 ] www.paulgraham.com/onlisp.html >> 65 ここから落とせない? 著者公開してるけど.
68 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 21:32:16 ] >>67 そこのは、例えばFigure 24.1 が見えないよ。他にも見えない図がいくつかあった
69 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 21:38:09 ] on lisp $13 しかし日本への送料が4000円 www.lulu.com/content/3060872 こっちから買うかな 何冊かまとめ買いすれば送料安くなんないかな
70 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 22:35:33 ] 日本語訳の本に載ってないって事?
71 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 00:18:36 ] ttp://www.amazon.co.jp/dp/0130305529/ ttp://www.amazon.com/dp/0130305529/ 高いな
72 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 22:57:56 ] Head First Common Lispはまだか。
73 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 03:10:07 ] たぶん一生でないよw
74 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 13:05:51 ] 主婦の友増刊号「誰にもわかるコモンリスプ」
75 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 14:23:07 ] 片仮名で書くとめちゃくちゃイメージ違うなぁ。
76 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 16:32:13 ] フランス語みたい。 イロムサコン・フィヨンセ・コモンリスプ
77 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 01:35:12 ] 特別寄稿ガイ・スチール・ジュニア氏 「君もリスプやらないか?」
78 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 02:00:30 ] 「いいこと思いついた。 お前、俺のテイルジャンプで、メッセージパッシングしろ」
79 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 17:50:52 ] 「アッーーク!」
80 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 21:18:38 ] アンジー・コモン・リスプ
81 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 23:24:26 ] 微妙にワロタ
82 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 02:43:49 ] GaucheにIDE付けれの人まだ張り付いてるのか
83 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 03:26:34 ] Lisp 系言語だと emacs か vi しか選択肢が無いのは事実だけど、 あらたに統合環境を用意する積極的な理由ってのも無いんだよなー。 欲しいのはデバッガみたいだけど、 仮にデバッガが便利だとしても Scheme にふさわしいデバッガのモデル は過去事例を研究したところで容易に決められるとは思わんのだよなー。 これだけ長い Lisp の歴史の中でいわゆる「デバッガ」が言及された ことがそんなにないってのはただの偶然だとでも思ってんだろうか。
84 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 06:25:23 ] pltはそのへんがんばってるんじゃないの
85 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 06:30:20 ] なんでlispは歴史的にデバッガが言及されないの?
86 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 08:36:47 ] >>85 文脈嫁。 >>83 は、GCを考案し、動的言語の先駆けとなったLisp に、デバッガの話が持ち上がらなかったのは、Lispにデバッガが不要だから、と云いたいんだろ。
87 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 08:47:36 ] >>83 は、これだけ長い Lisp (スレ)の歴史の中で、と言いたかったんだよ。
88 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 09:10:02 ] >>83 Schemeの話をLisp系と一般化しないでくれ。Emacs Lispのデバッガはなかなかいい、 CL系は昔から規格に最適化オプションで debug 指定ができたりと、デバッガは 売りにしてたよ。SchemeでもPLTやGuileはがんばってるじゃん。
89 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 09:43:29 ] DebuggerのないLisp machineなど存在しない。 もともとsmalltalk実装のモデルになったような 統合プログラミング環境を持っていたのがLisp。 今はむしろLLみたいな軽い環境が流行りで、 外界とのインターフェースは昔より豊か。
90 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 16:54:11 ] eclipseあたりに自力で作ってみたらいいのに
91 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 17:19:03 ] 調べるのめんどくさいんでここで聞きますがscheme ってバイトコードはけるの
92 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 17:42:27 ] >>91 Kawa, JSchemeでググレカス
93 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 18:42:50 ] >>89 Smalltalkより前にIDEを持っていたLispってどんなLispだよw
94 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 18:46:35 ] つ ttp://ja.wikipedia.org/wiki/Interlisp
95 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 19:05:55 ] まったく関係ないがh抜き不便
96 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 19:15:49 ] アセンブラ使え
97 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 19:23:10 ] >>93 TECO+MacLisp 後継のEmacsがSmalltalk-76と同時期。
98 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 21:57:10 ] 超古代文明の発掘みたいな。 断絶があるのはなぜだろう。
99 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 21:58:24 ] 車輪の再発明と言ってだな、
100 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 00:28:22 ] >>82 別にどんな主張をしようが構わないが、 「デバッガ」っていう重要なカテゴリ以下を私物化してるのがちょっと……。 あれのどこがGaucheのデバッガの話なのよ? 何で、自分のページとか作って、そこでやらないんだろうね?
101 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 11:20:53 ] まあWiLilki的にひどすぎるということになれば管理者のShiroさんが強権発動するでしょ
102 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 13:43:07 ] 俺はffiの項目を私物化したいぞおお ジョジョオ〜
103 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 21:30:00 ] 継続渡しマクロなんて作るぐらいなら common lispの上にscheme作っちゃえばいいのに
104 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 23:30:15 ] みんながACL使えばみんなが幸せ
105 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 23:39:46 ] もっとお手頃価格でACL売ってくれ。 俺も使うから。
106 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 02:43:48 ] 一方、ロシアのSchemerは黒板を使った。
107 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 03:34:23 ] >一方、ロシアのSchemerは黒板を使った。 作らないところが寂しいよな >もっとお手頃価格でACL売ってくれ。 なんであんなに高いんだろうね? 年間売り上げみてみたいよ。 株主になっても一票そこに投じられそうもないのが悲しいやね
108 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 13:46:02 ] ロシアのLisp事情ってどんな感じなんだろう。 あそこは数学も物理も凄いんでしょ?
109 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 14:21:33 ] 行って確かめてこいよ
110 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 16:10:27 ] ロシアは遠いし言葉がわからないから かわりにロシアンパブ行ってきます。
111 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 21:13:51 ] ttp://sourceforge.jp/magazine/09/01/27/0039208 あとまあ、これもある意味予想通りではあるが、LispやScheme、Haskellと言ったあたりは、 結局のところ「語られる」言語であって、「使われる」言語ではないようだ。 HaskellにしろCommon Lispにしろ、近年ではライブラリも相当揃ってきており、 パフォーマンスの面から言っても実用言語として遜色ないものになりつつあるので、個人的には残念なのだが。
112 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 21:22:15 ] Emacs Lispも仲間に入れてほしいんですけど。
113 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 21:52:50 ] だが断る
114 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 22:17:45 ] 各個人の問題として何故使わないのか。
115 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 22:35:50 ] 先週新聞に載ってたセンター試験の数学UAをやってみたんだけど 21世紀になって10年たとうというのにひどいBASICのプログラムが載ってたんだわ 高校生に勉強させるなら COMETでもMIPSでもいいからアセンブラでやらせるか BFで難易度高めにするか LispやHaskelやForthで教養を身につけさせるかすればいいのに あるいはスパコンのためにFortranを教えるか
116 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 22:50:30 ] >>114 次々と新たな処理系が開発されるのは、既にある処理系を使いたくないのかもな。 勉強のためだとしても、なんで人のソースを読むことより自分で書くことを選ぶのか。 それが問題だと思うよ。
117 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 22:52:42 ] IT音痴大国の名に恥じないな。
118 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 22:58:36 ] Lispはラテン語ではない。と誰かが言ったとか言わないとか。
119 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 20:26:19 ] むしろラテン語だろ
120 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 22:59:04 ] まあもう少し待ってれば予想外の変化が起きるかもよ
121 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 23:03:38 ] Lisp/Scheme類は法律で禁止され、地下で開発するしかないのだ。
122 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 00:02:26 ] >>115 あれはなんの冗談なんだろうと思ったな。 釣りじゃないのか、とか日付を確認したりとか。 徐々にその事実が恐ろしくなっていった。 >LispやHaskelやForthで教養を身につけさせるかすればいいのに お前は俺かw
123 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 00:06:09 ] BFで難易度をってところにワロタ
124 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 06:22:02 ] d.hatena.ne.jp/niitsuma/20080209/1233260146
125 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 00:58:37 ] Lisperだけで会社作ったら、経営していけるかな。
126 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 01:03:15 ] codepad.org/7ozb95V2
127 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 05:02:34 ] 漢詩って何かいいね。
128 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 05:15:40 ] 情景が目に浮かぶようだね。霜ってのがまた良いな。 ……ところで、ここ何のスレだっけ?
129 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 15:23:31 ] comp.lang.lispに何度か書き込みしてるはずなのに反映されない なんでだろ
130 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 16:48:38 ] ネットニュースだから配送の問題とか?
131 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 13:40:24 ] quasiquote.org/log2/Scheme/Gauche/Gauche-lazy-ffi をconfigure make make installしてから gosh> (use lazy-ffi) *** ERROR: Compile Error: failed to link "lazy-ffi" dynamically: /usr/lib/gauche/site/0.8.12/i486-pc-linux-gnu/lazy-ffi.so: undefined symbol: strlcpy "(stdin)":2:(use lazy-ffi) Stack Trace: _______________________________________ gosh> 何が問題なのでしょうか
132 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 13:44:27 ] だからここはサポート掲示板じゃねえっつーの またどうせバージョン違うんだろ
133 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 14:06:25 ] >>131 glibcにOpenBSD由来のstrlcpy(3)はありません。 www.openbsd.org/cgi-bin/cvsweb/src/lib/libc/string/ から持ってきてリンクしてください。 デストリによってはパッケージで提供されているかも知れませんが。
134 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 14:12:09 ] やっぱlinuxってきもいなー
135 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 04:35:42 ] gimp2.6.3(ほぼR5RS互換) のscript-fu で (let ((foo 2) (bar 3)) (display foo) (display bar)) ->23#t これと同じ事がしたくて(返り値は無視して) 下のように書きましたが変数ではなく 文字列として扱われてしまいます。 (let ((foo 2) (bar 3)) (mapcar (lambda (arg) (display arg)) '(foo bar))) ->foobar(#t #t) 上に書いたlispと同じ動作にするにはどう書けば良いでしょうか?
136 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 06:59:00 ] >>135 「'」(クォート)をつかわず、 (list foo bar) としたら良いのでは。 あるいは `(,foo ,bar) (先頭はバッククォートね)かな。
137 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 09:54:45 ] letやmapcarが出てくるのにquoteが判らないとは えらい偏った学び方したんだな quoteはLISPの基礎
138 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 13:39:03 ] >>137 偏ってない。変数とシンボルを混同するのはLISPの名物。 変数とimmutableな文字列なら、混同することはあまりないのだが。 最近思うんだが、LISPは動的スコープに戻したほうがいいんじゃないか? 変数は常に(eval シンボル)と等価で、関数は常にS式と等価。 静的スコープではこれが成立しない。
139 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 14:13:37 ] '(1 2)と(list 1 2)の結果が同じだし、勘違いしちゃうことってあるよね
140 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 16:24:19 ] 'multiple-value-bindについてるクオートがよくわからない. (defmacro mvbind (&rest args) (let ((name 'multiple-value-bind)) `(,name ,@args)))
141 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 17:07:30 ] これでうまくいった (let ((foo 2) (bar 3)) (mapcar (lambda (arg) (display (eval arg))) '(foo bar)))
142 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 17:31:30 ] >>138 かなり偏ってるね 混同するのが名物とか、変な偏見も持ってそうだが 多分>>140-141 もお前じゃないか? きちんとした処理系で基礎から勉強し直した方がいいと思うね
143 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 18:38:40 ] >>136 そうだね。前スレ372-390でも話題になってたよね。 (list foo bar) == (list `,foo `,bar) == `(,foo ,bar) quasiquoteの分配則では気をつけないとね。
144 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 18:43:43 ] データとコードの違いは最初に叩き込まれると思っていたがそうでもないのか?
145 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 18:48:15 ] >>139 >結果が同じだし 微妙な違いは理解してるのか? 同じ臭いがするんだよ>>138-141 はよ。
146 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 19:05:17 ] マクロの勉強でもしてみれ
147 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 19:11:52 ] eval使って解決した気になれるとか、初心者の特権だねえ。
148 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 19:15:57 ] >>135 それよりmapcarの使い所を間違えてないかね? 処理系変えるとうまく動かないかもよ。 quoteはちゃんと理解した方がいいよ。 >>140 どんだけ頓珍漢なことやってるのかって 最初は気付かないもんだよ。
149 名前:135 mailto:sage [2009/02/03(火) 20:15:17 ] ありがとうございます。 もう一度 quote の部分を見直しましたが まだいまいちわかっていないので もう一度じっくり読んでみます。 >>148 mapcar の使い方を確認しようと Revised5 Report on the Algorithmic Language Scheme を見てみたところ mapcar は乗っていなかったので map を使うことにしました。
150 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 21:12:28 ] >>135 は展開すると '(foo bar) == (list 'foo 'bar) となる。 これと>>143 を比べると違うことは明白。 (list 'foo 'bar)ではlistの要素はシンボルになっている。>>135 (list foo bar)ではlistの要素は変数になっている。>>136 ,>>143
151 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 21:34:33 ] 初心者ならそこまで気を回さなくてもいいかもしれないけど (equal? '(foo bar) (list 'foo 'bar)) => #t だけど (eq? '(foo bar) (list 'foo 'bar)) => #f ; ほとんどの場合 quoteはquoteでlistとは別物(返り値も含めて、書き換え可能かどうか等も) 返ってくる値がequalなだけ
152 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 23:03:12 ] それからR5RSのmapは返り値の順序は規定されているけど 評価順序は未規定 だから (map display '(A B C)) => '(#<undef> #<undef #<undef>) 標準出力にはABC、ACB、BAC、BCA、CAB、CBAのいずれか 評価順序をリストの順通りにしたいのならfor-eachを使う (for-each display '(A B C)) => #<undef> 標準出力には必ずABC 評価順序と戻り値のデータ構造内の順序の区別は HaskelのIOモナドにもつながる (たぶん) R5RSでは関数の引数の評価順さえ未規定
153 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 23:52:11 ] >>152 >>それからR5RSのmapは返り値の順序は規定されているけど >>評価順序は未規定 うわ…これ今ごろ知ったよ、ありがとう。つかこの仕様で誰が得するんだろ。 慌てて調べたけど、Gauche は独自仕様で常にリスト内の順番どおり、なのね。 ちょっと安心。
154 名前:デフォルトの名無しさん [2009/02/04(水) 00:06:16 ] 並列処理が楽になるとは聞いたな。
155 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 12:25:14 ] 少しActorも意識してるんだろうね。 各要素に並行にfがメッセージパッシングされて。 >>138 funarg問題の時代までタイムスリップかよ。
156 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 13:04:44 ] funarg問題の例: compose (lambda (f g) '(lambda (x) (f (g x)))) こうすればいいんじゃないの? (lambda (f g) `(lambda (x) (,f (,g x))))
157 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 22:50:12 ] quoteが嫌いな人はクロージャやsyntax-rulesを使う quoteが大嫌いな人はPythonやRubyを使う そんな気がする
158 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 00:05:31 ] quasi-quoteの便利さは異常。 そんな嫌いになるなんて、これが本当のくぉーつ嫌いってやつか・・・
159 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 00:51:16 ] 昔のマクロにはバッククォートなんてなかったよな ひたすらlistでS式をこさえてたっけw
160 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 03:32:58 ] どんだけ昔の人だよ
161 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 03:40:10 ] Lisp-85とかって言っても分からんだろうなw
162 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 03:53:31 ] そんな最近かよ とっくにバッククオートあるよw
163 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 04:06:48 ] Lisp-85ってS-OSというZ-80のOS上で動く奴なんだが fexpr形式やmacro形式はあってもバッククォートは無かったぞ
164 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 08:52:25 ] Alan Bawden, "Quasiquotation in Lisp"によれば、 現在とは少し記号法が違うが、1972年のConniverが現代的な quasi-quoteの起源。 少なくとも1977年ごろのLisp machineには、現在使われているのと ほぼ同じquasi-quoteがあった。 ということらしい。 D. V. McDermott and G. J. Sussman, "The Conniver reference manual," 1972 ftp://publications.ai.mit.edu/ai-publications/0-499/AIM-259a.ps Alan Bawden, "Quasiquotation in Lisp," 1999 citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.5.2566
165 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 10:11:52 ] 'の逆はevalだと思ってた
166 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 10:29:33 ] >>163 Z80には荷が重かったのでは メモリどんだけ積んでたとか知らないけど 展開後は再帰関数のかたまりだし
167 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 10:39:22 ] 全然問題ない。
168 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 10:57:09 ] あっそ ならLisp-85作った人が入れ忘れたんだね
169 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 11:05:52 ] quasi-quoteを効率を保ってきちんと実装するのは意外と難しい。 80年代になってもマクロと組み合わせた時の実装手法の論文があった。 アンチquasi-quote派というのが昔はいた。Common Lispで決着。
170 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 11:51:35 ] Gauche WiLiLiのあんまり目立たないとこに自分の作ったパッケージ書き足す方法はないものだろうか
171 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 16:28:07 ] >>156 その関数の引数f,gにシンボルxを引数として渡すと死ねる。
172 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 18:05:14 ] やっぱり gensym が必要なんだね。
173 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 18:47:23 ] 関数名じゃなく、関数「値」を式に埋め込めばいい。 gosh> (define x (list + 1 2)) x gosh> (define y (list '+ 1 2)) y gosh> (define + -) + gosh> (+ 1 2) -1 gosh> (eval x (current-module)) 3 gosh> (eval y (current-module)) -1
174 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 20:23:37 ] 再帰関数だったら?
175 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 21:49:55 ] そこまで行くとR5RSでも解決できてるかどうか怪しい R6RSは再定義禁止だっけ
176 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 21:59:07 ] R5RSの件は (define f (letrec ((f ...)) f)) と書けば安全かも
177 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 08:10:38 ] 仕様に自由があるから面白い。
178 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 16:01:07 ] >>173 で'の使い方わかった気がするけど 本格的に勉強するならどの本がいいのでしょうか?
179 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 17:53:52 ] >>178 SICPがいいよ マクロの話題は一切ないけど、マクロは遊ぶものであって勉強するものではない それでもSICPがSchemeを使ってる理由を考えながら読めばおもしろいかもね
180 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 18:39:03 ] 俺はOnLispをお勧めする。
181 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 19:54:30 ] ふつうにあのお魚の本でよくないか?
182 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 20:48:41 ] 処理系のソースで十分
183 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 21:37:03 ] ttp://user.ecc.u-tokyo.ac.jp/~tt076524/onlispjhtml/ ほれ
184 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 23:02:05 ] うわーっ!びっくりした と避ける
185 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 08:31:34 ] >>169 ふむふむ、勉強になります。 そういえば関係あるかわからないけど、 scheme じゃなくて elisp も、 Emacs19 のころは `(foo ,bar) とはかけなくて、 (` (foo (, bar))) と書いていたような。
186 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 13:41:36 ] 関係ないけどチャイティンのLispでは'はシンボルで (QUOTE X) == (' X) って書いてたな
187 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 14:53:09 ] (define (% num1 num2) (remainder num1 num2)) としてるんですが、関数に別名与えるもっと良い方法はありますか?
188 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 15:21:52 ] 引数の数が一致しているのなら (define % remainder)
189 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 17:06:46 ] それでいいんですね。 気づきませんでした。 ありがとうございます。
190 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 19:07:14 ] 指定のクロージャが束縛されているシンボルを探す方法ってありますか?
191 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 20:08:34 ] 処理系によってはあるかもしれないけどRnRSにはないんじゃないかなぁ。 CLにはあるかもしれませんけどSchemerだから知らないです。 シンボルのリストを引数に与えるのであれば グローバル束縛されているクロージャをevalで取り出してeq?して調べられるけど グローバル変数のリストはどうやって得ればいいかわかりません。 それにローカル束縛も含めるとなると不可能じゃないでしょうか。
192 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 20:28:40 ] CL なら do-symbols で探せるんじゃないかと。
193 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 22:01:31 ] Haskellとlispの得意不得意ってどんなところなのでしょうか?
194 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 22:44:15 ] 別に無いよ?
195 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 22:53:19 ] >>193 特にないんじゃないの? 文字列を扱うとめちゃくちゃメモリ食うってのがHaskellの弱点かもしれんけど 今時のマシンだったら何の問題も無いし。
196 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 22:56:48 ] Haskellとlispを戦わせたくてしょうがないらしい
197 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 23:04:03 ] ムシキングか何かでやってください
198 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 23:39:04 ] [Lisp] 攻撃:85 素早さ:94 防御:96 命中:68 運:32 HP:154 [Haskell] 攻撃:68 素早さ:55 防御:65 命中:52 運:31 HP:233 Lisp vs Haskell 戦闘開始!! [Lisp]の攻撃 HIT [Haskell]は91のダメージを受けた。 [Haskell]の攻撃 HIT [Lisp]は11のダメージを受けた。 [Lisp]の攻撃 HIT [Haskell]は109のダメージを受けた。 [Haskell]の攻撃 HIT [Lisp]は0のダメージを受けた。 [Lisp]の攻撃 HIT [Haskell]は76のダメージを受けた。 [Lisp]が[Haskell]を倒しました(ラウンド数:3)。 魔法のMD5 - MD5バトル www.newspace21.com/mix/btl.php
199 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 23:41:50 ] いちいち貼らなくていいよ
200 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 23:49:28 ] >>193 Haskellは近くのコンビニにぬり絵が売ってます。 Lispはドンキホーテに行けばぬいぐるみが売っています。 >>193 君はどちらが好きですか?
201 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 00:02:40 ] 外に出なくても済む方がいいです
202 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 07:17:52 ] λ
203 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 08:13:10 ] maximaの中に面白いのみっけた (defun for-eval-then-quote (var) `(list 'quote ,var)) (setq x 1) (for-eval-then-quote x) -> '1
204 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 12:37:31 ] >>203 えーと、ほんとにそれを動かしたら'1になったのかい? 正しい結果は(list 'quote 1)になるのでは。 関数とマクロの評価はごっちゃにしないように。 この辺り何か思い違いしてると思うよ。 ちなみに'1を期待するなら関数の中身は`',var または(list 'quote var)
205 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 13:23:49 ] >>204 間違えました (eval (for-eval-then-quote x)) ->'1
206 名前:デフォルトの名無しさん mailto:sage [2009/02/09(月) 01:08:08 ] loopマクロ勉強したのにiterateの方が使われてたり 言語の発展はゆるやかだ とか言ってたのどこのどいつだ
207 名前:デフォルトの名無しさん mailto:sage [2009/02/09(月) 01:52:43 ] >>206 それ言語じゃなくてライブラリの発展だと思うんだが……。
208 名前:デフォルトの名無しさん mailto:sage [2009/02/09(月) 02:14:28 ] >>206 これ読め。 pc11.2ch.net/test/read.cgi/tech/1203096230/251
209 名前:デフォルトの名無しさん mailto:sage [2009/02/10(火) 12:06:52 ] [clojure] 攻撃:28 素早さ:67 防御:78 命中:87 運:55 HP:202 [Qi II] 攻撃:51 素早さ:21 防御:48 命中:69 運:23 HP:189 clojure vs Qi II 戦闘開始!! [clojure]の攻撃 HIT [Qi II]は1のダメージを受けた。 [Qi II]の攻撃 HIT [clojure]は16のダメージを受けた。 [clojure]の攻撃 HIT [Qi II]は56のダメージを受けた。 [Qi II]の攻撃 HIT [clojure]は1のダメージを受けた。 [clojure]の攻撃 HIT [Qi II]は56のダメージを受けた。 [Qi II]の攻撃 HIT [clojure]は10のダメージを受けた。 [clojure]の攻撃 HIT [Qi II]は38のダメージを受けた。 [Qi II]の攻撃 HIT [clojure]は1のダメージを受けた。 [clojure]の攻撃 HIT [Qi II]は25のダメージを受けた。 [Qi II]の攻撃 HIT [clojure]は1のダメージを受けた。 [clojure]の攻撃 HIT [Qi II]は57のダメージを受けた。 [clojure]が[Qi II]を倒しました(ラウンド数:6)。 魔法のMD5 - MD5バトル www.newspace21.com/mix/btl.php
210 名前:デフォルトの名無しさん mailto:sage [2009/02/10(火) 13:48:31 ] kill
211 名前:デフォルトの名無しさん mailto:sage [2009/02/10(火) 15:30:33 ] 連邦のモビルスーツは化け物か!?
212 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 05:14:36 ] array->list 変換関数がみつからない 自分で書くものなの? (array->list #2a((1 2)(3 4))) ->((1 2)(3 4))
213 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 23:55:21 ] >>自分で書くものなの? R5RSには記述がないからそうだと思うけど, それより#2a(...の2aって何?
214 名前:デフォルトの名無しさん mailto:sage [2009/02/12(木) 00:02:23 ] #2A(..)ってのはCommon Lispの二次元配列かな。 ARRAY (2)のリストになってほしいのか、リストのリストになってほしいのか。 まぁ、結論からいうと>>212 ARRAY (2 2)はLISTと互換性がないからムリ。自分で書く。 ベクタとかなら (coerce #(1 2 3) 'list) で変換できる。
215 名前:デフォルトの名無しさん mailto:sage [2009/02/12(木) 03:21:33 ] lispに興味があるんですが、 いまからlispを勉強するならなんの書籍がお勧めですか? SICPってのがお勧めっぽいんですが、MITで使われてるとなると・・・ 読みこなせるかなー
216 名前:デフォルトの名無しさん mailto:sage [2009/02/12(木) 05:29:30 ] オンラインで読める無料の ・独習Scheme三週間 ttp://www.sampou.org/scheme/t-y-scheme/ ・入門Scheme ttp://www4.ocn.ne.jp/~inukai/scheme_primer_j.html や 書籍じゃないけど ・もうひとつのScheme ttp://www.shido.info/lisp/idx_scm.html あたりを読んでから買えばいいんじゃないでしょうか。
217 名前:デフォルトの名無しさん mailto:sage [2009/02/12(木) 05:46:35 ] >>215 SICP読んでみて、自分に合いそうなら買うのがいいとおも。 mitpress.mit.edu/sicp/
218 名前:デフォルトの名無しさん mailto:sage [2009/02/12(木) 10:05:25 ] SICP日本語版はちょっと高い
219 名前:デフォルトの名無しさん mailto:sage [2009/02/12(木) 10:48:56 ] なんでいきなりSICPなんじゃーー
220 名前:デフォルトの名無しさん mailto:sage [2009/02/12(木) 11:11:47 ] 「良い本だ」ってよくScheme関連のWEBに載ってるから。
221 名前:デフォルトの名無しさん mailto:sage [2009/02/12(木) 11:20:35 ] 良い本には違いないけど、 SICPも買いたいなら、別の本と併読した方がいいと思う。 言語仕様書が日本語化されているからそれでいいか、 って人ならSICPだけで問題なし。
222 名前:デフォルトの名無しさん mailto:sage [2009/02/12(木) 12:06:25 ] maximaが使いたいだけだったので on lispはじっくり読んだが SICPは問題もやらずに流し読み
223 名前:デフォルトの名無しさん mailto:sage [2009/02/12(木) 20:13:48 ] SICP は Scheme の本というわけではない。 Scheme を使って解説してる本。
224 名前:デフォルトの名無しさん mailto:sage [2009/02/12(木) 20:19:01 ] >>223 え、そうなんですか? 自分はアルゴリズムの勉強のために買いました。 序盤の関数 f(x) の話とか、大学の数学が懐かしいです。
225 名前:デフォルトの名無しさん mailto:sage [2009/02/12(木) 20:22:09 ] SICPにアルゴリズムの話が出てないわけではないが、 SICPをやってもアルゴリズムを勉強したとは言えない。
226 名前:デフォルトの名無しさん mailto:sage [2009/02/12(木) 20:22:39 ] >>223 何を解説してるの? w
227 名前:デフォルトの名無しさん mailto:sage [2009/02/12(木) 20:28:22 ] >>226 っ人生
228 名前:デフォルトの名無しさん mailto:sage [2009/02/12(木) 20:36:31 ] >>226 本のタイトル
229 名前:デフォルトの名無しさん mailto:sage [2009/02/12(木) 20:44:04 ] >>226 降り続く雨 きしむ廊下 立ち止まる足音 遠のく意識
230 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 01:35:07 ] SICP読んだら魔法使いになれますか?
231 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 07:26:27 ] >>230 なれません。
232 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 07:45:20 ] >>230 なれます。 就活に有利です。
233 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 11:01:41 ] >>230 さあ、30歳になるまで貞操を守る作業に戻るんだ
234 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 14:39:58 ] 30歳を越えてるのですがSICPは読めますか?
235 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 14:51:53 ] 読めなかったら困ると思いますよ
236 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 15:01:35 ] 60歳とかでも読めるらしいですよ 読めなかったら数学勉強してから再挑戦しましょう
237 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 19:19:40 ] 30歳過ぎてもSICP読むと童貞になりますか?
238 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 19:34:56 ] 俺はSICPを読んで、背が10cm伸びたよ
239 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 19:49:08 ] SICP読んで宝くじ当たったよ。
240 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 19:50:51 ] もしかして訳者の和田さんってスーフリの和田さん?
241 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 19:52:39 ] プログラマ50人に1人ぐらいはSICP読んでるよね。
242 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 19:54:25 ] >>250 和田って俺のことだけど。
243 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 20:28:13 ] SICP未読で許されるのは小学生までだよね!
244 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 22:31:02 ] ちょっと待ってくれ。「人生に必要な知恵はぜんぶ幼稚園の砂場で学んだ」とあるように、幼稚園のうちに読んでおくべきものではないだろうか?
245 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 22:34:17 ] なんてこったい/(^o^)\
246 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 22:52:02 ] 人生に必要な知恵はぜんぶサンドボックで学んだ。
247 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 22:55:25 ] 俺、人生に必要な知恵はぜんぶ死後の世界で学ぶんだ…
248 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 23:02:42 ] 次はアメンボに生まれてきたりして
249 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 23:07:08 ] おれも人生に必要なことは幼稚園で一通り学んだ覚えがあるな
250 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 23:14:11 ] >>249 ってことは、幼稚園で、チュー済ませたタイプか。
251 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 23:45:23 ] 登り棒オナニーなら幼稚園の時に覚えました
252 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 00:48:59 ] SICP以外誇れるものはないのか
253 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 00:54:55 ] essential of なんたらとかreasoned schemerとかもいいかも
254 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 01:00:19 ] 時代は宝石の名前の言語じゃね?
255 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 01:05:57 ] 党員の友人とMercuryを学んでいます。
256 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 01:13:10 ] Perlのことですね、わかります
257 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 01:27:06 ] あのバージョン6がすべった言語のことか
258 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 01:28:03 ] >>255 それは金属であって宝石ではない(゚д゚)!
259 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 01:28:14 ] 真珠の綴りはPerlじゃないぞ・・・
260 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 01:32:50 ] まぁなんにせよ変な宗教言語は使いたくないわなw
261 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 05:43:57 ] ()とか幼稚園じゃ習わなかった
262 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 09:40:03 ] 幼稚園の時、世の中はすべてnilだと習った。
263 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 09:44:22 ] うちの幼稚園ではnil派と()派が闘争を繰り返していた。
264 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 10:01:49 ] little schemerって幼稚園児でも理解できるように書かれたんだっけ
265 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 11:41:33 ] 誰が象のラムダ君役をするかで喧嘩になってみっちゃんが泣いた。
266 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 11:43:25 ] ここは幼稚園で人生のすべてが再帰的だと悟ったみなさんが集まるスレですかね。
267 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 11:45:16 ] 継続渡しスタイルで幼稚園ドロップアウトした。
268 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 12:36:37 ] ところで、 チョコはいくつもらえましたか
269 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 12:38:38 ] カーチャンから一個、姉さんから一個
270 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 12:44:26 ] (´;ω;`)
271 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 12:46:02 ] ええい、FOR文でもらえた奴はいないのか!
272 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 12:50:04 ] 「末尾再帰!」と叫んで保母さんのスカートをめくったのはいい思い出
273 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 13:14:52 ] Next Boston Lisp Meeting: Monday February 23th 2009 at 1800 at MIT 34-401B fare.livejournal.com/139926.html vyzo will talk about gerbil, a little language for distributedprogramming using PLT-Scheme. Gerbil is a macro language that provides facilities for actor-based distributed programs and transparent network simulation. これおもしろそうね。
274 名前:デフォルトの名無しさん [2009/02/14(土) 18:38:38 ] Seasoned Schemer ってどうですか?
275 名前:デフォルトの名無しさん [2009/02/14(土) 18:39:22 ] Let Over the Lambda ってどうですか?
276 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 22:52:52 ] 海は死にますか?
277 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 23:11:19 ] nilもそうですか?
278 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 23:18:17 ] 水曜どうですか?
279 名前:デフォルトの名無しさん mailto:sage [2009/02/15(日) 00:06:17 ] 明日来てくれるかな?
280 名前:デフォルトの名無しさん mailto:sage [2009/02/15(日) 00:43:26 ] このスレのネタの応酬はハイレベル過ぎて
281 名前:デフォルトの名無しさん mailto:sage [2009/02/15(日) 00:50:07 ] 終いますか〜?
282 名前:デフォルトの名無しさん mailto:sage [2009/02/15(日) 00:58:25 ] 括弧の山を愛する連中の嗜好が平凡なわけがなかった・・・・
283 名前:デフォルトの名無しさん mailto:sage [2009/02/15(日) 01:02:23 ] 別に愛してるわけじゃないけど、無いと不安になるというか不安定に感じる。
284 名前:デフォルトの名無しさん mailto:sage [2009/02/15(日) 01:44:31 ] 十分平凡でないです!
285 名前:デフォルトの名無しさん mailto:sage [2009/02/15(日) 17:10:57 ] アイちゃんも冗談を言うようになったか。
286 名前:デフォルトの名無しさん mailto:sage [2009/02/15(日) 20:27:36 ] >>274 何が? 俺は好きだよ?
287 名前:デフォルトの名無しさん mailto:sage [2009/02/15(日) 23:07:40 ] hogehoge
288 名前:デフォルトの名無しさん mailto:sage [2009/02/15(日) 23:40:17 ] (hage? >287)
289 名前:デフォルトの名無しさん mailto:sage [2009/02/15(日) 23:54:06 ] 一連の1行の糞レスをあぼーんするプログラムを作れ
290 名前:デフォルトの名無しさん mailto:sage [2009/02/15(日) 23:59:14 ] (waha >>288 )
291 名前:あぼ〜ん mailto:あぼ〜ん [2009/02/16(月) 00:38:22 ] あぼ〜ん
292 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 02:11:17 ] >>289 navi2chちょっといじればいいだけ
293 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 03:08:12 ] iPhone/iPod touch用のLisp/Schemeを発見。次スレのテンプレに入れて。 www.turbozen.com/sourceCode/TinyLisp/ programming.nu/
294 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 04:15:12 ] こういうlist が返ってくるときに ((1 2 3) (1 2 3) (1 2 3)) こういう処理にするにはどうすればできますか? (map + '(1 2 3) '(1 2 3) '(1 2 3))
295 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 04:25:47 ] (apply map (cons + list))
296 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 04:36:47 ] >>295 ありがとうございます!
297 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 10:24:17 ] >>293 wikiのテンプレに書き加えておいて。
298 名前:デフォルトの名無しさん mailto:sage [2009/02/20(金) 00:27:38 ] (setq list1 '((message "X") (message "Y"))) があったとして、list1 の各要素を順番に実行していく方法を教えてください。
299 名前:デフォルトの名無しさん mailto:sage [2009/02/20(金) 00:38:32 ] (eval (cons 'progn list1)) こういう話? それともこんなのをお望み? (mapcar #'(lambda (x) (apply (car x) (cdr x))) list1)
300 名前:デフォルトの名無しさん mailto:sage [2009/02/20(金) 00:44:13 ] (mapcar #'eval '((message "X") (message "Y"))) とかでもいいのか。
301 名前:デフォルトの名無しさん mailto:sage [2009/02/20(金) 01:01:05 ] 仮定が分からないな。 messageというのが関数なのか? (setf *func-hash* (make-hash-table)) (setf (gethash 'message *func-hash*) #'(lambda (x) (princ x))) (setf list1 '((message "x") (message "y"))) (mapc #'(lambda(x)(funcall (gethash (car x) *func-hash*) (cadr x))) list1) => 以下が結果 maximaとかはこの手のことをやってるね。 xy ("x" "y")
302 名前:298 mailto:sage [2009/02/20(金) 03:13:07 ] >>299 >(eval (cons 'progn list1)) すごいです。これでできました。 ありがとうございました。
303 名前:デフォルトの名無しさん mailto:sage [2009/02/20(金) 05:52:44 ] Scheme (let ((list1 '((display "X") (display "Y")))) (map eval list1)) ⇒XY(#<void> #<void>)
304 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 01:33:52 ] (cons 1 '(2 3)) -> (1 2 3) となりますが (cons '(1 2) 3) -> ((1 2) . 3) になりますよね 今は (append '(1 2) '(3)) と書いてますが (cons 1 '(2 3)) に比べて冗長だと感じます もっと良い書き方はありますか?
305 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 01:51:17 ] 書き方というか、片方向リストの仕様だから
306 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 03:11:26 ] (define (wahacons a b) (append a (list b))) (wahacons '(1 2) 3)
307 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 05:12:06 ] >>305 仕様ですか…。 >>306 関数を書いてしまえば良かったんですね ありがとうございます
308 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 06:25:59 ] >>307 quasiquoteは? > (define x '(1 2)) x > `(,x 3) ((1 2) 3)
309 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 06:28:27 ] 肝心な部分コピペし忘れとかどうなのよ、俺……orz > `(,@x 3) (1 2 3)
310 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 23:02:45 ] Luaスレがschemeネタで盛り上がってるw
311 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 00:35:49 ] ちょっと見てくルア
312 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 01:21:09 ] 見てきたけど、あんまり面白い流れでも無かった。 速いなら実装を参考にしよう、とか建設的な意見が出る訳でもなく、 単にSchemeイラネ、だし。
313 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 04:20:15 ] 括弧うぜえとか。
314 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 09:18:44 ] Schemeは作るの簡単とか。
315 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 09:36:45 ] >>312 Luaってのはどういう言語かもよく知らないんだが、 処理系は結構よくできているみたいで遅くはないよ。 shootout.alioth.debian.org/gp4/benchmark.php?test=all&lang=all&box=1
316 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 14:35:16 ] ypsilon軍団とgauche軍団どっちが多い?
317 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 14:36:35 ] [gauche] 攻撃:52 素早さ:32 防御:27 命中:74 運:17 HP:258 [Ypsilon] 攻撃:88 素早さ:69 防御:92 命中:95 運:96 HP:144 gauche vs Ypsilon 戦闘開始!! [Ypsilon]の攻撃 HIT [gauche]は154のダメージを受けた。 [gauche]の攻撃 HIT [Ypsilon]は1のダメージを受けた。 [Ypsilon]の攻撃 HIT [gauche]は173のダメージを受けた。 [Ypsilon]が[gauche]を倒しました(ラウンド数:2)。 魔法のMD5 - MD5バトル www.newspace21.com/mix/btl.php
318 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 14:38:19 ] 何という二番煎じ、お前は車輪の再発明でもしてろ
319 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 20:43:41 ] 車輪の再発明はハッカーの大好物
320 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 21:09:19 ] >>315 遅くないのは知ってるけど、向こうの話題の発端がそういう話だった。 俺の場合、VCSのmonotoneで組み込まれてて知ったんだけど、 かなり評価高い言語だよね。Adobeとかも採用してるとか。
321 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 21:14:55 ] Lispが早いとか
322 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 22:30:29 ] CLでもSchemeでもいいので話題のHSPみたいに簡単にゲーム作れるソフトはありますか?
323 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 22:38:44 ] >>322 CL/scheme はしらんが、どこぞのメーカは ゲーム開発ベッドで専用 Lisp 使ってなかったっけ?
324 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 22:56:50 ] >>322 LispやSchemeをゲーム制作に生かしている企業とかはあるみたいだけど、 誰でも分かり易いライブラリだの、特化した処理系だのはないんじゃない? 一応、SDLとかOpenGLとか使ってゲーム作るのは、大抵の処理系で出来ると思うけど。 というか、HSPが話題っていつの話だ。
325 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 23:41:31 ] >>323 これね。 en.wikipedia.org/wiki/Game_Oriented_Assembly_Lisp
326 名前:デフォルトの名無しさん mailto:sage [2009/02/23(月) 02:25:21 ] LuaとかSquirrelは遅かったらC++に書き直せばいいだけだからな
327 名前:デフォルトの名無しさん mailto:sage [2009/02/23(月) 02:48:48 ] Lisp/Schemeも同じことができると思うんだが……。
328 名前:デフォルトの名無しさん mailto:sage [2009/02/23(月) 03:01:43 ] 書き直す際に 実装が多いのが弱点ではないかと。
329 名前:デフォルトの名無しさん mailto:sage [2009/02/23(月) 03:04:34 ] Squirrelは書き直すのが楽そうだ
330 名前:デフォルトの名無しさん mailto:sage [2009/02/23(月) 06:21:26 ] StalinならCより速くなることもあるんじゃなかったっけ?
331 名前:デフォルトの名無しさん mailto:sage [2009/02/23(月) 09:01:55 ] Stalinって実際どんな感じ?
332 名前:デフォルトの名無しさん mailto:sage [2009/02/23(月) 09:49:25 ] StalinってCを出力するんでしょ? Cより速くなる事は無いと思うけど… Cで「人間が」書くより速くなる事ならあるかもしれないけど
333 名前:デフォルトの名無しさん mailto:sage [2009/02/23(月) 10:13:08 ] stalin ... それは、かつてソ連で大量虐殺をおこなった恐怖の支配者。。。 だから 非人間的な行動(コード)だろ?人間が書くCのコードより速いってことじゃ?
334 名前:デフォルトの名無しさん mailto:sage [2009/02/23(月) 12:45:31 ] Stalinは、人間がかくCコードよりかなり早い場合も多い。 ただし、継続が使えないとか制限が多いし、コンパイル時間がめっちゃかかる。 >>332 > Cより速くなる事は無いと思うけど… > Cで「人間が」書くより速くなる事ならあるかもしれないけど こんなこというやつ初めて見た。
335 名前:デフォルトの名無しさん mailto:sage [2009/02/23(月) 13:00:30 ] そうか?理論値と実情を別に語るのは良くあると思うが。
336 名前:デフォルトの名無しさん mailto:sage [2009/02/23(月) 14:49:32 ] だって、人間が書いたものではないCを含めて 「C言語より速い」 を語るなら、それって実質的にCコンパイラの最適化の差に帰着するじゃん。 コンパイラによってはCから (ほぼ)最小のアセンブリを生成できることだってできるし、 そうすると何をもって「Cのソース」とするのかって話になって、 「Cのソースを吐くんだからCより速いはずがない」 っていう議論は空虚じゃない? まぁ言い出しておいてアレだけどスレチだな。すまん
337 名前:デフォルトの名無しさん mailto:sage [2009/02/23(月) 15:49:25 ] Stalinの話は定期的にでてくるけど、流れとしては・・・ 「同じ問題を解くのに俺様の書いたCよりXXにあるStalinのコードの方が速かった!」 「でも俺様のCのコードがヘボいことはありえない!そんなことは考えられない!」<- これが間違い 「Stalinはどんな魔法を使ってるんだ!スゲーよStalin!」 一部で盛り上がるけどスルーする人も多い。 同じ速度を出すのにStalinを使った方が簡潔に短時間で書けるというのはあると思う。 だからあれほどコンパイル時間がかかってもユーザーは気にしないんじゃないかな。
338 名前:デフォルトの名無しさん mailto:sage [2009/02/23(月) 17:31:09 ] まぁStalinはある種の一発モノだからな。 研究とか勉強の材料としてはすごいけど、プロダクションでは使えないから 盛り上がるのは一部にとどまる。 俺は盛り上がった派だけどw 最適化の解説の論文は勉強になった
339 名前:デフォルトの名無しさん mailto:sage [2009/02/23(月) 21:26:10 ] schemeのマクロを使って 見た目から括弧を無くしていくことって出来ますか? 例えば括弧のない1 + 2を3と評価するとか for リスト do 処理 done みたいな構文がmapの意味で動くようにしてみたい
340 名前:デフォルトの名無しさん mailto:sage [2009/02/23(月) 21:34:29 ] >>339 まえにどっかでみたことがある。srfiなんとか だったと思う。
341 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 01:17:57 ] SRFI 49のI-expressionsは、インデントで構文木を表す表記法であって、 マクロは関係なかった気がするんだけど、違ったっけ?
342 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 06:02:54 ] SRFI 49: Indentation-sensitive syntax srfi.schemers.org/srfi-49/srfi-49.html 最高にキモい Lisp コードを書いてみよう with 100 行リーダーマクロ lispuser.net/memo/lisp/2006-03-30-23-58.html
343 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 12:45:19 ] つ Standard Lispの記号モード
344 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 15:44:53 ] >>339 「schemeのマクロを使って」も マクロ使用を囲う括弧と、マクロ名さえあれば中置記法もできます。 ただしこの3つをなくするのはRnRSではできない。 処理系によってはリーダマクロをサポートしているのでそれを使うと可。
345 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 20:11:25 ] なるほど、やはり出来ないのかー リーダーマクロ、存在だけは知ってましたが コンパクトでかっこいいSchemeで出来たらなぁって思いまして 昨日考えてたんですが、 Schemeには演算子の優先順位がないのが原因でしょうね もし優先順位がつけば、括弧省略出来る それはそれで、F#やらHaskellやらでみかける パイプライン演算子みたいなのが定義出来たり、と夢が膨らむが 言葉に表せない大切な物が犠牲になってしまう気がします >マクロ使用を囲う括弧と、マクロ名さえあれば中置記法もできます。 これ非常に興味あるんですが、どういうことでしょうか? 適当に試してはみたんですが、わかりません (define-syntax plus (syntax-rules () ; ((x _ y) (+ x y)))) ; ((x (_) y) (+ x y)))) ; (((x _ y))(+ x y)))) Gaucheの拡張で優先順位を計算して括弧を省略ってページなら見つけましたが そういった話でしょうか?
346 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 20:42:16 ] こういうことじゃないの (define-syntax calc (syntax-rules (+ -) ((_ a + . rest) (+ a (calc . rest))) ((_ a - . rest) (- a (calc . rest))) ((_ a) a) ) ) > (calc 1 + 10 - 5) 5
347 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 20:44:04 ] 5かよ
348 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 20:44:55 ] > Schemeには演算子の優先順位がないのが原因でしょうね > >マクロ使用を囲う括弧と、マクロ名さえあれば中置記法もできます。 > これ非常に興味あるんですが、どういうことでしょうか? そうゆう reader を作ればいいじゃね? 作るだけだったら誰でも作れると思うし…
349 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 20:45:29 ] >>345 俺は344じゃないけど、344の言ってることは違う。 344が言ってるのは、「一番その側のカッコがあれば」 ということ。 いちばん外側のカッコは、どう頑張ってもRnRSでは省略不可能。 しかし、一番外側のカッコとマクロ名を許容すれば、 そのマクロの引数を全部自力で解釈すれば、そういうことは可能ということ。 文字通り、言語をもう1つ作るようなもんだけど。
350 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 20:46:54 ] × 一番その側 ○ 一番外側
351 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 21:16:51 ] >>344 これ面白いなぁ。 引き算は (calc 1 - 2 - 3) こう展開されてしまうから (- 1 (- 2 3)) 正しい値にならないね けど、面白いからちょっと考えてみます >>349 なるほど、勉強になります。 「マクロ使用を囲う括弧と、マクロ名さえあれば」 というのは、344氏の例でいけば、 一番外側の()とマクロ名であるcalcっていう意味なわけですね そして、それより内側であれば、がんばり次第で自由自在だ、と。
352 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 21:51:26 ] ('A`)y-~
353 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 02:20:27 ] そもそも、何で括弧なくしたいんだ? 知的好奇心満たしたいだけなら何も言わんが。
354 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 07:19:11 ] Lisp Scheme初心者です。マグロウヒルの「プログラムの構造と実行」をテキストに Schemeを勉強しようと思っています。 そこで皆様のアドバイスをお願いしたいのですが、どのScheme処理系がお勧めでしょうか? あまりにもたくさんありすぎて判断できません。 OSはWindows XPです。よろしくお願いします。
355 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 08:44:21 ] >>354 windows上で勉強目的なら統合環境のほうが楽だろうしPLT schemeで良いんじゃないかな。 さもないなら、linux上でemacs+gauche(日本語の本があるから)とかでも良いように思うん だけどね。
356 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 15:03:43 ] >>338 stalinがダメなら 記述力と速度を同時に達成できるのって ocamleぐらい?
357 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 16:11:06 ] GCの停止時間がなくて 記述力も同時に達成できるのはC++しかないんだぜ
358 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 16:19:51 ] 確か2月前半ぐらいに comp.lang.lisp でreadable なlisp -> C 変換の話がでてたはずなのに見つからない
359 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 16:55:36 ] C++はOOPの振りをした関数型言語だからな
360 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 17:34:58 ] >>359 テンプレートで遊ぶ分にはそうだけどな
361 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 18:16:37 ] OOPは言語関係ねーす
362 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 18:20:23 ] c++でoneceonlyマクロって書けるんだろうか 前にoneconleyできない関係で何度も代入評価されてる 「そんなエラー絶対みつかんないだろう」ってエラーがboost関係で報告されてた
363 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 19:39:11 ] >>353 どっちかっていうと実用的な理由 ・タイプ量を減らしたい ・括弧がネストすると、対応が激しくおいづらい
364 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 19:48:59 ] emacsを使えばそんなこと屁でもないな むしろ()がある方がタイプ量が減るし、移動が楽ってぐらいになる 逆にエディタの支援が無いとなるとなるほどそれは確かに致命的だ
365 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 20:09:55 ] エディタの機能でどうのこうのっていうのは 言語の話とは別のような・・ 俺もemacsは使ってるが >()があるほうがタイプ量が減る それはない letよりlet1のほうが読みやすいし打ちやすい
366 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 20:26:16 ] >>363 実用的な理由で括弧を消すのはないだろー。 前者の理由なら、そのために高階関数やマクロがある。 後者の理由なら、そのためにエディタの支援機能がある。 というか、インデントで対応を追うのが普通。 まあ、実際にやってみて、構文を増やす度に複雑化する、 仕様やリーダーマクロのメンテにうんざりしてみれば、 その辺良く分かるとは思うけど。
367 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 20:34:54 ] 実用ってことはコードを編集することを含むだろう? ならエディタは関係あるじゃないか
368 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 20:52:06 ] emacsの括弧うんぬんはいじる方の腕しだいで楽になる。
369 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 20:56:54 ] emacs はこのへんを組み込んでるかどうかでも全然ちがうよ。 1. insert-parentheses を使ってるかどうか 2. show-paren-mode を使ってるかどうか 3. transient-mark-mode を使ってるかどうか
370 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 20:57:00 ] >>365 プログラムのコードのタイプ量は減るだろうけど、 編集作業全体のタイプ量は驚きの増加量、って感じになる気がするよ。 S式単位での編集を使わないと、移動に掛かる手間が段違い。
371 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 21:03:44 ] emacs userは1匹見ると10匹いると思え
372 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 21:06:15 ] >>371 ごきぶりみたいにいうな にがわらひ 370みたいなべてらんもいるけど、C-F C-B C-N C-Pもままならずマウスな初心者も いるから。 viでもlispモードは普通にあるよ。
373 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 21:36:25 ] >>371 むしろ1匹しかいない絶滅危惧種扱いの所が多いよ。
374 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 22:18:10 ] google trendsをみても検索数の指数は減ってるけど、多い地域はアカデミックなところが 多いね。日本も亜米利加もね。
375 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 23:15:14 ] 俺ベテランじゃなくて異端。 viper-modeで、viとEmacs両方のキーバインドを同程度に使う変態。
376 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 23:19:42 ] vipperかお?
377 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 23:22:13 ] お じゃない。
378 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 23:27:08 ] >>375 viper-modeかぁ。15年以上起動したことがない。笑い
379 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 23:31:02 ] >>375 ___l___ /、`二//-‐''"´::l|::l l! ';!u ';/:::l ', ';::::::l ';:::::i::::: ノ l Jヽ レ/::/ /:イ:\/l:l l::l u !. l / ';:::l ', ';:::::l. ';::::l::::: ノヌ レ /:l l:::::lヽ|l l:l し !/ ';:l,、-‐、::::l ';::::l:::: / ヽ、_ /::l l:::::l l\l ヽ-' / ';!-ー 、';::ト、';::::l::: ム ヒ /::::l/l::::lニ‐-、`` / /;;;;;;;;;;;;;ヽ! i::::l::: 月 ヒ /i::/ l::l;;;;;ヽ \ i;;;;;;;;;;;;;;;;;;;l l::l::: ノ l ヽヽノ /:::l/:l /;;l:!;;;;;;;;;', ';;;;;;;;;;;;;;;;;ノ l:l::  ̄ ̄ /::::;ィ::l. l;;;;!;;;;;;;;;;;l `‐--‐'´.....:::::::::!l __|_ ヽヽ /イ//l::l ヽ、;;;;;;;ノ.... し :::::::::::::::::::::ヽ /!リ l | ー /::::l';!:::::::::::::::::::: u ', i ノ l | ヽー /イ';::l ’ し u. i l l | /';:';:!,.イ し 入 l l U | /,、-'´/ し / ヽ、 u し ,' ,' l | /l し _,.ノ `フ" ,' ,' ,ィ::/: | /::::::ヽ ヽ / し ,' ,' / l:: | /::::::::::::`‐、 し ', / u ,、-'´ l,、- | ``‐-、._::::::::::` ‐ 、 ',/ , -'´`'´ ,-'´ | _,、-‐'"´';:::::::::イ:l';:::` ‐ 、._____,、-‐'"´ u / | | | | \ l::/ l::::::/リ ';:::::lリ:::::l';:::l l:l:::::l\ u / | | | |
380 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 23:56:13 ] >>375 viperモードたまに使うけど、完全に終了させる方法教えて下さい。 viper-go-away しても別のファイル開いたらまたviperになってて、 仕方ないからemacs毎再起動してる。
381 名前:デフォルトの名無しさん mailto:sage [2009/02/26(木) 02:13:24 ] >>380 せっかくなので、ソースコードを読んで原因を探ってきました。 viper-go-awayを呼ぶと、viper.elのviper-remove-hooksで、 仕掛けていた各メジャーモードのフックを解除していくのですが、 コードを見ればお分かりの通り、とても素敵なバグがありまして、 find-file-hooksとかは完全スルーです。 なので、自分でコードを修正するか、本家にフィードバックするか、 俺のようにVIPER常駐野郎になるか選んでください。
382 名前:デフォルトの名無しさん mailto:sage [2009/02/26(木) 04:40:02 ] と思ったんだけど、追加で調べていったら、 デフォルトのメジャーモードを元に戻さないってバグもあって、 これが本筋っぽい。CVS最新版では修正されてる。 ↓を.emacsに追加でひとつ。 (defadvice viper-go-away (after revert-default-major-mode activate) (setq default-major-mode 'fundamental-mode))
383 名前:デフォルトの名無しさん mailto:sage [2009/02/26(木) 08:37:29 ] maximaの細かいbugが未だに放置なのは common lispの問題なんだろうか schemeで書かれてるならbugは少なくなるんだろうか
384 名前:デフォルトの名無しさん mailto:sage [2009/02/26(木) 11:34:14 ] 妄想はそのくらいに
385 名前:デフォルトの名無しさん mailto:sage [2009/02/26(木) 19:45:52 ] もともと"Common Lisp"じゃないものをGCLに、そして"Common Lisp"に書き直したからじゃない? 最初から"Common Lisp"で書かれていたら違っていたかも Maxima使ってないからよくわからないけど
386 名前:デフォルトの名無しさん mailto:sage [2009/02/26(木) 23:21:25 ] 質問。この2つに違いってありますか? (define (f x) (define g 10) (+ x g)) (define (g x) (let ((h 10)) (+ x h)))
387 名前:デフォルトの名無しさん mailto:sage [2009/02/26(木) 23:29:49 ] 5.2.2 internal definitionsに変らないと書いてある。 > A <body> containing internal definitions can always be converted > into acompletely equivalent letrec expression.
388 名前:デフォルトの名無しさん mailto:sage [2009/02/26(木) 23:45:33 ] (define (g x) (letrec ((h 10)) (+ x h))) となら同じ、が正しいのでは? letとletrecは違う この例はたまたまコンビネータ式が束縛されているに過ぎない (正確には式が束縛されているわけではないけど)
389 名前:デフォルトの名無しさん mailto:sage [2009/02/26(木) 23:53:51 ] 質問の意図によるだろうけど 最終的な機械語に落とす段階では同じコードになる
390 名前:388 mailto:sage [2009/02/26(木) 23:57:23 ] とはいったものの、束縛する式が1つならSchemeレベルではletとletrecは等価ですね
391 名前:デフォルトの名無しさん mailto:sage [2009/02/27(金) 00:01:31 ] >>387 ありがとうございます 自分の知らない、 何か違う意味があるんだろうと思って質問したんですが letrecと同じ意味なんですね
392 名前:デフォルトの名無しさん mailto:sage [2009/02/27(金) 00:01:49 ] おっちょこちょいですね。
393 名前:デフォルトの名無しさん mailto:sage [2009/02/27(金) 00:04:11 ] >>391 >>386 の例ではletで問題ない。
394 名前:デフォルトの名無しさん mailto:sage [2009/02/27(金) 00:11:24 ] >>393 了解です。Schemeってシンプルですね。ありがとうございます
395 名前:デフォルトの名無しさん mailto:sage [2009/02/27(金) 00:20:22 ] >>387 編集ミスった。 acompletely→a completely 否定のa-に見えてしまう すまん
396 名前:デフォルトの名無しさん mailto:sage [2009/02/27(金) 10:00:52 ] さしずめ「うは宇宙のう」
397 名前:デフォルトの名無しさん mailto:sage [2009/02/27(金) 21:31:01 ] >>382 遅くなったけどありがとう。これでviperモードと仲良く暮らせそうです。
398 名前:デフォルトの名無しさん mailto:sage [2009/02/28(土) 08:07:26 ] お
399 名前:デフォルトの名無しさん [2009/02/28(土) 09:35:38 ] 399
400 名前:デフォルトの名無しさん [2009/02/28(土) 09:36:03 ] 400
401 名前:デフォルトの名無しさん mailto:sage [2009/02/28(土) 18:05:35 ] shibuya.lisp ストリーミング中! って今ごろ気付いたorz
402 名前:デフォルトの名無しさん mailto:sage [2009/02/28(土) 23:49:13 ] 見逃した…… ニコニコ動画辺りに上げてくれないかあ
403 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 20:33:59 ] >>402 マイリスト Shibuya.lispテクニカルトーク#2‐ニコニコ動画(ββ) www.nicovideo.jp/mylist/11305224
404 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 20:48:54 ] >>403 と投稿者に感謝を
405 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 20:57:15 ] >>403 マジでありがとう!!
406 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 01:21:33 ] 他の関数型言語でこの手の集まりをみないのは 学会で代用してるからなのだろうか
407 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 01:33:04 ] >>406 勉強会ならあるけどな。
408 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 05:19:41 ] >>403 あー、配信のときとは別テイクで音声がずいぶん聞きやすくなってる! ありがとうございます。
409 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 10:57:50 ] >>406 HaskellとかOCamlだと人がそんなにまだ多くないし(Lispに比べれば)、 ゲーム作りましたみたいな大きいネタとか、その筋なら誰でも知ってる大先生とか そういうのないからねぇ。 さがせば>>407 が書いてるみたいに勉強会とかあるからメイリングリストとか 入ってみれば? 今時捨てアドのひとつやふたついくらでも作れるし。
410 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 17:06:35 ] lispが多いといってもschemerが多いんじゃない? やはり、川合さんとか、処理系製作者が3人もいるくらいだからね。 common lispは人は少ないよ。Qiやclojure,newLispに至っては壊滅的。 そーいえば、abclがバージョンアップしてたな。
411 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 17:12:46 ] ircを覗くと、常駐者が #lisp 250 #haskell 550 #ocaml 50 #scala 50 #clojure 100 #ruby 250 くらいみたいだね。haskellがなんでこんなに多いんだ?
412 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 18:35:37 ] has略は中ニ設定豊富だからな
413 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 22:33:36 ] pc11.2ch.net/test/read.cgi/tech/1234635513/378 自分はLispが全然書けないけど、どんだけ短くなるのか見てみたいです。 どなたお願いします〜
414 名前:デフォルトの名無しさん mailto:sage [2009/03/03(火) 00:34:29 ] >>410 Qiというものを始めて知りましたが、Haskellっぽくて面白そうですね。 ところで皆さんはこういった面白い実装の情報をどこで得てるんでしょうか? 英語のメーリングリストなのかな?とは思ってるんですが・・・
415 名前:デフォルトの名無しさん mailto:sage [2009/03/03(火) 01:00:31 ] >>414 それはねぇ。。。こまめに調べてるだけよ。ふふふ。。。lisperがあつまる日本語のチャット も情報源だよ。 うんQiはHaskellっぽいね。
416 名前:デフォルトの名無しさん mailto:sage [2009/03/03(火) 01:13:41 ] ttp://www.zazzle.com/lisp+gifts これがメリケンだ!?
417 名前:デフォルトの名無しさん mailto:sage [2009/03/03(火) 02:06:13 ] >>416 made with secret alien technologyのシャツが無いなんて信じられん
418 名前:デフォルトの名無しさん mailto:sage [2009/03/03(火) 03:44:57 ] schemer多いのはシンプルだからなんだろうか
419 名前:デフォルトの名無しさん mailto:sage [2009/03/03(火) 03:50:50 ] Qi ECLでは駄目なんだ・・・ 高速化って書いてるから期待したのに
420 名前:デフォルトの名無しさん mailto:sage [2009/03/03(火) 04:18:51 ] >>413 (use srfi-1) (define request '((hoge . 1) (fuga . 2) (piyo . 3))) (filter (lambda (x) (member (car x) '(hoge fuga))) request) とか
421 名前:デフォルトの名無しさん mailto:sage [2009/03/03(火) 08:26:08 ] >>414 Planet LispってRSSあるよ。
422 名前:デフォルトの名無しさん mailto:sage [2009/03/03(火) 09:50:56 ] >>421 おおっ、有り難うございます!! さっそくGoogle Readerに追加しました。
423 名前:デフォルトの名無しさん mailto:sage [2009/03/03(火) 12:07:00 ] >>420 3行目 srfi-26使って(gaucheならuse不要) (map (cut assoc <> request) '(hoge fuga))
424 名前:デフォルトの名無しさん mailto:sage [2009/03/03(火) 12:13:58 ] ハッシュテーブルに代入したら負けですねわかります
425 名前:デフォルトの名無しさん mailto:sage [2009/03/03(火) 13:20:03 ] (defvar *request* (make-hash-table)) (mapc #'(lambda (elem) (setf (gethash (car elem) *request*) (cdr elem))) '((hoge . 1) (fuga . 2) (piyo . 3) ...)) (let ((res (make-hash-table))) (mapc #'(lambda(key)(setf (gethash key res) (gethash key *request*))) '(hoge fuga piyo)) res) とくに簡潔ではないな。
426 名前:デフォルトの名無しさん mailto:sage [2009/03/03(火) 21:48:35 ] schemeで論理の勉強しようと思って (tflist n)で#tと#fの組み合わせを列挙してくれる関数を書こうとしたんだが 意外と難しい 最初mapで#t → (#t #f) (#t #t)という風に書こうとしたが これだとflattenが居るし、flattenを再帰で呼び出してみたら 全部平らになってしまって(#t #t #t #t #t #f #t #f #t ...)みたくなっちまった 誰かたすけて 動作イメージ (tflist 1) '(#t #f) or '((#t) (#f)) (tflist 2) '((#t #f) (#t #t) (#f #f) (#f #t)) (tflist 3) '((#t #t #t) (#t #t #f) (#t #f #t) (#t #f #f) (#f #t #t) (#f #t #f) (#f #f #t) (#f #f #f))
427 名前:デフォルトの名無しさん mailto:sage [2009/03/03(火) 22:07:54 ] (define (tflist n) (cond ((<= n 0) '()) ((= n 1) '((#t) (#f))) (else (let ((l (tflist (- n 1)))) (define (add-t l) (cons #t l)) (define (add-f l) (cons #f l)) (append (map add-t l) (map add-f l))))))
428 名前:デフォルトの名無しさん mailto:sage [2009/03/03(火) 22:08:27 ] (define (tflist n) (if (= n 1) (list (list #t) (list #f)) (append (map (lambda (x) (cons #t x)) (tflist (- n 1))) (map (lambda (x) (cons #f x)) (tflist (- n 1))))))
429 名前:デフォルトの名無しさん mailto:sage [2009/03/03(火) 23:19:22 ] >>427-428 おお、神よ。なるほど、(append (map..)(map..))の形になるのか もしよろしければもう1個 以下の例で最後の行は動くようになりませうか? ;guile/gaucheでどちらもエラー (define (mujunritu p) (not (and p (not p)))) (define (haityuritu p) (or p (not p))) (define (try1 f) (map f '(#t #f))) (try1 mujunritu) ;これがダメ。try1のfでλx(apply f x)やλx(eval(f x))も試してみたものの (map try1 '(mujunritu haityuritu)) OCamlでは動作 let mu p = not (p && (not p));; let hai p = p || (not p);; let tr f = List.map f [true;false];; List.map tr [mu;hai];;
430 名前:デフォルトの名無しさん mailto:sage [2009/03/03(火) 23:23:52 ] >>420 >>425 サンクス。今の自分じゃ全然理解できないけどorz
431 名前:デフォルトの名無しさん mailto:sage [2009/03/03(火) 23:25:52 ] 前きたquote判ってない人かね
432 名前:デフォルトの名無しさん mailto:sage [2009/03/03(火) 23:28:26 ] >>429 `(,mujunritu ,haityuritu)または(list mujunritu haityuritu) '(mujunritu haityuritu)との違いわかるかな
433 名前:前きたquote判ってない人 mailto:sage [2009/03/03(火) 23:55:18 ] >>431 別人です。あれからROMしかしてないですよ。
434 名前:デフォルトの名無しさん mailto:sage [2009/03/05(木) 00:52:37 ] >>432 Lisp属の初心者には、このあたりは難しすぎます 調べるのは本当に大変でしたが、何とか見つかりました ttp://www.ice.nuie.nagoya-u.ac.jp/~h003149b/lang/comparison.html これのことですよね? Common Lispでも、関数引数に関数実体も名前も両方使える。 (略) Schemeでは、関数しか受けとらない 確かに、CLでは両方動作することを確認 (defun muj (x) (not (and x (not x)))) (defun hai (y) (or y (not y))) (defun tr (f) (mapcar #'(lambda (z) (funcall f z)) (list t nil))) (mapcar #'tr (quote (hai muj))) (mapcar #'tr (list 'hai 'muj)) schemeの場合 (list mujunritu haityuritu)だと関数実態が返ってくるが (quote (mujunritu haityuritu))だと名前が返ってくる schemeにもCLのsymbol-functionみたいな関数があれば quoteのほうでも動作すると思い調べてみたものの 該当の関数が全然見つからない\(^o^)/ しかし、関数はおいといて、この考えでたぶん、大丈夫ですよね?
435 名前:デフォルトの名無しさん mailto:sage [2009/03/05(木) 01:20:53 ] >>434 つ「eval」
436 名前:デフォルトの名無しさん mailto:sage [2009/03/05(木) 02:00:08 ] quoteとevalは静的スコープな言語にふさわしくないとつくづく思う
437 名前:デフォルトの名無しさん mailto:sage [2009/03/05(木) 02:12:51 ] スコープと評価が?
438 名前:デフォルトの名無しさん mailto:sage [2009/03/05(木) 02:50:43 ] schemeのシンボルは文字列に毛の生えた特殊オブジェクトと思えばよろし。 プログラム内でそのシンボルに何が束縛されているかとは基本的に全く関係ない。
439 名前:デフォルトの名無しさん mailto:sage [2009/03/05(木) 07:25:51 ] R5RS の eval だと、その時点の環境での評価ができないから symbol-function の代わりにはできないし。
440 名前:デフォルトの名無しさん mailto:sage [2009/03/05(木) 12:06:53 ] あくまでも、定義中の名前はシンボルではなくただの変数の入れ物の 名前として使われる。また、プログラムを実行するには変数の位置を 表現できれば名前のような冗長な情報は必要ない。 よって名前は実行前のある時点でアドレスに変換されていると考えるべき。 evalやCLのsymbol-functionみたいな実行時にシンボルからその位置情報へ 変換する仕組みを作るとなると、処理系のインタプリタやコンパイラ相当を 必要時に起動するのと全く事になり、非常に馬鹿げたコストが掛かる。
441 名前:デフォルトの名無しさん mailto:sage [2009/03/05(木) 12:13:45 ] >>436 evalはともかくquoteはこの件と関係ない
442 名前:デフォルトの名無しさん mailto:sage [2009/03/05(木) 13:16:24 ] >>440 文章として突っ込みどころ多すぎw 内容的にも、後段のsymbol-functionについては、 特殊オペレータのfunctionと勘違いしているとしか思えない。 (defun foo () (print 'foo)) (flet ((foo () (print 'foolet))) (foo) (funcall (function foo)) (funcall (symbol-function 'foo)))) FOOLET FOOLET FOO
443 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 12:49:38 ] 急に流れが止まったから釣りかと思ったが やっと>>422 の言っていることがわかった symbol-functionってグローバルな関数定義しか参照しないんだな
444 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 13:48:24 ] schemeにシンボルが無いってことが少し分かってきた やっぱ Common Lisp 最強だな!
445 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 14:16:03 ] >>442 (let ((foo #'(lambda () (print 'fooval)))) (flet ((foo () (print 'foolet))) (foo) (funcall foo) (funcall 'foo) (funcall (function foo)) (funcall (symbol-function 'foo)))) FOOLET FOOVAL FOO FOOLET FOO Common Lispは、symbol-valueとsymbol-functionが シンボルセル内の別スロット。 funcallは>>440 の後段のような処理は、 functionに任せて、関数呼び出しに専念する仕様。 funcallの第一引数は関数か、シンボル。 シンボルの場合symbol-functionの結果を使う。
446 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 16:10:34 ] 何が真実なのかさっぱりわからんのでまとめてみたら カオスになった。つっこみ希望 ・evalは静的スコープにはふさわしくない 動的スコープなら1つしか環境を考えなくて良いためと想像 ・schemeのシンボルは文字列に毛の生えた特殊オブジェクト ・呼び出し (hoge)はレキシカルな環境での関数呼び出し(関数セル) (funcall hoge)はレキシカルな環境での関数呼び出し(値セル) (funcall 'hoge)は↓と同様。symbol-functionを使うため (funcall (symbol-function 'hoge))はグローバルに定義されたシンボルの関数呼び出し(関数セル) (funcall (function hoge))はレキシカルな環境での関数呼び出し(関数セル) レキシカル環境で同名の変数がある場合に グローバルなシンボルのsymbol-value(値セル)を参照する方法はなさそう >>442 氏の440へのコメント ここのあたりが一番わからない symbol-functionは(トップレベル変数が動的スコープのため) 動的スコープを参照出来る →functionのようにレキシカルスコープの変数を考慮しなくてよい →symbol-functionに関してはevalもそんなにコストかからんぜ、ってこと?
447 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 17:43:08 ] >>446 442,445はCommon Lispのコードっていうのは分かってる? > ・evalは静的スコープにはふさわしくない これは俺も何が言いたいのかさっぱりわからんというか、 はっきり言って間違い。反証はScheme。
448 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 19:15:47 ] > evalは静的スコープにはふさわしくない はLisp1.5世代の人の意見なのかな。
449 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 20:28:14 ] 現在のevalはLispらしさを演出するためだけの存在だからな
450 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 21:07:27 ] evalを使うってのは、速度的にも不利になるし、普通にlispでプログラムを組む人は 避けるところだと思うよ。避けないとすれば腕の悪い人という印象しかないな。少な くとも他の方法を探すだろう。
451 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 10:41:58 ] 大抵マクロでおkだからな
452 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 15:39:34 ] Qiは データ [] program () のカッコをわけたらlispの意味ないとは思わなかったんだろうか
453 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 16:21:06 ] >>451 マクロでできることはevalでもできるみたいな言い方だな 第一印象はそんなものだろうけど それをいつまでも引きずっていていいのかな?
454 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 16:40:18 ] 451じゃないけど違うの?
455 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 16:49:10 ] Lispのマクロ機能はevalで実装されていると思うのだが・・・
456 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 17:11:36 ] codepad.org/kiclBi61
457 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 18:36:31 ] (display (eval (let1 'y 2 `(+ ,x y)))) これで動くよ 何が言いたいのかわからんが
458 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 19:00:31 ] 言いたいことは >>443 >symbol-functionってグローバルな関数定義しか参照しないんだな と同じことがevalにも言えるということ。 evalは外側のローカル変数xの定義を参照できないから >>457 では、事前にxのところを値で置き換えたものをevalに渡している。
459 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 19:58:27 ] つーかevalは他のローカル変数のことなんか知らんから。 関数の引数として渡されたコンテクストで評価するしかない。 それを知らせる手段として(current-environment)みたいなものが 処理系にあればやりたいことは実現できるんじゃないか。
460 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 20:13:48 ] Schemeのevalの話? Common Lispでは、 (defvar x 1) (print (eval '(+ x x))) 2 (let ((x 10)) (print (eval '(+ x x)))) 20 Schemeのevalは渡された環境への変更に制限もあるよね。 ;; R5RSとR6RSで少し違う
461 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 21:10:14 ] (let ((x 10)) (print (eval '(+ x x)))) *** - EVAL: variable X has no value
462 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 21:15:34 ] >>460 が一見意図通り動いてるように見えるのは 最初のdefvarでxをスペシャル変数にしてるから。 schemeで同じことをする場合はfluid-letを使う。 (define x 1) (display (eval '(+ x x))) 2 (fluid-let ((x 10)) (display (eval '(+ x x)))) 20 x 1
463 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 08:01:39 ] mzschemeで、CGIをPOSTメソッドで使いたいのですが(クライアント側)、うまくいきません。 たとえば、 en.wikipedia.org/w/api.php?action=query&meta=siteinfo&siprop=namespaces と同じことをしたいのですが(これはGETメソッド)、 (let* ((url (string->url "en.wikipedia.org/w/api.php ")) (post (string->bytes/utf-8 "action=query&meta=siteinfo&siprop=namespaces")) (port (post-pure-port url post)) (xml (read-string 1000 port)) ) xml) でいけると思ったのですが、エラーメッセージが帰ってきます。 どこがまずいのでしょうか?
464 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 08:57:46 ] コンビネータパーサを作ったから せっかくなのでR5RSかR6RS準拠のパーサを書いてみようと思ったんだが 全体のBNFのリストってどこかにまとまってる? 仕様書をざっと見した感じでは、 ばらばらにちょっとずつBNFが載っているように感じるんだが 仕様書ってのはこんな感じのもん?
465 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 09:02:30 ] Schemeの仕様書はこんな感じのもん。 まぁLispでBNFもくそもないが。
466 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 17:51:26 ] Lisp系言語の場合、構文のフォーマルな定義がBNFとはちょっと合わない。書けなくはないけれど。 構文の定義はこんな感じのレイヤになってる。 (1)まずtokenに分解 (R6RSの用語ではlexical syntax) (2)S式として読み込み (R6RSの用語ではdatum syntax) (3)S式の中の特定の構造をプログラムの構文として認識 (R6RSの用語ではprogram syntax) このうち、(2)の出力は既に抽象的な木構造のデータなんで、(3)のレベルの構文定義っていうのは 木構造に対する定義になる。もちろん木構造にマッチする文法を書けばいいんだけど。 プログラムの字面に対するBNFとは違ってくるな。 例えば、"(if x y z)" と"(if . (x . (y . (z))))" は字面では違うけどdatum syntaxとして 読まれた後は全く同じ木構造になる。program syntaxはその木構造だけを見る。
467 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 18:22:02 ] コンビネタ・パーザだとレキサも一体で書くスタイルが多い。 >>466 で言うと(1)と(2)が一体。 ただ演算子多重定義出来る言語じゃないと、 見た目がシンプルにならない。
468 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 20:48:06 ] >>467 それは知ってるんだが、要点はそこじゃなくて(2)と(3)が分離してるってとこ。仕様からして。 >>464 は言語構文のBNF定義がまとまってないってことに違和感を覚えたわけだろ。 (1)-(3)までまとめて書くことはできると思うがきれいになるかな?
469 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 21:39:11 ] (3)は、R5RSとR6RSでちょっと違うし、 内部表現的には変える必要ない上に、 read/evalの分離構造ともマッチしているから、 あえて混ぜる必要はないと思う。 >>449 そういえばEuLispにはevalがなかったな。 おもしろい試みだったけどあっさりと廃れたね。 YooTooはまだ更新されているみたいだけど。 R6RSのmoduleも一部影響受けてるね。
470 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 06:01:07 ] >>463 ですが、自己解決しました。 このコードで動きます。 (let* ((url (string->url "en.wikipedia.org/w/api.php ")) (post (string->bytes/utf-8 "action=query&meta=siteinfo&siprop=namespaces&format=xml")) (header '("User-Agent: MzScheme" "Accept: application/xml" "Accept-Encoding: deflate" "Accept-Charset: utf-8" "Content-Type: application/x-www-form-urlencoded")) (port (post-pure-port url post header)) (xml (read-string 1000 port))) xml) すくなくともen.wikipedia.orgのサーバーは、Content-Typeを指定しないとCGIだと認識してくれないようです。
471 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 23:41:18 ] >>465-469 ありがとう。こういうもんか 特に466の説明はとてもわかりやすい。 R5RSのほうはBNFついてそうだから こっちやってみよかな しかし、PDFって扱いにくいわ <hoge>って表記をテキストでコピペするとhhogeiになるし <で検索できんから不便
472 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 05:03:58 ] ファイルの basenameを取得する関数ってありますか? "foo.txt" -> "foo" "foo.bar.txt -> "foo.bar" といった風に取得したいのですが 自分で書くなら 一文字ずつ後ろから文字比較して . が来るまで探して その部分を削除。とするんですが もし既にあるなら書くのも悲しいので どなたかご存知ありませんか?
473 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 05:37:46 ] (pregexp-replace "(.*)\\.[^.]+" "foo.bar.txt" "\\1")
474 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 05:49:52 ] pathname-name www.lispworks.com/documentation/HyperSpec/Body/f_pn_hos.htm
475 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 06:47:07 ] >>473-474 レスありがとうございます。 環境を書いていませんでした申し訳ありません。 R5RSで行うにはどうすれば良いでしょうか?
476 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 07:39:05 ] R5RSにそんな高レベルな標準関数ないと思う
477 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 08:52:04 ] R5RSで動く出来合いのライブラリが欲しいってことかね
478 名前:472 mailto:sage [2009/03/11(水) 09:17:26 ] >>476-477 ありませんか…。 仕方がないので自分で書いてみました。 もうちょっとすっきり書けないもんかと思うんですが 今の自分にはこれが限界でした。 (define (chop str) (substring str 0 (- (string-length str) 1))) (define (basename str) (if (string? (basename-if-thereis str)) (basename-if-thereis str) str)) (define (basename-if-thereis str) (cond ((= (string-length str) 0) #f) ((eqv? (string-ref str (- (string-length str) 1)) #\.) (chop str)) (#t (basename-if-thereis (chop str)))))
479 名前:デフォルトの名無しさん [2009/03/11(水) 11:47:54 ] >>472 SRFI 13 使えばいいんじゃね (let ((i (string-index-right s #¥.))) (if i (substring s 0 i) s))
480 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 14:19:19 ] basenameの本質って拡張子を省くことじゃなくてディレクトリパスの削除じゃないのかな? (my-basename "foo.txt") => "foo.txt" (my-basename "foo.txt" #t) => "foo" (my-basename "/foo/bar.txt") => "bar.txt" みたいな 472の例はgaucheではpath-sans-extensionという手続きが割り当てられている
481 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 15:07:51 ] クラススロットを辞書のように自由に登録したいのですが、 何かいい方法はありませんか? 例えば、 (define-class <test> () (())) というクラスから (define foo (make <test> :xxx 0 :yyy 10)) (ref foo 'xxx) -> 0 (ref foo 'yyy) -> 10 を可能にしたいのです。
482 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 16:09:20 ] >>481 処理系は?
483 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 16:16:34 ] >>482 gaucheです
484 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 18:23:09 ] 簡単にやるならこんな感じかな (use gauche.sequence) (use util.list) (define-class <test> () (%slots)) (define-method initialize ((self <test>) initargs) (next-method) (slot-set! self '%slots (map (lambda (x) (cons (string->symbol (keyword->string (car x))) (cadr x))) (slices initargs 2)))) (define-method ref ((self <test>) slot) (assq-ref (slot-ref self '%slots) slot)) (define-method (setter ref) ((self <test>) slot val) (assq-set! (slot-ref self '%slots) slot val)) ほんとうのスロットのようにふるまわせたいならMOP使わないとだめかも。
485 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 19:37:09 ] >>484 それだとクラス内に辞書を確保して、 setterとgetterをスロット操作のようにエミュレートするってことですね。 なるほど〜 ありがとうございます。 ところで、Gauche本やリファレンスを見てもMOPの使い方がいまいち分からないのですが、 MOPを使うとどのようなソースになるのでしょうか? よかったら教えてください。 よろしくお願いします。
486 名前:472 mailto:sage [2009/03/11(水) 22:12:20 ] >>479 こういうライブラリがあるんですね、紹介ありがとうございます。 ただ、これだけのためにライブラリ入れるのも何なんで もう少し難しい文字列処理が必要になったら入れることにします。 >>480 そうですね、確かに言われてみれば。 名前は変えることにします。
487 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 01:34:42 ] コンビネータの勉強がしたいんですが (expand S)とすると (fun x (fun y (fun z ((x z) (y z))))) が返ってくるような関数orマクロを作ろうとしたら 実質インタプリタを作るようなもんでしょうか? もし楽な方法(特定の処理系の拡張機能etc)等があるのであれば知りたいです
488 名前:デフォルトの名無しさん [2009/03/12(木) 08:19:24 ] lispな方はバージョン管理は何を使ってますか? git svn cvs
489 名前:デフォルトの名無しさん [2009/03/12(木) 08:23:19 ] >>488 darcs
490 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 08:28:28 ] mercurial, git
491 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 09:14:18 ] Bazaar
492 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 11:02:23 ] 質問します。 組合せ問題、経路問題などの、記号処理問題をリストを使って解決するのに 相応しい言語を教えてください。 環境はできるだけ特定のOSに限定されない方が結構です。 グラフ表示は別の専門家が扱うのでロジック部分のみです。
493 名前:492 mailto:sage [2009/03/12(木) 11:15:29 ] すみません。誤爆です。"初心者のためのプログラミング言語ガイド Part14"に書き込む つもりでした。直前にこのスレを確認していたのでpasteされたURLがここになって いました。 このスレの方々は それはSchemeだ! っておしゃいますよねw
494 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 11:16:25 ] cl-graph boost::graph
495 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 11:54:50 ] >>492 「リストを使って解決するのに相応しい」って、その質問がすでにLISPを想定しているとしか。その名も、LISt Processer。 昔は人工知能を書くために使われていたので、ターゲット分野的にもぴったり。 LISPをはずすなら、Haskellかなぁ。 ただ、Haskellはマルチバイト文字の処理周りが痛いらしい。
496 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 12:03:13 ] >>485 Gauche特有の話だし、wilikiででも質問してみたら?
497 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 16:25:52 ] ものまね鳥をまねる、14000円つけてるなw 今図書館で借りっぱなしで催促の電話が何度もかかってる。 忙しくて読めなかったんです。 この場を借りて予約入れてる人に謝るよ。
498 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 16:33:29 ] lispのラーメンタイマーだよ (require :pythononlisp) (py::py "import noodletimer;noodletimer.noodletimer")
499 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 16:43:28 ] QiはQiからlispよぶのは簡単なのに Qiをdumpしてlispから呼ばせるにはコードいじれって書いてある 自動でできないものなんだろうか
500 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 03:25:49 ] lispは、カッコばかりでみづらいとよく言われるけど これは、慣れだね 生産効率性については、まだよくわからないけど
501 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 05:23:24 ] 入門者レベルなんですが、lambdaを使わないと書けないんでしょうか 練習問題 1 次の関数を再帰を使って書いてください。 3. リスト (ls) から要素 (x) を取り除いたリストを返す関数。 ; 3 模範解答 (define (remove x ls) (if (null? ls) '() (let ((h (car ls))) ((if (eqv? x h) (lambda (y) y) (lambda (y) (cons h y))) (remove x (cdr ls))))))
502 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 06:56:30 ] >>501 (define (remove x ls) (cond ((eq? x (car ls)) (cdr ls)) (else (cons (car ls) (remove x (cdr ls))))))
503 名前:502 mailto:sage [2009/03/14(土) 08:50:42 ] Σ(゚д゚) ls の中に x が二回以上出る場合はこうだ。 (define (remove x ls) (cond ((null? ls) '()) ((eq? x (car ls)) (remove x (cdr ls))) (else (cons (car ls) (remove x (cdr ls))))))
504 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 08:58:47 ] >>502 突っ込もうと思っていました 最初のは、(remove 5 '(1 2 3 2))でもコケますね ヒントで実装までできました ありがとうございました
505 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 19:18:21 ] これ読んでいるとlispのほうが良さそうにみえるね www.unixuser.org/~euske/doc/python/python-lisp-j.html
506 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 20:54:29 ] Schemeでスタックを書こうとした場合 スタックのデータはグローバル変数に置くのが普通ですか? 出来たらクロージャとかに閉じ込めたいのですが 引数を2個にして1個目でpush/pop判断だとpopの時は引数が一つ無駄だし 個別にクロージャを使うと環境が別々になるし。 Gaucheのオブジェクト指向拡張とかだと綺麗にかけるんでしょうかね 他に思いつくのは、モジュールを作って そこにスタック本体のデータを置くとかですが どれが良いと思いますか 環境はGauche0.8.14です
507 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 21:08:09 ] どれがって、consセルで作れば簡単じゃないかと
508 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 21:21:08 ] (define top car) (define pop cdr) (define push cons) じゃまずいですか?
509 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 21:40:07 ] >>505 例外処理の項目の数値が未だに信じられない
510 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 21:52:51 ] >>508 スタックをリストとして直接触らせたくないってことなんじゃね? まぁ、Gauche の OO 関連はそんなに効率が良くないので、 クロージャに閉じ込める方がまだ無駄は少いかもね。
511 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 22:01:34 ] >>509 > まぁ、Gauche の OO 関連はそんなに効率が良くないので、 > クロージャに閉じ込める方がまだ無駄は少いかもね。 くわしく なにと比べて? 効率って生産効率?
512 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 22:06:56 ] >>506-508 想像だけど、破壊的更新をしたいじゃないの? オブジェト志向なら、 a = stack.pop() stack.push(b) … とか書くわけジャン。
513 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 22:14:32 ] >>511 速度とかメモリ効率とか。 メソッドのディスパッチも基本的には実行時にしか出来ないし。 どうでもいいけど、アンカ間違ってるぞ。 速度的には検証していないけど、 なんとなく>>506 がイメージしているものを想像して書いてみた。 Gauche には依存していないつもり。 (define (make-stack) (let ((stack (cons '() '()))) (lambda(proc) (proc stack)))) (define (push stack-obj elem) (stack-obj (lambda(stack) (set-cdr! stack (cons (car stack) (cdr stack))) (set-car! stack elem)))) (define (pop stack-obj) (stack-obj (lambda(stack) (if (null? (car stack)) '() (let ((elem (car stack))) (set-car! stack (cadr stack)) (set-cdr! stack (cddr stack)) elem)))))
514 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 22:23:34 ] スタックはconsで実装するつもりだったし、 なんか話がかみ合わないと思ったら・・そういうことか、理解しました 自分がやりたかったのは510氏のいうような意味でして ちょっと調べてたら可変長引数なる便利なものがあるってわかったので これで実装出来ました。もう少し処理を追加したら自分の目的には使えそうな感じ (define (stack) (let1 val '() (lambda a (let-optionals* a ((b 'none)(c '())) (cond ((eq? b 'none) val) ((eq? b 'top) (if (eq? val '()) '() (car val))) ((eq? b 'push) (set! val (cons c val)) c) ((eq? b 'pop) (if (eq? val '()) '() (let1 r (car val) (set! val (cdr val)) r)))))))) (define a (stack)) (a 'push 1) (a 'push 2) (a 'push) (a) (a 'pop) (a)
515 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 22:43:02 ] >>513 (規制されてて書き込みのタイミングが悪かったのですが・・) そういえば、Schemeのライブラリは、こういう形のほうが多いですね 参考にさせてもらいます ありがとうございました
516 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 23:03:47 ] 最近のスタックインターフェースは、 top, pop, pushと三つに分けるのが主流だよ。 もはやイディオムになっているといっていい。
517 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 00:08:39 ] ;; クロージャに閉じ込める (define (with-stack f) (let ((stack '())) (f ;; push (lambda (obj) (set! stack (cons obj stack))) ;; pop (lambda () (if (null? stack) '() (let ((obj (car stack))) (set! stack (cdr stack)) obj))) ;; top (lambda () (if (null? stack) '() (car stack)))))) (with-stack (lambda (push pop top) (push 1) (push 2) (push 3) (write (top)) (write (pop)) (write (top)) (write (pop)) (write (pop)) (write (pop))))
518 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 00:10:58 ] topってなんや?
519 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 00:11:52 ] 解決 あとemptyっていうのも重要っぽいね
520 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 02:34:25 ] []も使うようにしたほうがいいの? 処理系によっては [] を () と同じように使えて、多少見かけを区別することができます: (let ([x (calculate-x a b c)] [y (calculate-y d e f)]) body ...) (cond [(predicate x) (do-something) (do-something2)] [(predicate y) (do-another-thing)] [else (do-whatever)]) 括弧の意味の多重化 (中段) practical-scheme.net/wiliki/wiliki.cgi?Lisp%3aS%E5%BC%8F%E3%81%AE%E7%90%86%E7%94%B1
521 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 03:12:22 ] どうせそんなのはppしたら消えてしまうでしょ。 意味がある試みとは思えない。
522 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 03:32:55 ] つーかカッコが何種類も入り乱れるのは激しくウザい
523 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 04:59:08 ] 世間でC言語みたいなものが好まれるのは、 演算子を含む式と文とのバランスが良く、 メリハリが付くからだと思う。 LISPは書式が関数も式も文も全く同じ規則で さらにそれを括る括弧に極端に縛られる。 C言語でも関数呼び出しだけで書いていけば 同じ印象になるが、C言語では関数のネストなんて 書こうと思わなければほとんどする必要がない。 要するに括弧の形を変えたところであまり効果はない。 S式ベースでうだうだ考えるよりは、括弧に縛られない 都合の良い構文フロントエンドを作った方がマシである。
524 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 05:20:32 ] 俺は好きでよく使っているけどなぁ。 処理系によっては()[]{}の3種類が使えるから、数学の式を書くときみたいな感覚で。
525 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 05:34:48 ] ・よく言われる演算子の有無 前置記法である事と関係する。 a.b.cは (ref(ref a 'b)'c) 1 2 3 のような書き方になる。 見ての通り1を脳内スタックに積んで2を読み、 1を降ろして3と結合する、という思考を要求する。 また、aとb,cは同一に扱えない。 ((ref a b c)とは書けず、何かしら歪になる) 演算子があれば a.b.c 1 2 3 や a().b().c() 1 2 3 どちらも1から3まで、左から右へと目を動かすだけで良い。 修正が発生しても一箇所で済む。 これはS式というより、前置記法では解決できない問題と認識している。
526 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 05:46:04 ] 前置記法を排除すればS式でも(a -> b -> c)と書ける。 ここで、aをマクロ的に加工して実装してしまう事も考えられる。 が、それが現実的ではない事も判っている。 自分で演算子を作り、管理するのと同じ事になる。
527 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 05:58:26 ] また>>526 の(a -> b -> c)のように、 S式内で独自言語を構築する場合、 独自言語の構文としての括弧もあるので、 S式のくくりの括弧がどうしても邪魔に見える。 ここまでやるならもうS式である意味がない。 a->b->cと書きたいならそのまま書けばいい。
528 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 06:25:55 ] だから、どうせやるなら>>523 に書いた通り、必要時にS式も扱えるような ちゃんぽん言語でもLISPで作ったらどうかというわけ。 不毛な縛りの中で何かやるよりはよっぽど健全ではないかと思う。 S式はデータとしてならともかく、コードとして出てくる必然性はあまりない。 >>520 とどっちが読みやすいだろうか? let x=calculate-x(a, b, c), y=calculate-y(d, e, f) in body ...; if (predicate(x)) { do-something(); do-something2(); } else if (predicate(y)) { do-another-thing(); } else { do-whatever(); }
529 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 06:54:38 ] 入門者なんですが、shchemeでS式以外の書き方の標準構文ってあるんでしょうか? 人間のパターン認知力なのか、人間の適応力のすごさ、慣れなのか、よくわからないけど 今のままのほうがいい気がする 基本レベルの正規表現が使える人で、schemeを100時間触ってみて、それで真っ当な意見を聞きたいかも みんな、「このまままでいいんじゃねえ?」って言いそう 採用する理由になった論文の疑似コードもみてみたいところだが
530 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 07:12:55 ] >>525 refが関数なら、(define ref* (lambda x (fold ref (car x) (cdr x))) で (ref* a 'b 'c) って書けるんじゃない。 つか一般に二項演算子があるならfoldしてやりゃ不定長でも扱えるでしょ。 マクロならマクロでくるんでやればいいだろうし。 まあquoteは必要だけど、それは別の話だよね。
531 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 07:43:20 ] >>529 昔の Lisp の論文とかには M 式ってあったね。 en.wikipedia.org/wiki/M-expression Scheme の方だと SRFI 49 で I 式っていうのが提案されてる。 srfi.schemers.org/srfi-49/srfi-49.html 正規表現云々は知らないが、どっちもあまり流行ってない。
532 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 10:10:46 ] そういえば、syntax が安定するまでは yacc を使って試行錯誤して 安定したら手書きの parser を使うという話を聞いたことがある。 lisper は逆に yacc より更に柔軟な方向に進もうとするのか。
533 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 10:31:03 ] リードマクロがあるからね。
534 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 11:54:13 ] >>528 マクロを忘れてるぜ。 コードがS式だからマクロ変換子は単なるリスト操作をすれば済むんだろう。 Scheme のマクロは単なるリスト操作じゃないけど、S式は大前提だ。 リーダーマクロにしたところで、内部的にはやっぱりS式だしな。
535 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 12:13:45 ] リードマクロってキャラクタストリームベースじゃなかったっけ?
536 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 21:58:23 ] ; M-x run-scheme で下のコードをC-x C-eすると、最後に添付するエラーになってしまいます (define (foo x) (if (= x 0) '() (cond ((= (modulo x 15) 0) (cons "FizzBuzz" (foo (- x 1)))) ((= (modulo x 5) 0) (cons "Buzz" (foo (- x 1)))) ((= (modulo x 3) 0) (cons "Fizz" (foo (- x 1)))) (else (cons x (foo (- x 1))))))) 環境 "GNU Emacs 22.3.1 (x86_64-unknown-linux-gnu) of 2009-03-10 on localhost.localdomain" guile> "1.8.0" ちなみにon emacsでloadすると、うまくいきます。 guile> (load "fizzbuzz.scm") guile> (foo 21) ("Fizz" "Buzz" 19 "Fizz" 17 16 "FizzBuzz" 14 13 "Fizz" 11 "Buzz" "Fizz" 8 7 "Fizz" "Buzz" 4 "Fizz" 2 1) また、gosh on emacsだと、こうなります gosh> (32 31 #0="FizzBuzz" 29 28 #1="Fizz" 26 #2="Buzz" #1# 23 22 #1# #2# 19 #1# 17 16 #0# 14 13 #1# 11 #2# #1# 8 7 #1# #2# 4 #1# 2 1) OS再起動してもダメでした エラー(長いので、一部略) guile> ... ... Display all 1922 possibilities? (y or n) ... Display all 1922 possibilities? (y or n) $abs EISCONN ERROR: Unbound variable: s ABORT: (unbound-variable) "Fizz"
537 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 21:58:57 ] Backtrace: In current input: 307: 0* [foo 3] 304: 1 (if (= x 0) (quote ()) ...) <unnamed port>:304:1: In procedure memoization in expression (if (= x 0) (quote ()) ...): <unnamed port>:304:1: In line 303: Missing or extra expression in (if (= x 0) (quote ()) d ((= (modulo x 15) 0) (cons "FizzBuzz" (foo (- x 1)))) s "Buzz" (foo (- x 1))). ABORT: (syntax-error) ERROR: In procedure scm_lreadr: ERROR: #<unknown port>:307:24: unexpected ")" ABORT: (read-error) ERROR: In procedure scm_lreadr: ERROR: #<unknown port>:307:25: unexpected ")" ABORT: (read-error) guile> Display all 1922 possibilities? (y or n) $abs %app %cond-expand-features %cond-expand-table %get-pre-modules-obarray %guile-build-info ERROR: Unbound variable: s ABORT: (unbound-variable) 4 Backtrace: In current input: 308: 0* [foo 3]
538 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 21:59:36 ] <unnamed port>:304:1: In procedure memoization in expression (if (= x 0) (quote ()) ...): <unnamed port>:304:1: In line 303: Missing or extra expression in (if (= x 0) (quote ()) d ((= (modulo x 15) 0) (cons "FizzBuzz" (foo (- x 1)))) s "Buzz" (foo (- x 1))). ABORT: (syntax-error) ERROR: In procedure scm_lreadr: ERROR: #<unknown port>:308:19: unexpected ")" ABORT: (read-error) ERROR: In procedure scm_lreadr: ERROR: #<unknown port>:308:20: unexpected ")" ABORT: (read-error) ERROR: In procedure scm_lreadr: ERROR: #<unknown port>:308:21: unexpected ")" ABORT: (read-error) ERROR: In procedure scm_lreadr: ERROR: #<unknown port>:308:22: unexpected ")" ABORT: (read-error) ERROR: In procedure scm_lreadr: ERROR: #<unknown port>:308:23: unexpected ")" ABORT: (read-error) guile>
539 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 22:58:47 ] (print (foo 21)) or (write (foo 21)) トップレベルプリンタが同一オブジェクトを複数回出力しないだけの問題では?
540 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 02:04:38 ] >>539 どういう意味ですか? 自分なりに解釈して、やってみたけど、ダメでした
541 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 04:02:54 ] >>540 >>539 の言っているのは gosh の出力についてだね。 guile のエラーについては式が guile にちゃんと渡されてない感じがする。 プロンプトが複数回表示されてるあたり、 式が複数に分割されて渡されている形になってそうなんだけど。 gosh だと C-x C-e でちゃんと動いてるのかな。
542 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 06:02:16 ] アドバイスをきっかけに解決しました タブによるインデント構造をつくるとこのエラーになるみたいです スペースに置換してみたら、通りました おとといまでは、普通に使えていた気がしたので、謎です 特別な設定をしたとしたら、メニューバーのschme欄をちょっと触ったときなのかな 触ったあとに特別不都合は、なかった気がしたけど >>541 > >>539 の言っているのは gosh の出力についてだね。 把握しました > gosh だと C-x C-e でちゃんと動いてるのかな。 もちろん、そうです ドキュメント関係とデバッグ関係が整備されていそうなguileで行きたいんですよね 言語に慣れていないレベルなので、文字列処理関係は、まだ先っぽいので 気に掛けてくださったみなさま、お世話になりました
543 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 07:18:20 ] ああそっちの問題か readlineが悪さをしてる予感 emacsで使うときはactivate-readlineを無効にしたらどうでしょう
544 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 09:56:12 ] >>543 本当だ cat ~/.guile (use-modules (ice-9 readline)) (activate-readline) の設定を外したら、tabインデントでもC-x C-eが通るようになりました また、安直にcat ~/.gosh (use-modules (ice-9 readline)) (activate-readline) としていたんですが、これって効いていないんですね goshに関しては、info関連をまだ目を通していないので、あれなんですけど 構文を多少読めるようになったので、readline.scmとguile関連のinfoを眺めてみることにします
545 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 16:32:24 ] gaucheのインタラクティブモードで読み込まれるスクリプトは.gaucherc。 それとice-9モジュールはguileの物であってgaucheにはない。 .guileから外すのは(activate-readline)だけでいいと思う。 gaucheを使うのならttp://practical-scheme.net/gauche/man/gauche-refj_toc.htmlを読む事を勧めます。 guileのgaucheに対する利点:多くのOSでportやpackageが用意されている。リードマクロがある。親方GNU。 gaucheのguileに対する利点:速い。日本語のドキュメントが多い。マルチバイト文字がサポートされている。
546 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 22:37:55 ] (activate-readline)を外すのが嫌だったので、とりあえず関数に割り当ててみました scheme, lisp関連の設定って、みなさんは、どういうふつうにされているんでしょうか? 不都合がなければ、晒してほしい・・・ cat ~/.guile ; first setting (use-modules (ice-9 readline)) (define (a) (activate-readline)) ; adding (use-modules (ice-9 popen)) (use-modules (ice-9 rdelim)) (define date (read-line (open-input-pipe "date -R"))) (define pwd (read-line (open-input-pipe "pwd"))) (define echo-home (read-line (open-input-pipe "echo $PATH")))
547 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 22:43:57 ] activate-readlineはemacsからrun-schemeで使うときは不要。っていうか邪魔。 (or (string=? "dumb" (getenv "TERM")) (activate-readline)) とか書けばいいんじゃないかな (run-schemeのときは環境変数TERMがdumbに設定されるから)
548 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 22:59:01 ] ああそれからactivate-readlineは起動後の任意の段階で評価できるから .guileに書かないでおいて、シェルから直にguileを起動しただけ 手動で評価してもいい。 $ guile guile> (activate-readline) guile> scheme、lisp関連の設定といっても自分は.emacsくらいですね。 ttp://karetta.jp/book-node/gauche-hacks/004682などを参考にするといいと思います。
549 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 23:11:27 ] >>543 なるほど、readline が \t を食っちゃうのか。 知らないと意外とはまりそうだな。覚えておこう。
550 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 23:26:15 ] 逆に言えばreadlineでシンボル補完が効きます
551 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 00:01:45 ] ドキュメントとデバッグ環境でGuileを選ぶってのも珍しい気がする。 そういう場合はPLTとかに行きそうなもんだけど。
552 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 00:26:21 ] >>547 コンソール時 echo $TERM linux gnome-terminal時 echo $TERM xterm emacs時 echo $TERM emacs なのに、なぜemacs時だけ(activate-readline)が実行されないの? >>551 scheme処女なもんで4つのinfoがあるguileなのかなと思って PLTは、存じませんでした 候補として考えたのは、Gauche, guile(, tiny scheme)の2つ(3つ)ですね ちょっとした疑問なんですが、guileにあるhelp関数ってGaucheにもあるんでしょうか? あと日本人のguile率って少ないんでしょうか? SchemeでぐぐるとGaucheがいっぱいひっかかりますね
553 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 00:47:53 ] Gaucheは高機能な上、日本人のShiro Kawaiさん作なので日本語のドキュメントがたくさんある。 guileはGNU標準でポータビリティは高いんだけど動作が遅くてスタックが(標準では)少ない。 入門用ならばR5RS規格に最も厳格にマッチしている上にguile以上のポータビリティがあるScheme48もお勧め。 自分はGauche>>guile>Scheme48の順に使ってます。 マクロの種類で言えば Gauche:syntax-rulesマクロ、伝統的マクロ guile:syntax-rulesマクロ、syntax-caseマクロ、伝統的マクロ、リードマクロ Scheme48:syntax-rulesマクロ、明示的改名マクロ なのでguileが最も充実してますが。
554 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 04:34:29 ] >>552 gaucheにはhelp関数は無いけどinfo関数というのがある。 ただ、表示されるのが「その関数を含むinfoの1ページ」なのでちょっと面倒。 emacsから使ってるなら、カーソルのある関数のinfoエントリを一発で*info*バッファに 表示するelispが昔MLに流れたことがあった気がする。
555 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 04:57:19 ] describeもaproposも使えるけど なんだかんだでhyperspecとslimeが使いやすいやね
556 名前:552 mailto:sage [2009/03/17(火) 05:23:33 ] 自己解決しました コピペまんまだと、activate-readlineきいていました "dumb"のところを"emacs"に変えればいいわけですね 当たり前と言えば、当たり前なんだけど 日本語WikipediaのSchemeの項目の最下部の外部リンクの「関数プログラミングは、なぜ必要か、うんぬん」の文章ってわけわからないっすね あの疑似コード、わかりにくいw プログラミングしていて、なんとなく関数言語がいうモジュール化がわかってきたかも >>553 今、気づいたんですが、日本語WikipediaにSchemeの処理系の項目は、Gauche以外書かれていないんですね そういう意味でもGaucheに流れる人が多いのかな >>554 info関数なんてあるんですね Gaucheのインストール失敗したのか、よくわかりませんが、info閲覧できないんですよね まだ必要に迫られていないので、ちゃんと調べていませんが >emacsから使ってるなら、カーソルのある関数のinfoエントリを一発で*info*バッファに >表示するelispが昔MLに流れたことがあった気がする。 便利そうですね >>555 slimeって聞きますね もうちょっとしたら、導入してみます
557 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 08:05:53 ] あれ、run-schemeで起動したguileで guile> (getenv "TERM") "dumb" ってなりませんでしたか? guile> (getenv "TERM") "emacs" なら"dumb"を"emacs"でいいですけど…
558 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 09:22:34 ] >>557 shellモードもrun-schemeモードも"emacs"と返りますね infoドキュメントでがんばって、勉強しているんですが けっこう大変ですね 基本的なlet, set, lambda関連の記述の仕方は、わかるんですが ちょっと複雑になると理解しにくい・・・
559 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 10:39:23 ] >SchemeでぐぐるとGaucheがいっぱいひっかかりますね 絶望した!横文字をウェブ全体から検索した結果に絶望した!
560 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 13:28:37 ] infoで勉強する心意気は結構ですけど 先ずは>>216 あたりのウェブページで勉強するほうが楽かもしれません。 わからない所はこことかに具体的にドシドシ書きこむと さらに後に続く人の為にもなるでしょう。
561 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 19:17:54 ] >>560 > infoで勉強する心意気は結構ですけど > 先ずは>>216 あたりのウェブページで勉強するほうが楽かもしれません。 infoで勉強するのが今回の目的だったりするんですよね あとguileは、なにができるだ(どういう機能があるの?)というのも速く知りたいから、 とりあえず、なぞっているのもあります もちろん、Schemeの学習階段的には、日本語の入門サイトは有用ですね 英語圏の人は、infoだけで事足りるのか、プログラミング経験度を前提しているのかとか
562 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 22:17:23 ] >infoだけで事足りるのか そんな完璧な文書があると思うか? あるわけねーだろ 完璧を目指すのはいいが少しずつ地道に改善していくしかない ちなみに、アジャイルとかなんとか言われるようになる以前は 一発で完璧なものが作れると思ってる奴がたくさんいたとかいないとか
563 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 02:46:26 ] >>562 完璧な文書だとは、思わないけど 十分な文書だと思うよ
564 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 12:35:17 ] common lispの情報探そうとするとhatenaなどのblogにいきあたること多い schemeは2chの過去スレが検索にかかることが多い この違いは何?
565 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 12:46:13 ] Googleの中の人に聞いて下さい。
566 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 12:48:47 ] schemeしか知らないけど、lispでぐぐればいいんじゃない? lisp --> common lisp scheme --> scheme という理解だけど
567 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 12:48:51 ] &hl=en付けたら2chにもhatenaにもいきあたらないな
568 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 13:00:54 ] >564 実用性があるか無いか、実アプリ開発に使ってるか否かの差だとオモ。 言い方を変えればSchemeは教育的効果は高いが…
569 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 13:30:55 ] おっとBASICの悪口はそこまでだ
570 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 15:54:36 ] schemeで、(car '())や(cdr '())の結果はどうなるんしょうか? 昔読んだLISPの本か何かでnilのcarやcdrはnilになるという 説明を見た気がするのですが、schemeにも当てはまるんでしょうか。
571 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 16:04:13 ] r5rsでは空のリストにcar,cdrはエラーって定義されてるな
572 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 16:05:36 ] R5RS 6.3.2
573 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 16:06:31 ] r5rs-ja.pdfにありました。ありがとうございました。
574 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 21:02:29 ] >>497 オレ、とある図書館でその本の順番待ちなんだが、 まさかオマエが止めてるのか?w
575 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 22:54:43 ] なんだこいつ
576 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 23:33:46 ] これをLIFOと言います
577 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 23:59:26 ] 後入れ中出しだっけ
578 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 00:29:47 ] アッー!
579 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 01:54:40 ] guile, gaucheよりelispのほうがデバッガが整備されているの? >Shiro(2007/09/05 13:39:49 PDT): 慣れが半分、後は「バグを出しにくいコードの書き方」が半分でしょうか。出来る限り副作用無しで書いておくとバグの切り分けが非常に容易になります。 >たぶん、「ソースの動きを追う」という考え方自体、C/C++とSchemeで差があるんではないかと思います。 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#H-1frlpc5 C(手続き型言語)との対比でschemeにとってソースの動きを追うってどんな感じなんですか? 個人的にデバッガを使って、「ソースをよく読み、ときどき書き」というのをしたいんですが
580 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 05:47:16 ] >>579 そのすぐ下に書いてある通りでは。 デバッガを使わずとも、replで個々の手続きを呼べるので、色々な入力を与えて出力を 見るかな。入力と出力の関係がすぐに把握できない(手続き内でステップ実行したいと思う) ようであればたぶん手続きが(あなたにとって)大きすぎる。
581 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 07:32:34 ] で、何のソースを読みたいの? 抽象論はもう飽きたよ
582 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 08:30:31 ] >C(手続き型言語)との対比でschemeにとってソースの動きを追うってどんな感じなんですか? そういえばあんまり追ったことないかも・・・スタックトレースが1000行と出ちゃうから。面倒なんでデバッガ使わなくなった。"Type (debug) to enter the debugger."とか出されても、もう無視(w
583 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 08:34:34 ] >>580 処理系への絶対的な信頼性ってこと? 効率的なデバッグ術の個人の差ってかなり開きがありそうだね >>581 日本語サイトのサンプルとか、とりあえず、デバッグツールで読みたいなあと思って バグでハマって、解決はしたけど、ものすごく時間がかかった場合は バグの見つけ方のポイントを教えてくださいね
584 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 10:56:39 ] 初心者ですけど (define (f x) (let ((a (hoge1 x)) (b (hoge2 a)) (c (hoge3 b)) (d (hoge4 c))) d)) ;; (f "なんちゃら") みたいな書き方をしています。 Emacsで、最後のコメントアウト行でC-c C-eで評価。 思ったような主力がでないときは、最後のdをcとかbとかに書き換えて、その段階での出力をみます。 手続き型に毒されたやり方でしょうか?
585 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 14:10:57 ] それをやるならlet*じゃないかね
586 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 14:33:22 ] >>579 自分はC++でプログラム書く時も、 デバッガ使うのはcore dump(assert含む)した時くらい。 基本的にユニットテストやってる。 自分のことを全然信用してないから、 全自動で網羅的なチェックした方がよい。 もちろんテストコードの方が圧倒的に多いし、 assertも馬鹿みたいに書いてる。 コードを書いたらすぐにユニットテストも書いてるから、 何かテストしたい時には、デバッガ立ち上げて操作するより、 既存のユニットテストコードを基に新たに書く方が速いw テスト、assertコードを書くのは設計の検討にもなってる。 設計をあらゆる角度から観察する必要があるから。 もちろんdtrace, profilerなんかも使いますが。
587 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 14:36:15 ] >自分のことを全然信用してないから、 分かるわ〜 自分もいっつもデイジー・デイジー歌っちゃう
588 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 15:46:53 ] そんなんじゃボーマンさんにスイッチ切られちゃうぞ。
589 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 19:56:25 ] >>585 ご指摘のとおり、let* でした。
590 名前:デフォルトの名無しさん mailto:sage [2009/03/20(金) 21:57:53 ] そのテストツールの作り方の方針というか みたいなものをまとめている本ってないでしょうか
591 名前:デフォルトの名無しさん mailto:sage [2009/03/20(金) 23:28:14 ] そのってどの?
592 名前:デフォルトの名無しさん mailto:sage [2009/03/20(金) 23:32:39 ] まずデバッガに依存するのをやめて徹底的に構造化プログラミングを意識するようにした方がいいんじゃね?
593 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 00:24:13 ] 具体的に何のコードをテストしたいのかを意識するべき。 そうでないと、ツールとか方針とかが正しいのか、そもそも必要なのかを検証できない。
594 名前:デフォルトの名無しさん [2009/03/21(土) 01:36:26 ] >>592 デバッガ使ってうまくいっている人は使えばいいと思うよ。
595 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 01:53:44 ] デバッグのしやすさをよく考えて作ったほうがいいよ。つまり 手続っぽく作るのも可能だけど、なるべく関数のスタイルを身につけたほうが 効率的だよ。関数のスタイルをとるなら、デバッグはassertやtraceさえ出来れ ば、大体なんとかなるし。いわゆるデバッガが必要なのは、関数がでかくって、 その中で手続的に処理が乱雑になっちゃうからなのでは?
596 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 02:13:43 ] そもそもの話はコードの読み方じゃなかったっけ。 まあ、それはreplで関数叩いて入出力確かめろ、ですでに結論出てるな。 とは言え、じゃあひどいコードはどうやったら効率よく読めますか、 とか訊かれると、どうしたもんかね、となるが。
597 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 21:43:54 ] 本屋でO'reilly Gaucheをみかけて、軽く立ち読みしたけど 良さそうな感じだね
598 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 08:10:07 ] >>590 処理系のソースに付いてくるテストコード読みなよ。
599 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 20:33:23 ] >>597 新しいGauche本が出たのかと喜んでオライリーを覗きに行ったら ふぬああ本のことだったのか…
600 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 20:45:12 ] 2133?
601 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 20:57:45 ] フ ムフム ヌ クヌク ア プ ア ア
602 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 22:20:27 ] フムフムヌクヌクアプアア ♪ www.youtube.com/watch?v=ir38tIOQdT0
603 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 22:27:25 ] すまんがカッコ付きで話してくれんか
604 名前:デフォルトの名無しさん mailto:sage [2009/03/23(月) 01:13:46 ] (+ (* フム 2) (* ヌク 2) アプアア)
605 名前:デフォルトの名無しさん mailto:sage [2009/03/23(月) 01:34:35 ] Syntax Error
606 名前:デフォルトの名無しさん mailto:sage [2009/03/23(月) 01:36:23 ] >>605 お前が閉じろよ。
607 名前:デフォルトの名無しさん mailto:sage [2009/03/23(月) 12:27:25 ] 私のカギカッコは渚でしか見つけられませんでした。
608 名前:デフォルトの名無しさん mailto:sage [2009/03/23(月) 13:08:06 ] ))) ←波
609 名前:デフォルトの名無しさん mailto:sage [2009/03/23(月) 21:44:13 ] ))) ←こんなん見て人生おかしくならないか?
610 名前:デフォルトの名無しさん mailto:sage [2009/03/23(月) 22:04:11 ] >>609 おれのヘッドホンは beyerdynamics)))) だよ。
611 名前:デフォルトの名無しさん mailto:sage [2009/03/23(月) 22:16:03 ] (((((((((((パナウェーブ)))))))))))
612 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 03:00:39 ] Lisp使い初めてから人生おかしくなったとか損したなんて人は 今まで一人も見たことがないな。 その前に周りにLisp使える人が一人も居ないお(´;ω;`)
613 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 03:03:56 ] 損はしていないが、Lisp使えるだけでアレゲな現場に投入された経験はある。 周りが変態ばかりで困った記憶がある。 かくいう俺もド変態だ。どうだまいったか。
614 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 05:11:32 ] アレゲってエロゲでAI作るとか?
615 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 06:16:04 ] ぬるぽ
616 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 09:07:38 ] LISPにNullPointerExceptionあるの?
617 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 09:10:41 ] 規格上はない。 補足してトップレベルに復帰する処理系はある。
618 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 09:26:42 ] おお、安心しました。
619 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 09:29:47 ] 値が束縛されてないシンボルを参照したりすると出るエラーがぬるぽに相当するんでは?
620 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 10:03:13 ] それはUNBOUND-VARIABLEだよね。 NILのCDR取るとか規格の範囲内で起きるものじゃなくて、 MEMREFなどの低レベルAPIや処理系バグで起きる、 *((char *)0)な話かと思ったが。
621 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 19:13:24 ] >>574 謝ってるのにオマエとか言う奴には貸したくないな。
622 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 19:58:32 ] いやいや、アナタの本じゃないし 読んでなくても一度返すのがスジですよ。 そして列の最後尾に並び直すのです。 (セドラーから5000円だか7000円だかで新古本を買った者より)
623 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 20:32:59 ] 筋というか、普通はそういう規則じゃないの。 予約を入れた人がいなくても 貸し出し期間内に図書館にいって延長手続き(借り直し)するものだと思うんだけど。
624 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 22:53:18 ] >>622 へー新古品なんてあるところにはあるんだなあ。 ところで訳書を出してたとこってたしかオンデマンド印刷とかで 幾つか出してるし、これもそれで復刊してくれないかなあ。
625 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 23:07:18 ] 某大手書店の最後のディヴィグ本をゲットして喜んでたのに いつの間にか増刷されてamazonでさえ普通に新本が手に入るようになってて涙目w 手習いとかものまねも復刊されるかもね
626 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 23:15:26 ] >>625 ま、そんなこともあるさ。 どんまいどんまい。
627 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 23:23:31 ] 筋ってw ヤクザやさんがこんなところに居るとはw 規則なんだから返すに決まってるでしょ。 あればね… ていうか本なくしちゃったw
628 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 23:30:41 ] >> 627 細かいこと気にするなって。買って返せば無問題♪
629 名前:デフォルトの名無しさん mailto:sage [2009/03/25(水) 01:11:21 ] >>621 とか>>627 とか、こういう奴がいるから、 図書館の中の人が苦労するんだろうな、と思った。 釣りならいいけど、素でその態度なら頭おかしいだろ。
630 名前:デフォルトの名無しさん mailto:sage [2009/03/25(水) 01:22:12 ] わざわざ言うことかw
631 名前:デフォルトの名無しさん mailto:sage [2009/03/25(水) 02:27:05 ] 絶版Lisp本ではものまね鳥と竹内先生の本が読みたいな。 あとLisp以外ではPrologの技芸。ヤフオクみたら29500円とかwwwwww オンデマンドで売ってくれくれ。
632 名前:デフォルトの名無しさん mailto:sage [2009/03/25(水) 02:44:01 ] Prologの技芸ってたまに名前を聞くんだが、そんなに偉大な本だったのか・・・・・
633 名前:デフォルトの名無しさん mailto:sage [2009/03/25(水) 02:49:05 ] Prologの技芸持ってるけど読んでないぜ そんなプレミア付きとは知らなんだ
634 名前: ◆7y/z31W.Wg mailto:sage [2009/03/25(水) 02:55:24 ] >>633 よかったら読んだら売ってよ。1万なら買うよ。
635 名前:デフォルトの名無しさん mailto:sage [2009/03/25(水) 02:56:26 ] 「Prologの技芸」はProlog版SICP。 SICPはアーキテクチャよりだけど、こっちは応用より。 内容グーで印刷ショボ。
636 名前: ◆7y/z31W.Wg mailto:sage [2009/03/25(水) 03:01:49 ] 間違ったヤフオクじゃなくてアマゾンだった。> 29500円
637 名前:デフォルトの名無しさん mailto:sage [2009/03/25(水) 06:41:10 ] これって業者がつり上げてんの?ひどい値段だなぁ。
638 名前:デフォルトの名無しさん mailto:sage [2009/03/25(水) 09:28:43 ] >Prolog版SICP なるほど
639 名前:デフォルトの名無しさん mailto:sage [2009/03/25(水) 11:06:13 ] the art of prologの和訳本だよね
640 名前:デフォルトの名無しさん mailto:sage [2009/03/25(水) 13:22:05 ] MITの教科書か。既に新しい版が出てるみたいだね。
641 名前:デフォルトの名無しさん [2009/03/25(水) 14:53:33 ] 話ぶった切ってすまないけど、SchemeでProcessingみたいに Arduinoを制御することができる処理系ってあるのかな? GaucheとかPLTってどうなんだろ? できればやりかた書いてあるリンク教えてください。
642 名前:デフォルトの名無しさん [2009/03/25(水) 15:20:28 ] >>641 chicken scheme + avr-gcc + avrdude 1010.co.uk/arduino.html#2
643 名前:デフォルトの名無しさん mailto:sage [2009/03/25(水) 15:55:03 ] 一方ポールグレアムはクラウドを制御した
644 名前:デフォルトの名無しさん mailto:sage [2009/03/25(水) 16:08:31 ] crowdコンピューター?
645 名前:デフォルトの名無しさん mailto:sage [2009/03/25(水) 22:24:21 ] 生きのこる術は大衆言語。
646 名前:デフォルトの名無しさん mailto:sage [2009/03/25(水) 23:02:14 ] だが気を付けたまえ。
647 名前:デフォルトの名無しさん [2009/03/26(木) 17:47:48 ] >>641 "Getting Started with Arduino"の6章"Talking to the Cloud"で Proce55ingを使ってクラウド上のPhysical computingを制御してます。 実はRubyやPerlやPythonでも出来るので、 もしかしたらGaucheとかPLTでもできるかも・・・Arduinoはavrdude経由で操作するかと思いますが・・・ スクリプトでなければ>>642 のようにavr-gccでArduino上のプログラムを 作成するのが良いでしょう。 そんな感じでクラウド側もPhysical computing側もSchemeは使えます。 といってもArduino上のというかAVR上のSchemeはまだないですね。 最近はメモリサイズが大分大きくなったようですが・・・
648 名前:デフォルトの名無しさん mailto:sage [2009/03/26(木) 18:55:27 ] >>647 >Arduino上のというかAVR上のSchemeはまだないですね。 つーかそもそもmegaの内蔵SRAM程度では厳しい。 外部コンパイルしてAVR上でVMを走らせる みたいな使い方ならできるだろうけど。 マイコンでscheme動かすならアドレス空間大きめの ものを選んだ方がいい。
649 名前:デフォルトの名無しさん [2009/03/27(金) 03:23:50 ] >>648 PICでSchemeが動いているw
650 名前:デフォルトの名無しさん mailto:sage [2009/03/27(金) 08:03:22 ] atmegaでも無理なのか ならschemeからマシン語のコードを吐くコンパイラというのならどうかな
651 名前:デフォルトの名無しさん mailto:sage [2009/03/27(金) 22:10:45 ] ハーバードアーキテクチャだからフラッシュとSRAMの扱いが違うんだよね フラッシュにオンタイムで書き込むにはブートローダもどきがいる
652 名前:デフォルトの名無しさん mailto:sage [2009/03/28(土) 15:07:29 ] Schemeじゃないけどこんなのはあるよ。 簡単なλ計算のインタプリタをArduinoで動かしてる。 Project LambdaCan: Lambda Calculus in a Can alum.wpi.edu/~tfraser/Software/Arduino/lambdacan.html
653 名前:デフォルトの名無しさん [2009/03/28(土) 23:38:51 ] >>652 有り難う御座います。このスレでもλ計算の話は久しぶりですね。 とっても気に入りました。でも、素のλ計算はメモリを喰うので この計算ぐらいが限界って例が書いてありますね。 簡約戦略がまずいとメモリオーバーしそうですねw
654 名前:デフォルトの名無しさん mailto:sage [2009/03/29(日) 23:38:06 ] 関数型スレでスルーされてしまったのでコチラで聞いてみますが lazy-kやunlambdaの式をλ式にしてくれる変換器ってないでしょうか (もしあればCombinator Birdsのような式が直接計算出来るのが理想ですが) というのも、W=C(BMR)=λab.bbb≠λab.abbな気がするので 検算してみたいんです。 後Combinator Birdsのページ、 W=SS(KI)がおそらく一番シンプルな答えですね
655 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 19:23:24 ] なんか流れを止めてしまったみたいなので、654は撤回します ごめんなさい
656 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 21:39:56 ] 過疎板の過疎スレで気にするような事じゃない
657 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 22:13:21 ] >>655 いや、関係ないだろ W=C(BMR)=λab.bbb≠λab.abbとW=SS(KI)ってどういう意味なの? 暗号にしかみえないw
658 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 22:25:41 ] 撤回するな!CLかSchemeで実装してみろ! と焚きつけてみる
659 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 22:53:00 ] 良かった。それじゃせっかくなので解説してみます λをlと表記すると lab.abbってのは(lambda (a) (lambda (b) ((a b) b))と同じ意味(abbの部分は左結合)で、 これはWコンビネータのλ式の表現でもあります。 W=SS(KI)、つまり((S S) (KI))ってのは以下のS,Kを用いてWが表せますよ、という意味 ;lxyz.xz(yz) (define S (lambda (x) (lambda (y) (lambda (z) ((x z) (y z)))))) ;lxy.x (define K (lambda (x) (lambda (y) x))) ;lx.x (define I (lambda (x) x)) (define turing-type-quine (lambda (x) (lambda (y) (list y (list x (list 'quote x) (list 'quote y)))))) (define w (lambda (x) (lambda (y) ((x y) y)))) ((((S S) (K I)) turing-type-quine) 2) ((w turing-type-quine) 2) 最後の2行は同じ結果になりますよね Combinator Birdsでググるとトップに出てくるページには この他にW=C(BMR)っていう定義が載っていて これを簡約するとlab.bbbになるのではないか、というのが自分の疑問です。 というか、上のようなコードを書いて気づいたけど、 Scheme殿に計算してもらえば良かったわけだ 今から試してきます。気づかせてくれてさんきゅ
660 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 23:03:17 ] (define C (lambda (x) (lambda (y) (lambda (z) ((x z) y))))) (define B (lambda (x) (lambda (y) (lambda (z) (x (y z)))))) (define M (lambda (x) (x x))) (define R (lambda (x) (lambda (y) (lambda (z) ((y z) x))))) (define W (C ((B M) R))) ((W turing-type-quine) 2) 普通に出来た。 自分の計算ミスかー、ショック ちなみにW=SS(KI)はこんな感じで計算できます。 lab.abb =lab.(ab)b =la.S(lb.ab)(lb.b) =la.SaI =la.(Sa)(KIa) =S(la.Sa)(la.KIa) =SS(KI)
661 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 00:49:42 ] >>660 2割ぐらい理解したw あとで再挑戦・再理解してみる lambdaを3つ使うのを初めてみた おれはlambdaを3つ使うコードを書くことがあるのだろうか このロジック(表記法?)は、どういう用途で使えそうなの?
662 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 07:02:04 ] 意味はさっぱり分からんがラムダだらけで楽しそうだ
663 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 09:24:12 ] >>661 オレ、660じゃないけど、べつに実用性とかじゃなくて最小の関数型言語の形のひとつ: e.tir.jp/wiliki?%CB%DD%CC%F5%3A%A5%D7%A5%ED%A5%B0%A5%E9%A5%DF%A5%F3%A5%B0%B8%C0%B8%ECLazy_K
664 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 16:00:20 ] >>663 Thank you 知らない概念や処理系が、いっぱいあったけど 2割ぐらい理解した 感想は、うまく言葉にできない
665 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 19:15:59 ] 660ですが、ML系(たぶんHaskellも)の言語ではカリー化という機能があって Schemeでいう以下の2つは同じ物として扱われる (lambda (x) (lambda (y) (lambda (z) ... (lambda (x y z) ... 3引数の関数なら書いたことあるでしょ? そう考えたらそんなに複雑でもなく見えてくるかもね
666 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 19:45:19 ] >>665 素朴な疑問なんですが 普段は、なんの言語を使っているんですか? ちなみに自分はbash 5%, C/C++ 30%, gauche 10%, Python 30%, その他 25% エディタはemacs? 差し支えなければ、教えてください
667 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 20:23:21 ] 聞かれていない自分も晒すと gauche95%、sh3%、sed1%、C1%くらいだな。 1年半くらい前はsh70%、sed20%、C8%、(Scheme48+guile)2%くらいだったけど。 カリー化と可変長引数は両立がむずかしげでML系はカリー化を、Lisp系は可変長引数を取ったんだとおもう。 あとカリー化とthunkも相性が悪くて 正格評価のMLは、評価を遅延させる式を ():unitを受け取るなんちゃってthunkで実現してた気がする。
668 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 20:42:54 ] >>667 gaucheを使っていて、不都合はないの? 他の言語を選ばずに、gaucheを選んだいくつかの理由ってなに? lisp系じゃなくて、gaucheの理由も知りたいかも
669 名前:660 mailto:sage [2009/04/01(水) 20:57:38 ] Gauche使ってる時間が50%ぐらいで、 OCaml&F# 30% C++ 15% Perl 5%ぐらい エディタはVC付属エディタとemacs/viです ところで、可変長引数がダメなのはカリー化というより 型付けが出来ないからではないでしょうか? 呼び出し時に引数の型を指定するprintfのような関数なら I,T,Qコンビネータと関数合成とカリー化で一応実現できます 効率にハンデはあるかもしれませんが
670 名前:デフォルトの名無しさん [2009/04/01(水) 21:04:07 ] 500 :Classical名無しさん :09/04/01 20:55 ID:qtulE/8k よろしくお願いします。 【URL】 pc12.2ch.net/test/read.cgi/tech/1231856193/ 【名前欄】 660 【メール欄】 sage 【本文】↓ Gauche使ってる時間が50%ぐらいで、 OCaml&F# 30% C++ 15% Perl 5%ぐらい エディタはVC付属エディタとemacs/viです ところで、可変長引数がダメなのはカリー化というより 型付けが出来ないからではないでしょうか? 呼び出し時に引数の型を指定するprintfのような関数なら I,T,Qコンビネータと関数合成とカリー化で一応実現できます 効率にハンデはあるかもしれませんが
671 名前:667 mailto:sage [2009/04/01(水) 21:20:19 ] >>668 自分のScheme処理系の変遷は 1.scm。多倍長整数が使いたくなる。 2.Gambit-C。SRFI周りがオレ様過ぎる。 3.MzScheme。非メジャーCPU、非メジャーOSへのポートに挫折。 4.Scheme48。本格的にSchemeを使い始めるが非保健的マクロが独自、SLIBのサポートがビミョー。 5.Guile。機能的にはほぼ文句はないが、遅い。そして重い。 6.Chicken。非メジャーCPUで最適化バグがあったような気がする。 7.Gauche。現状フリーR5RS処理系でベスト。非メジャーCPU、非メジャーOSへのポートも楽。 という感じです。 ドキュメントも豊富、高機能で軽くて高速、とくに正規表現周りはcl-ppcreよりも使いやすいのも◎。 いままでC+sed+shでやってたことをgaucheだけで置き換えられるようになったのがいいですね。 速度重視とかマルチスレッドバリバリなことをしなくなったということもありますが。
672 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 22:52:45 ] SGIが倒産したらしい
673 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 22:58:17 ] そうか、そうか
674 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 23:00:18 ] lisp系は自作に限るよ
675 名前:デフォルトの名無しさん mailto:sage [2009/04/02(木) 03:41:44 ] LispスレでSGIといったら創価じゃなくて シリコン・グラフィックの方だろJK
676 名前:デフォルトの名無しさん mailto:sage [2009/04/02(木) 03:47:31 ] 2度目の倒産なんだって? なんかLispに関して大きいことやってたっけ? OpenGLぐらいしかシランわ。
677 名前:デフォルトの名無しさん mailto:sage [2009/04/02(木) 07:44:57 ] ずっと自作のSchemeモドキを使っています。モドキというのは、あまり 使わない機能を削って代わりに部分継続やソフトタイピングを入れたり してるためです。それなりに高速でデバッグ機能も充実していると思って いますが、RnRSやSRFIの類は全く考慮せず作っているので公開していま せん。ドキュメント書くのもめんどくさいし(論文は書いたけど)。
678 名前:デフォルトの名無しさん mailto:sage [2009/04/02(木) 09:10:38 ] >>672 エイプリルフールだと思ってた…
679 名前:デフォルトの名無しさん mailto:sage [2009/04/02(木) 14:18:51 ] 勘違いしたかも。 SGI(非創価)ってLisperが作った会社だと思ってました。
680 名前:デフォルトの名無しさん mailto:sage [2009/04/02(木) 14:20:30 ] lispでモナディウスなみの速度は出せるのだろうか
681 名前:デフォルトの名無しさん mailto:sage [2009/04/02(木) 16:33:15 ] >>679 ジムクラーク? Lisper ではないね。専門は CG らしい。 ワークステーション屋で Lisper が作った会社ってあったっけ? Sun のビルジョイはハッカーだけど Lisper じゃないし。
682 名前:デフォルトの名無しさん mailto:sage [2009/04/02(木) 16:58:18 ] 昔、N-Worldって、SGI (Indy?)向けの3D CG作成アプリなかった? Lispマシンから移植されたものだったと思う。Lispで動いていたはず。 プロトタイピング強いから、いろいろな分野の初期大型アプリで使われてるね。 数式処理、ウィンドウシステム、プログラミング可能エディタなど。 CG関係も昔はもっと多かった。
683 名前:デフォルトの名無しさん mailto:sage [2009/04/02(木) 18:25:17 ] sgiといえば、インディゴだな。doomでネット対戦に使わせてもらったよ。
684 名前:デフォルトの名無しさん mailto:sage [2009/04/02(木) 19:27:02 ] sigは破産申請したらしいね
685 名前:デフォルトの名無しさん mailto:sage [2009/04/02(木) 20:34:16 ] CGはもうからないのか
686 名前:デフォルトの名無しさん mailto:sage [2009/04/02(木) 23:50:42 ] >>682 ニチメンなんとか、ってやつのことかな。Shiroさんが詳しそう
687 名前:デフォルトの名無しさん mailto:sage [2009/04/03(金) 00:37:30 ] 前回の破産でCG方面からサーバー屋に商売変えしてたんじゃなかったっけ?
688 名前:デフォルトの名無しさん mailto:sage [2009/04/03(金) 00:39:09 ] なんかMIPSの灯がどんどん消えてく気がするなぁ…
689 名前:デフォルトの名無しさん mailto:sage [2009/04/03(金) 01:43:52 ] /.Jによると、どこだかに買収されるんで、それに必要な手続きなんだと。
690 名前:デフォルトの名無しさん mailto:sage [2009/04/03(金) 01:57:27 ] >>681 そうゆう名前で呼ばれてかかどうかはおいといて、MIT 由来の LISP マシンってワークステーション以外のなのものでもないが…
691 名前:デフォルトの名無しさん mailto:sage [2009/04/03(金) 02:28:13 ] >>685 技術の発展とともに、作業端末は高価なUNIXワークステーションではなく 安価なWindowsマシンが優位になり、未開の領域に強く柔軟なLispから 高速で大規模なプログラムに強い? C++に置き換わったとかじゃないの。
692 名前:681 mailto:sage [2009/04/03(金) 09:54:17 ] >>690 あーそうね。シンボリクスとかがそうか。 Unixワークステーション屋で、と言うべきだったかな。
693 名前:デフォルトの名無しさん mailto:sage [2009/04/03(金) 11:16:16 ] carやcdrがちゃんと理解できん・・・ アセンブラの方が簡単かも。
694 名前:デフォルトの名無しさん mailto:sage [2009/04/03(金) 12:14:13 ] そんなに難しいかな? 単方向リンクリストの、先頭を取り出すか、それ以外を取り出すか、 だけなんだが。
695 名前:デフォルトの名無しさん mailto:sage [2009/04/03(金) 12:16:17 ] 括弧とドットの表記法でつまづくか、ポインタでつまづくかのどっちかですよねー
696 名前:デフォルトの名無しさん mailto:sage [2009/04/03(金) 12:42:44 ] carは左って覚えれば良いと思うよ
697 名前:デフォルトの名無しさん mailto:sage [2009/04/03(金) 12:48:44 ] >>693 コンスは単なる2つのポインタの対 Lispよりも低レベルではcarとcdrは可換で線形リストとは何の関係もない 線形リストに利用しているのはLispより高レベルだけの話 アセンブラ的に考えればこう
698 名前:デフォルトの名無しさん mailto:sage [2009/04/03(金) 13:05:28 ] まずボックス表記を手で書いて それからいろんな構造をconsだけで組み立てる ドット対→線形単リスト→2分木みたいに徐々に複雑にしていくといい
699 名前:デフォルトの名無しさん mailto:sage [2009/04/03(金) 13:14:01 ] Common Lisp: A Gentle Introduction to Symbolic Computation 付録の sdraw 使うと図示してくれる CL-USER> (sdraw '(1 2 3 (4 5))) [*|*]--->[*|*]--->[*|*]--->[*|*]--->NIL | | | | v v v v 1 2 3 [*|*]--->[*|*]--->NIL | | v v 4 5 www.cs.cmu.edu/~dst/Lisp/sdraw/
700 名前:デフォルトの名無しさん mailto:sage [2009/04/03(金) 13:17:57 ] ちゃんと理解できないったって(と)の対応はわかりますよね? Lispのリスト記法はドット記法の構文糖 任意のリスト記法はドット記法で表せる(逆は偽) ドット記法の基本は( A . B )でホワイトスペース+ドット+ホワイトスペースがcarとcdrの間の仕切り (開き/閉じ括弧の周りはホワイトスペースの省略可) そしてドット記法を(A B C)みたいなに直すのは ドット+開き括弧を見つけたら、それと、それに対応する閉じ括弧を消しゴムで消すだけ
701 名前:デフォルトの名無しさん mailto:sage [2009/04/03(金) 13:22:22 ] ( A . B ) ≡ [ A | B ]
702 名前:デフォルトの名無しさん mailto:sage [2009/04/03(金) 14:15:16 ] (cons 'a 'b) => (a . b) (cons 'a (cons 'b '())) => (a b) '(a . (b . (c . ()))) => (a b c)
703 名前:デフォルトの名無しさん mailto:sage [2009/04/03(金) 14:22:09 ] 'とかquoteが絡んでくると解りづらくなるから 任意のアルファベット1文字のシンボルと空リストは自己評価的という設定にしよう (cons A B) => (A . B) ;; [ A | B ] (cons A ()) => (A . ()) ≡ (A) ;; [ A | NIL ] (cons (cons A B) ()) => ((A . B) . ()) ≡ ((A . B)) ;; [ [ A | B ] | NIL ] (cons () (cons A ())) => (() . (A . ())) ≡ (() A) ;; [ NIL | [ A | NIL ] ] (cons A (cons B C)) => (A . (B . C)) ≡ (A B . C) ;; [ A | [ B | C ] ]
704 名前:デフォルトの名無しさん mailto:sage [2009/04/03(金) 14:24:40 ] lispのリストはヘテロジニアスリストでさらにペアにもなるから難しいよな ML系みたいにリストは空か値とリストを持つコンスって定義だとまだわかりやすいのに
705 名前:デフォルトの名無しさん mailto:sage [2009/04/03(金) 15:27:28 ] 分かりにくくないだろw
706 名前:デフォルトの名無しさん mailto:sage [2009/04/03(金) 15:48:41 ] ふと思ったんですけど 効率の為にlistではなくvectorを使っているアルゴリズムって 静的にコンパイル+破壊的代入なしって条件なら プログラマにはlistとして見せつつ 内部的にはvectorとして処理できませんかね? たとえば(list 1 2 3 4 5)は 表面的にはコンスによる線形リストなんだけど内部的には#(1 2 3 4 5)であるオブジェクトを返すとか。 書き換えられない事が解っているn要素の線形リストは2ワードのセルをn個アロケートするより nワード+αのベクタで記憶するほうがよさそう。 Haskellが文字列をリストとして実装してるのはそんな理由だったりするのでしょうか?
707 名前:デフォルトの名無しさん mailto:sage [2009/04/03(金) 15:50:16 ] それは「cdr coding」と呼ばれるもので散々実験済み。
708 名前:デフォルトの名無しさん mailto:sage [2009/04/03(金) 15:52:55 ] 書き込んでから気づいたけど、 部分リストを複数オブジェクトで共有している場合 先頭部分の参照がはずれてもGCで回収できなくて逆に効率が悪くなりますね。 ベクタの最初の方だけGCできる方法を取れば別ですけど そうするとベクタの情報が増えて結局コンスと大差なくなるかも
709 名前:デフォルトの名無しさん mailto:sage [2009/04/03(金) 16:14:39 ] >>707 おや、そうでしたか。不勉強でした。 見た所、線形リストを少しでも効率よく処理する為の物の様で ベクタを置き換えるには至らなかったようですね。
710 名前:デフォルトの名無しさん mailto:sage [2009/04/03(金) 16:35:18 ] vector的利用がはっきりしているところでは、 vectorを使えばいいしね。 listで構造体を模倣してprototypingしても、 accessor使っておけば簡単に移行できるし。
711 名前:デフォルトの名無しさん mailto:sage [2009/04/03(金) 17:59:01 ] evalと大域変数でhashを模倣する初心者を見てニヤニヤするんですよねー
712 名前:デフォルトの名無しさん mailto:sage [2009/04/03(金) 18:02:44 ] それは君だけ。
713 名前:デフォルトの名無しさん mailto:sage [2009/04/03(金) 22:15:13 ] やべえ、サボってたらSeasoned Schemerわかんねえw また後戻りか…英語もやってないし… λ.......