Lisp Scheme Part23
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2008/07/13(日) 00:09:48□過去スレ□
Part22: ttp://pc11.2ch.net/test/read.cgi/tech/1211381920/
Part21: ttp://pc11.2ch.net/test/read.html/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
0002デフォルトの名無しさん
2008/07/13(日) 00:10:32日本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の話題が中心。
0003デフォルトの名無しさん
2008/07/13(日) 00:11:14CLtL2: 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.ai.mit.edu/projects/iiip/doc/CommonLISP/HyperSpec/FrontMatter/Chapter-Index.html
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
0004デフォルトの名無しさん
2008/07/13(日) 00:11:57ttp://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/
0005デフォルトの名無しさん
2008/07/13(日) 00:13:39Structure and Interpretation of Computer Programs (英語)
ttp://mitpress.mit.edu/sicp/
通称「SICP」として知られる『計算機プログラムの構造と解釈』の原書です。
全文がオンラインで読めます。
SICP Web Site for the Japanese Edition (日本語)
ttp://sicp.ipl.t.u-tokyo.ac.jp/
SICP日本語版のサポートサイトです。正誤表等。
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入門書。全文がダウンロードできます。
0006デフォルトの名無しさん
2008/07/13(日) 00:14:36ttp://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入門書。全文がダウンロードできます。
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』として出版予定。
『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の力の源泉であるマクロプログラミングを解説。
0007デフォルトの名無しさん
2008/07/13(日) 00:15:50John 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
0008デフォルトの名無しさん
2008/07/13(日) 00:17:10独習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
0009デフォルトの名無しさん
2008/07/13(日) 00:18:24初心者が集うIRC(布教してくれる先生も大募集です)。
irc.scenecritique.com
port 6667
チャンネル #Lisp_Scheme
Schemeのテストコード書いたり、簡単な実行したりコードさらしたりするにはここへカモン。
ttp://codepad.org/
コードを書いて実行した時のURLを記録しておけば、実行結果も一緒にさらす事が出来て幸せです。
0010デフォルトの名無しさん
2008/07/13(日) 00:20:11awklisp: 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/
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/
0011デフォルトの名無しさん
2008/07/13(日) 00:21:28Gauche: マルチバイト文字に対応したR5RS準拠のScheme処理系。川合史朗氏作。
ttp://practical-scheme.net/gauche/index-j.html
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
Bigloo: CLR用のコードを吐けるようになったらしい。
ttp://www-sop.inria.fr/mimosa/fp/Bigloo/
guile: R5RS準拠のGNU公式拡張用言語。もちろんSLIBも使えます。
ttp://www.gnu.org/software/guile/guile.html
Chez Scheme: R6RS準拠の商用Scheme処理系。インタプリタはフリー。
ttp://www.scheme.com/
Ypsilon Scheme System: R6RS準拠のScheme処理系。
ttp://www.littlewingpinball.net/mediawiki-ja/index.php/Ypsilon_Scheme_System
0012デフォルトの名無しさん
2008/07/13(日) 00:26:26Steel Bank Common Lisp: 代表的なCommon Lisp処理系。
ttp://www.sbcl.org/
CMUCL: Common Lisp処理系。
ttp://www.cons.org/cmucl/
GNU CLISP: Common Lisp処理系。
ttp://www.clisp.org/
Embeddable Common Lisp: Common Lisp処理系。
ttp://ecls.sourceforge.net/
Allegro Common Lisp: 代表的な商用Common Lisp処理系。
ttp://www.franz.com/
LispWorks: 商用Common Lisp処理系。
ttp://www.lispworks.com/
Corman Common Lisp: 商用Common Lisp処理系。
ttp://www.cormanlisp.com/
Arc: ポール・グレアム氏が開発中の新しいLisp。
ttp://arclanguage.org/
0013デフォルトの名無しさん
2008/07/13(日) 00:28:10GaucheNight (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/
0014デフォルトの名無しさん
2008/07/13(日) 00:30:15(make-thread :name common-lisp :part 5)
http://pc11.2ch.net/test/read.cgi/tech/1215834213/
【CGI】実用比較Lisp vs C/C++【GUI】
ttp://pc11.2ch.net/test/read.cgi/tech/1150501484/
【魔法】リリカル☆Lisp【言語】
ttp://pc11.2ch.net/test/read.cgi/tech/1183396621/
Emacs Lisp 3
ttp://pc11.2ch.net/test/read.cgi/tech/1191875993/
【ヤパーリ】XMLをS式に置換えていくスレ【LISP最強】
ttp://pc11.2ch.net/test/read.cgi/tech/1140006937/
【SICP】計算機プログラムの構造と解釈 Part2
ttp://pc11.2ch.net/test/read.cgi/tech/1203096230/
【普通のやつらの】 Arc Language 0 【上を行け】
ttp://pc11.2ch.net/test/read.cgi/tech/1202098949/
Lisp@UNIX版
ttp://pc11.2ch.net/test/read.cgi/unix/1019926525/
Lisperこそ真のプログラマーよ!!
http://pc11.2ch.net/test/read.cgi/prog/1175791979/
LISPってさ〜
http://science6.2ch.net/test/read.cgi/sim/1015169050/
0015デフォルトの名無しさん
2008/07/13(日) 00:39:160016デフォルトの名無しさん
2008/07/13(日) 01:44:29(p)http://wiki.fdiary.net/lisp/ にこのスレのテンプレをまとめておきました。
このスレの最初のものをコピーしたばかりなので、最新版にアップデート
しなきゃいけない所の訂正をお願いします。
(たとえば、テンプレには話題のイプシロンについてはかかれていない。)
また、ID:guest PASSWORD:cl です。インストールログなどの公開場所
としてもご利用ください。
0017デフォルトの名無しさん
2008/07/13(日) 10:59:220018デフォルトの名無しさん
2008/07/13(日) 15:22:14テンプレすごいなー
0019デフォルトの名無しさん
2008/07/13(日) 21:38:49Scheme実装に追加でMosh。
ttp://code.google.com/p/mosh-scheme/
あとShiroさんが面白かったって書いてた奴
ttp://clojure.org/
0020デフォルトの名無しさん
2008/07/14(月) 02:58:30http://wiki.fdiary.net/lisp/?%A5%C6%A5%F3%A5%D7%A5%EC+%28Lisp+Scheme%A5%B9%A5%EC%29
テンプレ改訂しました。実装のところは言語ごとに分けてみた。
0021デフォルトの名無しさん
2008/07/15(火) 19:36:430022デフォルトの名無しさん
2008/07/17(木) 04:49:06Somewhere Over the Rainbow
http://jp.youtube.com/watch?v=2A2Jt4WOxN8
0023デフォルトの名無しさん
2008/07/17(木) 23:48:480024デフォルトの名無しさん
2008/07/17(木) 23:55:03お前が作ればあるぞ
0025デフォルトの名無しさん
2008/07/18(金) 00:28:04http://kissho.xii.jp/1/src/1jyou41912.pdf.html
WiLiKiにあがってたのをベースに組版中。
TeXに明るくないので原文のマークアップをそのまま適用する方向でやってる。
WiLiKiにあがってる訳ってたしかleque氏がやってたんだよね?
ほとんどコピペの組版作業でもけっこうめんどいのに、訳とかすごすぎるとオモタ。
0026デフォルトの名無しさん
2008/07/18(金) 15:05:48理解したことを日本語の文章で書く必要があるから。
0027デフォルトの名無しさん
2008/07/19(土) 09:13:51Ypsilon という処理系が公開されてたんだね。
試してみたらかなり高速。
> (import (time))
> (time (tak 12 6 0))
;; 1.279202 real 1.279208 user 0.0 sys
12
>
Gaucheと並ぶ優良国産処理系の予感。
0028デフォルトの名無しさん
2008/07/19(土) 10:01:580029デフォルトの名無しさん
2008/07/19(土) 10:19:15文章になってます。FAQは共通でいいでしょ?)
よくありそうな質問をwikiでまとめておこうと思うので
よくありそうな質問と(回答ができそうな人は回答を)
書いてくれませんか?質問と回答のフォーマットは
一応決めてあります。
http://wiki.fdiary.net/lisp/?FAQ (id:guest pass:cl)
0030デフォルトの名無しさん
2008/07/19(土) 10:37:430031デフォルトの名無しさん
2008/07/19(土) 10:55:29詳しいことはわからないけどGCはそういう方針
なんだって。
ピンボールゲーム用ってのには驚いた。
ビル・バッジ、わ〜、懐かしい名前。月刊アスキー
で読んだっけ。処理系を作った人はずっとこれを
追いかけているらしい。夢のある人だね。羨ましい。
0032デフォルトの名無しさん
2008/07/19(土) 11:02:15OpenGLだってDSL持ってんじゃん。(そこをLLVM by Apple)
グラフィック系はちょっと凝ったことしたくなって、そこがメインだったりするから、
お仕着せのAPIだけじゃ困るわけ。
0033デフォルトの名無しさん
2008/07/19(土) 11:14:020034デフォルトの名無しさん
2008/07/19(土) 14:47:25ここと統合?
0035デフォルトの名無しさん
2008/07/19(土) 14:55:180036デフォルトの名無しさん
2008/07/19(土) 18:08:50へんな名前にしたらしい
アンチのしわざ?
http://pc11.2ch.net/test/read.cgi/tech/1215834213/
0037デフォルトの名無しさん
2008/07/20(日) 06:42:57(cartesian-product '((a b c) (0 1)))
⇒ ((a 0) (a 1) (b 0) (b 1) (c 0) (c 1))
http://practical-scheme.net/gauche/man/gauche-refj_158.html#IDX3119
メモリ上にこのリストを作らずに、各要素に対してprocを適用するものがほしいのですが。
0038デフォルトの名無しさん
2008/07/20(日) 08:11:09そのまんまの名前で。
003937
2008/07/20(日) 09:19:08ドキュメント化されてないけど、あったんですね。
自分で書いてしまいました。
cartesian-productよりも簡単でした。
(define (cartesian-product-for-each proc los)
(let loop ((r '())
(los los))
(if (null? los)
(proc r)
(for-each (lambda(x)(loop (cons x r) (cdr los))) (car los))
)))
0040デフォルトの名無しさん
2008/07/22(火) 18:34:44timeを行うとreference to undefined identifier: time
となるんだけど
どうすれば使えますか?
0041デフォルトの名無しさん
2008/07/22(火) 18:42:370042デフォルトの名無しさん
2008/07/22(火) 18:48:380043デフォルトの名無しさん
2008/07/22(火) 18:49:570044デフォルトの名無しさん
2008/07/22(火) 19:25:06使えました
なぜですか?
0045デフォルトの名無しさん
2008/07/22(火) 19:58:360046デフォルトの名無しさん
2008/07/22(火) 20:37:410047デフォルトの名無しさん
2008/07/22(火) 22:05:540048デフォルトの名無しさん
2008/07/23(水) 05:27:08せめてR6RSについて書けよw
0049デフォルトの名無しさん
2008/07/23(水) 08:36:110050デフォルトの名無しさん
2008/07/23(水) 22:54:19Gaucheで正規表現書いたことないのか?
0051デフォルトの名無しさん
2008/07/24(木) 19:54:190052デフォルトの名無しさん
2008/07/24(木) 21:37:250053デフォルトの名無しさん
2008/07/24(木) 22:13:550054デフォルトの名無しさん
2008/07/24(木) 22:23:000055デフォルトの名無しさん
2008/07/26(土) 16:21:43「bodyの中に挿入される」ってフレーズに遭遇した。
なんかやらしい。(><)
0056デフォルトの名無しさん
2008/07/26(土) 16:24:160057デフォルトの名無しさん
2008/07/26(土) 16:44:480058デフォルトの名無しさん
2008/07/26(土) 19:40:270059デフォルトの名無しさん
2008/07/26(土) 19:53:590060デフォルトの名無しさん
2008/07/26(土) 20:10:010061デフォルトの名無しさん
2008/07/26(土) 21:19:360062デフォルトの名無しさん
2008/07/26(土) 22:24:480063デフォルトの名無しさん
2008/07/26(土) 22:50:530064デフォルトの名無しさん
2008/07/26(土) 22:55:360065デフォルトの名無しさん
2008/07/26(土) 23:49:16>>57 S式コミュニケーションというラノベがあるのだ
>>58 S式がやらしいと言うのならM式も忘れちゃいけねぇ
>>59-62 以降は単なる「しき」繋がり
>>63 ようやく突っ込みが入る
>>64 ちょっとピントのズレた解説
>>65 解説(解答編)
0066デフォルトの名無しさん
2008/07/27(日) 02:28:270067デフォルトの名無しさん
2008/07/27(日) 02:42:560068デフォルトの名無しさん
2008/07/27(日) 10:30:210069デフォルトの名無しさん
2008/07/27(日) 11:10:510070デフォルトの名無しさん
2008/07/27(日) 11:20:360071デフォルトの名無しさん
2008/07/27(日) 11:23:52別に無いよ。
0072デフォルトの名無しさん
2008/07/27(日) 11:57:35KahuaはGaucheを使ったフレームワークだけれど、継続を積極的に使っているところがおもしろい。
だけどメリットとして説明するのは難しいな。
ちゃんと理解すれば記述は簡潔になるんだけど、そもそも理解しにくいってのもあるからどっちもどっちって気もする。
まぁ、結局は好みとかもあるから使ってみなきゃ判断出来ねぇよ。
0073デフォルトの名無しさん
2008/07/27(日) 12:41:03あと、思い入れを満たしてくれるところw
0074デフォルトの名無しさん
2008/07/27(日) 12:49:050075デフォルトの名無しさん
2008/07/27(日) 13:22:25そのS式とコードを食わせると構文木を作ってくれる
ような関数もschemeでは楽に書けるんでしょうか?
これができたらコンパイラのフロントエンド部分を作り放題なんですが
0076デフォルトの名無しさん
2008/07/27(日) 13:24:300077デフォルトの名無しさん
2008/07/27(日) 13:30:07SLLGEN
0079デフォルトの名無しさん
2008/07/27(日) 14:07:44コンパイラコンパイラとかでぐぐったら凄い数の実例がありました
すごいですね
>>75
こんなライブラリもあるんですか
また読ませていただきます
0080デフォルトの名無しさん
2008/07/27(日) 16:35:39Gauche の SVN Trunk に入ってる parser.peg モジュールが使えるんでね?
0081デフォルトの名無しさん
2008/07/28(月) 00:16:27ドキュメントが無いよ…
0082デフォルトの名無しさん
2008/07/28(月) 23:45:00例えば、C2H6Oだとエタノール、ジメチルエーテル。
炭素原子から手が4つ出ているのをリストで表現するには
どうしたらいいのかと...
0083デフォルトの名無しさん
2008/07/28(月) 23:54:30CMLで書いてssax:xml->sxmlするんだ。
0084デフォルトの名無しさん
2008/07/29(火) 00:30:12隣接リストでいいんじゃね?
>>83
CMLって使ってる人見たことないんだけど
0085デフォルトの名無しさん
2008/07/29(火) 04:38:19ありがとうございました。隣接リストで考えてみます。
あわせて行列による分子の表現、行列演算による化学反応の表現が
できたら面白いと思いました。やってみます。
0086デフォルトの名無しさん
2008/07/29(火) 05:10:52つXymTeX
http://oku.edu.mie-u.ac.jp/~okumura/texwiki/?XyMTeX
http://www.klavis.info/xym.html
http://homepage3.nifty.com/xymtex/fujitas/rd/chosho.html
0087デフォルトの名無しさん
2008/07/31(木) 06:00:41http://practical-scheme.net/wiliki/wiliki2.cgi?Gauche%3AZlib
にある
Gauche-zlib-0.1.2.tgz
はリンク切れで入手できません
うーん
0088デフォルトの名無しさん
2008/07/31(木) 06:32:070089デフォルトの名無しさん
2008/07/31(木) 06:42:59それで
0090デフォルトの名無しさん
2008/07/31(木) 07:39:52ずっと昔は化合物を扱うLispで書かれたシステムもあったらしい。
今だとPythonの方が主流?かな。
でもがんばれ。
>>86
それLaTeXだし方向性が違うと思うぞ
0091デフォルトの名無しさん
2008/07/31(木) 11:49:34TeXだからASCII文字シリアライズwith構造の参考になるでしょ。
しかも変換できるようにしておけば、
XymTeXで分子構造図画像も作れるし。
0092デフォルトの名無しさん
2008/07/31(木) 15:34:35二分木を作成、描写せよという問題で作成まではできたのですが、描写とはどうすればいいのでしょう?
初心者な質問ですいません。
0093デフォルトの名無しさん
2008/07/31(木) 18:36:340094デフォルトの名無しさん
2008/07/31(木) 22:05:44あぷろだにUpっといてやったぞ。
http://www.toel.sytes.net/~toel/cgi-bin/upload/stored/up3794.xxx
0095デフォルトの名無しさん
2008/07/31(木) 22:12:03Windows 版でよければ Gauchebox に入ってるぞ
0096デフォルトの名無しさん
2008/08/02(土) 03:52:27>>95
ありがとうございます
win, linux両方で使用するのでどちらも利用します。
0097デフォルトの名無しさん
2008/08/03(日) 00:48:03どんどんページを追加してやってください。
comp.lang.lisp,comp.lang.schemeまで含めようとしたけど、matzlispのhikiの
プラグインがatomに対応していないためにやめました。これらはmiscに
入れておきました。
0098デフォルトの名無しさん
2008/08/03(日) 12:15:51firebird 用のDBDどこかにありませんか?
0099デフォルトの名無しさん
2008/08/03(日) 15:02:46今の子ならそんなの普通だと思ってたが・・・
0100デフォルトの名無しさん
2008/08/03(日) 15:07:340101デフォルトの名無しさん
2008/08/03(日) 15:39:56雑誌の記事がLispかBasicだけという時代に若者だった俺は思う
0102デフォルトの名無しさん
2008/08/03(日) 18:43:300103デフォルトの名無しさん
2008/08/03(日) 19:39:04ジジイ、いくつのとき高校行ったんだよ?
0104デフォルトの名無しさん
2008/08/03(日) 21:04:39McCarthyより年上じゃねえかw
0105デフォルトの名無しさん
2008/08/03(日) 22:54:11ここまでの年齢だと逆に、
中学までしか出てなくて、定年してから学業やりたくて高校行くみたいなエピソードが
想像しやすいかもしれんw
0106デフォルトの名無しさん
2008/08/03(日) 23:07:170107デフォルトの名無しさん
2008/08/04(月) 07:18:310108デフォルトの名無しさん
2008/08/04(月) 19:08:030109デフォルトの名無しさん
2008/08/05(火) 02:13:02HLISPの後藤英一先生?
0110デフォルトの名無しさん
2008/08/05(火) 02:25:120111デフォルトの名無しさん
2008/08/05(火) 09:39:550112デフォルトの名無しさん
2008/08/05(火) 11:59:420113デフォルトの名無しさん
2008/08/05(火) 12:45:200114デフォルトの名無しさん
2008/08/05(火) 13:33:130115デフォルトの名無しさん
2008/08/05(火) 15:47:430116デフォルトの名無しさん
2008/08/05(火) 16:05:250117デフォルトの名無しさん
2008/08/06(水) 05:47:20ttp://ascii.jp/elem/000/000/157/157495/
0118デフォルトの名無しさん
2008/08/06(水) 06:26:53高卒レベル数学力(偏差値60切る位)でプログラミング初心者では読めませんか?
Yコンビネータなどの高度な話題にもふれてますか?
0119デフォルトの名無しさん
2008/08/06(水) 07:45:12良い本です。だいじょうぶですよ。
途中、フィボナッチ数列の行列表現、固有値
とかでてきますけど本筋とは関係ないので
とりあえず無視してOKです。
Yコンビネーターはとりあげてないですね。
序文で萩谷先生は高校生に読んでもらいたい
と書いてます。
0120デフォルトの名無しさん
2008/08/06(水) 10:07:30そういえば無いような気がする。あったっけ?
0121デフォルトの名無しさん
2008/08/06(水) 11:55:390122デフォルトの名無しさん
2008/08/06(水) 11:56:13Little Schemer
0123デフォルトの名無しさん
2008/08/06(水) 12:00:270124デフォルトの名無しさん
2008/08/06(水) 13:26:10λ記法でわかりにくければS式で書き下せばいい
0125デフォルトの名無しさん
2008/08/06(水) 14:15:050126デフォルトの名無しさん
2008/08/06(水) 14:17:50そりゃ一番シンプルだし。
0127デフォルトの名無しさん
2008/08/06(水) 14:36:46つか、やたら Y が目につくようになったのはいつ頃から?
0128デフォルトの名無しさん
2008/08/06(水) 14:39:560129デフォルトの名無しさん
2008/08/06(水) 17:45:17それはテトラポッドやろ。
0130デフォルトの名無しさん
2008/08/06(水) 18:32:43ありがとうございます。
> 途中、フィボナッチ数列の行列表現、固有値
程度なら理解できると思います。
0131lischemep ◆/uyHCgG7qA
2008/08/10(日) 23:28:50以下想定です。
こうしたらいいとかありましたらどんどん提示して頂けたら幸いです。
・大学生のLisper/Schemerを先生として呼ぶ
・上記のため会費をとります。
・場所は以下を想定。(1h:1400〜2300円くらい+各自1ドリンク)
ttp://www.ginza-renoir.co.jp/miyama/
・スキルがバラバラになるため基本的に自習を想定
(同スキルの人と課題本を決めてチーム学習する等は自由です)
・参加条件としてキーボードがサクサク打てる程度。処理系を入れるノートパソコン等。
・開発環境構築から指導の予定
参加者希望予定者がいらっしゃいましたら、
lischemep at gmail.com
まで下記を記入して送ってください。
使用希望の
・希望日(参加頻度:必ず参加、月1希望、仕事のため不定等)
・希望参加費
・OSとバージョン
・エディタ
・処理系
(↑処理系は希望なければおまかせと書いてください)
また先生やってみたいという方は、下記を記入して送ってください。
・希望日(開催頻度も)
・希望報酬額(時給換算、月XX円等)
・対応できるOS・処理系・エディタ
0132デフォルトの名無しさん
2008/08/11(月) 00:27:37希望参加費を申告制にすると、
収集つかないんじゃないかな。
0133lischemep ◆/uyHCgG7qA
2008/08/11(月) 00:47:39なるほど。
勇み足過ぎたかもしれません。
まず、参加希望者から
・自分のレベル
・どんな課題がしたいか
を送ってもらうように訂正します。
lischemep at gmail.com
0134デフォルトの名無しさん
2008/08/11(月) 07:41:420135デフォルトの名無しさん
2008/08/11(月) 08:09:45お、面白そうだな。
確認だけど◆/uyHCgG7qAは先生じゃなくまとめ役ってこと?
「先生」の技量に全てが依存している気がする。
大学生でLisperを名乗れる奴ってどのくらいいるんだろう。
0136デフォルトの名無しさん
2008/08/11(月) 09:07:42135さん
私は先生はとても無理です。
先生は学生でなくてもいいのですが
そうすると高額なセミナーになってしまう気がして。
社会人のSchemer/Lisperなら薄謝もらってもおそらく割に合わないでしょうし。
0137デフォルトの名無しさん
2008/08/11(月) 09:55:28スキモノならボランティアでやってくれるんじゃないの?
もっと安くあげる方法はあると思う。
http://www.javaopen.org/jfriends/howto/
0138デフォルトの名無しさん
2008/08/11(月) 09:58:280139デフォルトの名無しさん
2008/08/11(月) 10:11:35http://www.lingr.com/room/bpYrj7DtJnN
0140デフォルトの名無しさん
2008/08/11(月) 12:21:10移植したりライブラリを増やしたりできない。
勉強会やるとしたら言語仕様だけでなく実装についてやるべきだけど、
複雑な実装が乱立しているから難しい。
もちろん単純なScheme処理系もあるが、それは人気がなさすぎる。
たとえ言語が人気でも処理系が不人気なら意味がない。
複雑さの許容度は人気に比例するのだと思う。
複雑なものもいずれ必要にはなる。
でも今は必要ないんだよ。今一番必要なのは、人気と釣り合いのとれた単純な実装。
そのためならマクロを犠牲にしてもいい。
それに気づいた人はS式から離れていく。嫌いになった訳ではないがな。
0141デフォルトの名無しさん
2008/08/11(月) 13:11:44で?っていう
0142デフォルトの名無しさん
2008/08/11(月) 16:49:10自分の低能ぶりを直視できない人間だということを婉曲に表現した自己紹介ですね
0143デフォルトの名無しさん
2008/08/11(月) 18:28:33言い訳をいろいろ考える才能はありそうですねw
0144デフォルトの名無しさん
2008/08/11(月) 21:36:40だけど、残念ながら無し。
東京近辺に住んでいたら東工大の講義を聴講したい。
0145デフォルトの名無しさん
2008/08/11(月) 22:01:37むかしなら、大学の授業の潜り込みは簡単だったんだけどね。
今は、わからない。
東工大もセキュリティは厳しくなってるからね。
0146デフォルトの名無しさん
2008/08/11(月) 22:53:18釣られるけど、マクロの無いLispなんてLispじゃないだろ
そもそもCommonLispもSchemeもちゃんと仕様のある「まとも」な言語なんだけど。
0147デフォルトの名無しさん
2008/08/11(月) 22:58:560148デフォルトの名無しさん
2008/08/11(月) 23:46:28Lisp1.5はそうだったかも
0149デフォルトの名無しさん
2008/08/12(火) 00:57:31国立大は社会人受入れに寛容
なようなので正規に聴講生の
手続きをとって試験も受けて
単位もとりたいです。
でも、地方の大学でSchemeを
使った講義があるところは
限られてるみたいです。
0150デフォルトの名無しさん
2008/08/12(火) 01:02:10にあったLispで記述されたLisp
で仕組みがよくわかりましたよ。
故中西先生もこの論文だったか
ユーザーマニュアルだけを手がかりに
最初のLisp処理系を書いたと読んだけど。
0151デフォルトの名無しさん
2008/08/12(火) 01:05:100152デフォルトの名無しさん
2008/08/12(火) 01:10:57マクロだけだもんね
0153デフォルトの名無しさん
2008/08/12(火) 01:12:19どうしてもね。その傾向はあるかもね。人工知能の分野もlispよりC++のほうが勢いがあったり
するらしいから、教える人が少なくなるんだろうね。筑波、東工ふくめて旧帝大あたりだったら
一つくらい授業がありそうだけど。それ以外の地方は確かに期待できないかもしれないね。
プログラムの筋はschemeをやる方が断然よくなるんだけどな。これは抽象化がうまくなるから
だろうと思う。高階関数を扱える言語をしっかりやってるかやってないかでセンスはずいぶん変
わるね。
0154デフォルトの名無しさん
2008/08/12(火) 01:12:58んなこたあないw
0155デフォルトの名無しさん
2008/08/12(火) 01:33:56考えられますが、一番はS式のもつ
プログラムとデータの同一性だと
思います。強力はマクロもその
特性のひとつでは?
0156lischemep ◆/uyHCgG7qA
2008/08/12(火) 01:37:13いいリンク紹介ありがとうございます。
やっぱり安く上げる方法考えた方がいいんですかね。
私自身はお金は無頓着なので。場所ももう少し探してみます。
課題本はあったほうがいいんでしょうか。
「この本やりたい」とかありましたら教えてください。
>>138
>>139
自習だとつまらないことでつまづいて長い時間考えることがあるからです。
ネット上で聞くということも出来ますが、
その場合状況説明のやりとりに時間がかかります。
私はもう結構な年なので、お金を払ってでも学習速度を上げたいと思ってます。
0157デフォルトの名無しさん
2008/08/12(火) 01:51:10もしそうなら「自分と同じレベル募集」とか、はっきり言っちゃったほうが良いかも。w
俺も先生は大学生とか限らないほうが良いと思う。
0158デフォルトの名無しさん
2008/08/12(火) 01:55:18これを要領よくやる訓練も必要かと
0159デフォルトの名無しさん
2008/08/12(火) 02:12:45マクロ機能は自分で好みのを書けってことだったんじゃないかな?
当時のマクロの実装は簡単だったしね。
0160デフォルトの名無しさん
2008/08/12(火) 02:42:42私立だって簡単に聴講生になれるぞ。
金がかかるだけで。
0161デフォルトの名無しさん
2008/08/12(火) 02:47:46最初の頃はFSUBR + EVALで一々手で書いた。
パターンが出来上がったのでdefmacroになった。
>>156
> 自習だとつまらないことでつまづいて長い時間考えることがあるからです。
本当はそれが大切なんだけどね。
より深く理解するし、それが出来る人が継続もできる。
壁に負ける人はいつも負け続ける。
0162デフォルトの名無しさん
2008/08/12(火) 02:56:09年取ってるなら金払ってでも学習速度を上げたいって言うのはわかる。
0163デフォルトの名無しさん
2008/08/12(火) 02:59:040164lischemep ◆/uyHCgG7qA
2008/08/12(火) 06:13:10家庭教師。つまるところそうなのかもしれません。
Lisp/Schemeにとっつきにくさがあると思ってて
同じ状況の人がいるだろうと思ってたのですがあまりいないみたいですし。。。
状況としてはThe Little Schemerの半ばで頓挫している状況です。
他にもプログラミングGaucheやANSI Common Lispなどをつまみ食いしてますが
途中で分からなくなってます。
色々当たっているうちに少しずつ分かったりしますが
時間がかかりすぎている気がしています。
このままだと数年かけて一冊片付くペースになってしまいそうです。
>>162
三十代になるとさすがに焦ります。
0165デフォルトの名無しさん
2008/08/12(火) 08:01:59俺は164がなんでLisp/Schemeをやってみようと思ったのかが気になるな。
知的興味が理由なら年齢で焦ることはないだろうし。
近い将来に仕事で使う必要があるのなら焦る気持ちもわかる。
学習する動機によっておすすめの方法も違ってくると思うんだが。どう?
0166デフォルトの名無しさん
2008/08/12(火) 09:03:44挫折しそうだから
くじけそうだから
もう後がなさそうだから
0167デフォルトの名無しさん
2008/08/12(火) 09:45:28独学でSICPをしこしこ解いてるよ。
同時に数学の勉強も始めたんだが、こっちがきつい。
数学基礎論のやさしい教科書はないかな。
0168デフォルトの名無しさん
2008/08/12(火) 10:56:25>>167
> 同時に数学の勉強も始めたんだが、こっちがきつい。
> 数学基礎論のやさしい教科書はないかな。
数学基礎論の質問スレッド その4
http://science6.2ch.net/test/read.cgi/math/1207899938/
おおかた数理論理学か集合論の教科書を薦められると思うが
計算機科学との関連で何かもくろみがあるならこっちへ
http://science6.2ch.net/informatics/
0169デフォルトの名無しさん
2008/08/12(火) 12:54:29基礎論は数学を勉強する支えにはならないぞ普通は。
集合論とか論理とかを学ぶなら基礎論には手を出していない
普通の教科書のほうが良い。
0170デフォルトの名無しさん
2008/08/12(火) 13:28:48ありがとうございます。覗いてみます。
>>169
そうなんですか?
集合論とか論理学から、計算機科学方面へ進めていきたいと思っていたのですが。
私の「基礎論」という言葉の使い方がおかしいのでしょうか?
集合論や論理学そのものを学んだほうが良いということでしょうか?
0171デフォルトの名無しさん
2008/08/12(火) 18:36:29仕様があればまともな言語なのぉ〜?
0172デフォルトの名無しさん
2008/08/12(火) 18:40:240173デフォルトの名無しさん
2008/08/12(火) 19:28:14今、数学で「基礎論」といったら、逆数学とかあのへんのことを指すんじゃないかな。
少なくとも専門分野を「基礎論」と自己規定してる数学者は、だいたいそのあたりの
分野を研究してることが多い。(Harvey Friedman, Stephen Simpson, 田中一之氏, etc)
「基礎論」という分野が勃興してきた19世紀末と現在とでは、言葉のニュアンス
がかなり違ってきているので、注意が必要かと。
167氏はあるいはもっとルーズに、「基礎論」という言葉を「数理論理学」とほぼ同義で
使ってるのかもしれないが。
まあいずれにしろ、数理論理学は(少なくとも初歩の段階では)メインストリームの数学とは
直接関係しないことが多いね。幾何的モデル理論みたいに、数論への応用があったりする
分野もあることはあるけど、そういうのは非常に専門的な話題になってしまう。
(169氏が言ってる「数学を勉強する支えにはならない」というのはおそらくそういうニュアンスなのだろう。)
でも理論計算機科学に興味があるのなら、数理論理学は必須だから、(167氏言うところの)
「基礎論のやさしい教科書」を勉強するのは意味のあることだと思うよ。
とりあえずはこのあたりをご参考に。
ttp://www.kurims.kyoto-u.ac.jp/~hassei/reading_list.html#LOGIC
0174デフォルトの名無しさん
2008/08/12(火) 20:05:34島内さんの「数学の基礎」はどうかと思ったが、
http://www.amazon.co.jp/数学の基礎-島内-剛一/dp/4535601062
絶版で中古市場では高い!ヤフオクでも元より値が上がってる!
0175デフォルトの名無しさん
2008/08/12(火) 20:22:59と板違いか。
0176lischemep ◆/uyHCgG7qA
2008/08/13(水) 06:23:48はじめのきっかけは、「普通のやつらの上を行け」を学生時代に読んでです。
知的興味もありますが、将来的には仕事で使いたいと思っています。
また、なるべくLisp/Schemeを広めていきたいと思っています。
それで初学者向けの勉強会が出来ないかと思いました。
目標としては、AllegroServeを使えるようになること、
On Lispを理解できるようになることです。
0177デフォルトの名無しさん
2008/08/13(水) 07:40:49まだ、shemeやcommon lispに馴れていないならば、SICPよりもう少し簡単なもの
からお勧めするよ。
schemerなら、gauche本でもいいし、common lisperならAnsi Common Lispや岩波
の本でもいいし。
0178デフォルトの名無しさん
2008/08/13(水) 11:16:10ポールグレアムって結局SchemeにもCLにも否定的じゃないか?
0179デフォルトの名無しさん
2008/08/13(水) 14:30:39どちらかといえばSchemeにもCLにも肯定的だと思うよ。
(Lisp族以外の言語に比べれば)
0180デフォルトの名無しさん
2008/08/13(水) 16:20:52javaには否定的というのははっきりしてるし、C系に苛立ちを持ってるような記述も
みかけたことはあるかな。
0181デフォルトの名無しさん
2008/08/13(水) 16:46:200182デフォルトの名無しさん
2008/08/13(水) 18:55:38lispが全く存在感無い事について
想像力を働かせてみた方がいいと思うね
0183デフォルトの名無しさん
2008/08/13(水) 20:29:28どれだけの世界を見て生きてきたか知らんが、
あなたのちっぽけな経験で感じた存在感なんて
なんだというのだ
ふしあなか?
0184デフォルトの名無しさん
2008/08/13(水) 20:42:17頑張ってそれか?
「viaweb以外のインストールベースの例を教えてください」
って聞かれたらどうするの?
はいやりなおし!
0185デフォルトの名無しさん
2008/08/13(水) 20:44:57くらい言わないと。
0186デフォルトの名無しさん
2008/08/13(水) 21:16:40なんか薄っぺらいなぁ。
0187デフォルトの名無しさん
2008/08/13(水) 21:37:39皆言ってるように「数学基礎論」そのものに首を突っ込む必要はない。
集合というのはただのモノで、ただのモノについての議論を深めていくと
濃度がどうとか数学基礎論の方へ行く。
そっちではなくて数学の基礎と言うか数学村の言葉使いに慣れておく必要がある。
つまり集合と言うただのモノに必要な性格付けをして数学的な実質のある体系を
作っていく手順を自分なりに一度は体験しておく必要がある。
入り易いのは数の構成で、島内氏のとか岩波新書に「数の体系」とかいろいろある。
そんなことは分かってるというのであれば不要だが、単に実数も複素数も知ってるというのではだめ。
次にやっておくべきは代数かな。計算機科学との相性も良いし、暗号等での応用もあって本もたくさんある。
あとは必要と興味に応じてやっていけば良い。ひとつ注目したいのは圏(カテゴリー)論。
ひと昔前はGAN(GENERAL ABSTRACT NONSENSE)とか揶揄されたが様変わりで、
Haskellで圏論と言う言葉を知る人も増えたらしい。
0188デフォルトの名無しさん
2008/08/13(水) 22:43:56真偽関数から始めて命題論理・モデル理論・述語論理・帰納的関数・・・と続き
最後にちょこっと公理的集合論が出てくる、というような感じで
>>170のやりたそうなことに内容的にはちょうどよかったんじゃないかと思うが
今はもっと効率的にやる方法もあるだろう
0189デフォルトの名無しさん
2008/08/14(木) 00:16:28ご教示、ありがとうございます。
そもそもの動機なのですが、ただいま「論理と計算のしくみ」を読んでいまして、
ちょっと展開が速すぎて着いていけないので、もうすこし詳しく、さらに言えば
演習もあるような書籍は無いかと思ったしだいです。
証明の仕方に慣れていないせいか、結論はともかく過程に納得ができなくて。
とりあえず、「論理学をつくる」を入手しましたので、これをみっちりやってみます。
圏論も視野には入っています。ちょっと遠そうですが。
一番初めの目的はプログラミングや設計に役立てるためだったのですが、
いつのまにか、数学を学ぶこと自体が楽しくなってきてしまいました。
脱線して、計算機科学と関係ない方向に行ってしまいそうです。
0190デフォルトの名無しさん
2008/08/14(木) 00:18:15はいさようなら!
0191176
2008/08/14(木) 08:39:29助言ありがとうございます。
やっぱりLispかSchemeどっちを学ぶか決めた方がいいのでしょうか。今は両方手をつけてます。
それと最近翻訳された実践Common Lispは初学者向けですか?
0192デフォルトの名無しさん
2008/08/14(木) 09:00:16そこは自分で考える部分だよ。
言語の取得って基本的に同時に複数をやるのはあまりよいとは思えないですね。
ゴールがなにか?を考えたら使用する言語は決まってくると思うけど。
LLな活動ならgauche で充分だけど、重い計算をさせるならcommon lispのほうが
当然向いてるし。
0193デフォルトの名無しさん
2008/08/14(木) 10:15:16同時にやるのが〜といったのは
(defun foo (arg1 arg2) ....)
(define (foo arg1 arg2) ....)
と微妙な違いの1例だけど、この違いがなれないうちは混乱に結びつくからだよ。
(defun foo (arg1 arg2)
....
(cond
[(= a b) ...]
....))
みたいになっちゃいけないし。
0194デフォルトの名無しさん
2008/08/14(木) 10:18:31それはcommon schemeだ。
0195デフォルトの名無しさん
2008/08/14(木) 17:48:19『プログラミングGauche』で「途中で分からなくなって」るんだったら、
『実践CL』も同じ結果になる可能性が高いんじゃないかと。
とりあえず「AllegroServeを使えるようになる」という目標があるのなら、
CL一本に絞って、もっと懇切丁寧な初学者向け教科書で勉強してみるのが
一番じゃないでしょうか。
Peter Norvigもたしか「まったくの初心者にはこれが一番いい」と言ってたと
思いますが、TouretzkyのGentle Introductionが非常に丁寧でいいと思います。
こちらから全文が無料でダウンロードできます。
ttp://www.cs.cmu.edu/~dst/LispBook/index.html
0196デフォルトの名無しさん
2008/08/14(木) 20:27:190197デフォルトの名無しさん
2008/08/14(木) 21:32:19特に第3部は必要な箇所だけ読めば良い。
0198lischemep ◆/uyHCgG7qA
2008/08/14(木) 23:53:22>>195さん、
よさそうですね。後で印刷して通勤の合間に読んでみます。
>>196
Emacs Lispの本も持ってます。そちらにも手を付けてみます。
>>197
それを聞いて少し安心しました。
0199デフォルトの名無しさん
2008/08/15(金) 00:10:04実践Common Lispは良いテキストだと思うけどなあ。
漏れは、リスト遊びや、Elispの勉強は、上二つの目的には直接関係してこないと思う。
0200デフォルトの名無しさん
2008/08/15(金) 07:36:30禿同。実践本がマスターできたら、あとは自分で調べながら何でもやれるよ。
マクロもCLOSも書いてある本は他にないと思う。実践本のFOO言語の下りは
本当に素晴しい。
ちなみにAllegroServeは使うだけなら全然難しくないよ。
S式でややこしいListの構築の練習に良いかもね。
リスト遊びは名著だけど、泥臭くなさすぎる。
0201デフォルトの名無しさん
2008/08/15(金) 21:17:10syntax, library syntax, procedure, library procedure, optional procedureのいずれかに
分類されていますが,define, define-syntax, syntax-rulesに関しては上の分類別の記述がありません.
どのように考えれば良いでしょうか.すべて定義に必要なものですから基本的なものだとは思うのですが
単純にsyntaxの部類に属するとしてよいのでしょうか.
0202デフォルトの名無しさん
2008/08/15(金) 22:01:12syntax-rulesは式ではないのでsyntaxではない
たぶん
0203デフォルトの名無しさん
2008/08/15(金) 22:15:19R5RSではたとえば
(define x (define y 100))
などは許されない
0204デフォルトの名無しさん
2008/08/15(金) 22:16:490205デフォルトの名無しさん
2008/08/15(金) 22:59:38define, define-syntax, syntax-rulesは確かに書いてないねえ。
でも、こいつらはどう考えても手続きじゃないから分類するならsyntaxなんじゃないの?
0206デフォルトの名無しさん
2008/08/15(金) 23:14:59beginの扱いも微妙だし
0207デフォルトの名無しさん
2008/08/21(木) 16:12:21実行時にしょっぱなのScm_Initでこけます。
どうもvminsn.cの SCM_VM_LOCAL_ENV_CALL ラベルに来たとき
vm->val0に値が設定されていないことが原因っぽいのですが、
これの解決策分かる方いませんか?
スレチなら、適切な場所に誘導してもらえると嬉しいです。
0208デフォルトの名無しさん
2008/08/21(木) 16:17:07> スレチなら、適切な場所に誘導してもらえると嬉しいです。
http://www.lingr.com/room/gauche
0209デフォルトの名無しさん
2008/08/21(木) 16:21:22自分はsyntaxだと理解してきました。
ちなみにR6RSではsyntaxと明記です。
0210デフォルトの名無しさん
2008/08/21(木) 16:32:12ありがとうございます。
0211デフォルトの名無しさん
2008/08/22(金) 10:08:30センスのないネタやね。この手の奴にlispを語ってほしくないな。sicpを
やってた奴みたいだが。
0212デフォルトの名無しさん
2008/08/22(金) 11:21:480213201
2008/08/23(土) 02:28:49いろいろお教えいただきましてありがとうございます
>>209 さんのご意見に従い
割り切ってsyntaxに入れてしまったのが簡単で良いかなと思っています
しかしこれらをあえてsyntaxから外してあるということは
R5RSはそれだけ厳密に定義されているということなんでしょうか
0214デフォルトの名無しさん
2008/08/23(土) 14:07:51それ系のMLでも解釈について議論になってる。
もちろん仕様がないような言語とは比較になりませんが。
どういう言語でも↓こういうことがあるもんなんです。
http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_active.html
そういうレベルの意味において「いい加減」
0215デフォルトの名無しさん
2008/08/23(土) 14:32:150216デフォルトの名無しさん
2008/08/24(日) 13:16:350217デフォルトの名無しさん
2008/08/24(日) 13:41:230218デフォルトの名無しさん
2008/08/24(日) 14:11:09頭のいい奴は複雑なものを作るから困る
0219デフォルトの名無しさん
2008/08/24(日) 14:17:34S式で説明してくれ
0220デフォルトの名無しさん
2008/08/24(日) 16:58:12(if (難しい? '日本語) 'S式でおk)
0221デフォルトの名無しさん
2008/08/24(日) 18:06:39コラコラw
0222デフォルトの名無しさん
2008/08/24(日) 19:41:38#<undef>
0223デフォルトの名無しさん
2008/08/24(日) 21:16:28なにかに決めりゃいいじゃん、nil でもいいからさぁ。
とりあえず決めた方が実用的になると思うんだけど。
0224デフォルトの名無しさん
2008/08/24(日) 21:24:42決めちゃったらもう変えれないだろ。
議論が尽くされてないところは決めるべきじゃないし、
実用のために不格好になるのは CommonLisp だけで十分。
0225デフォルトの名無しさん
2008/08/24(日) 21:53:410226デフォルトの名無しさん
2008/08/24(日) 22:26:380227デフォルトの名無しさん
2008/08/24(日) 22:44:55決めちゃうことが(例えば性能的な)制約になる実装があり得るから
0228デフォルトの名無しさん
2008/08/25(月) 00:15:130229デフォルトの名無しさん
2008/08/25(月) 00:26:43(definc-syntax member
(syntax-rules () ((_ name) (name :init-value 0))))
(define-class <test> ()
(member X))
こうすると、どうも(member X)の展開が上手くいかないようなのです。
これを上手く展開させる方法はありますか?
0230デフォルトの名無しさん
2008/08/25(月) 00:29:57本質的にマクロをわかってない。
あくまでもそういう書き方で展開させたいなら結構めんどいことになるよ。
0231デフォルトの名無しさん
2008/08/25(月) 00:31:15define-class ごと再定義するのが良いだろう。
0232デフォルトの名無しさん
2008/08/25(月) 00:46:58ありがとうございます。
他のやり方を考えてみます。
0233デフォルトの名無しさん
2008/08/25(月) 13:14:13and-let*とかで処理をつなぐ時にいちいち
(begin (write obj) #t)とか書くのは不恰好な気がする。
せめて#<undef>は#fにはなりえない、くらいの制約は欲しい
(とはいえ、未規定の値を返す手続きが#fを(返す|返しうる)処理系は見たことないけど)
0234デフォルトの名無しさん
2008/08/25(月) 20:56:28自分用and-letを定義したらどうよ。
0235デフォルトの名無しさん
2008/08/25(月) 21:23:180236デフォルトの名無しさん
2008/08/25(月) 22:07:51戻り値が未定義だというのは問題の本質ではないな
0237デフォルトの名無しさん
2008/08/25(月) 22:13:410238デフォルトの名無しさん
2008/08/25(月) 22:22:37フロントエンドでも作れば?
0239デフォルトの名無しさん
2008/08/25(月) 22:43:16いろいろマクロを書いて試してます
>>238
括弧を書きたくないのではなくて
beginで値を捨てるのが好きじゃないんです
未規定値は#fかもしれないし真値かもしれないというのも気持ちが悪いです
もしかしたら(eq? (write obj1) (write obj2)) -> #fかもしれませんし
0240デフォルトの名無しさん
2008/08/25(月) 23:00:060241デフォルトの名無しさん
2008/08/25(月) 23:34:490242デフォルトの名無しさん
2008/08/25(月) 23:54:07未規定値を比較する、といった発想が理解できない
0243デフォルトの名無しさん
2008/08/25(月) 23:57:40画面出力するというのが主ですね
クライアントプログラムなどでREPLの介入が出来ない場合
デバッグのための出力を埋め込んだりもします
0244デフォルトの名無しさん
2008/08/25(月) 23:59:29ただ真理値も同一性も規定されていないから
どうなるかはわからないといいたかっただけです
0245デフォルトの名無しさん
2008/08/26(火) 00:46:26そんな時こそマクロ〜
0246デフォルトの名無しさん
2008/08/26(火) 08:15:32プログラミング向いてないのでは?
0247デフォルトの名無しさん
2008/08/26(火) 19:11:39(let f ((rest tree) (count 0))
(cond
((null? rest) count)
((list? (car rest)) (f (append (car rest) (cdr rest)) count))
(else (if (eq? elem (car rest))
(f (cdr rest) (+ 1 count))
(f (cdr rest) count))))))
(= 6 (tree-count '<> '(A B C <> (A <> (X <>)) <> (<> <>))) ; => #t
こういうのでも末尾再帰になってるんでしょうか?
0248デフォルトの名無しさん
2008/08/26(火) 20:17:380249デフォルトの名無しさん
2008/08/27(水) 09:03:03ほんとにMaybeモナドみたいにしたいなら、そのように書くしか無いと思うよ
(有効な値は全部Justでくるむとか、逆に「有効な返り値と決してeq?にならない
値」を失敗を表すのに使うとか)。and-let*で#fを特別扱いしてるのは
「大抵の場合うまくいく」っていう一種の妥協で、>>239のアプリは
その「大抵の場合」から外れているってことだと思う。
0250デフォルトの名無しさん
2008/09/01(月) 23:00:41いつの間にかまた売られるようになってますね
3版ではなさそうですが
0251デフォルトの名無しさん
2008/09/02(火) 19:44:54今の段階ではこういうのもあるって知っておく程度で詳細は他の本でカバーしろって事かな?
0252デフォルトの名無しさん
2008/09/02(火) 21:00:46ドリルみたいなもんだから、逃避したら身には付かない。
0253デフォルトの名無しさん
2008/09/02(火) 21:07:490254デフォルトの名無しさん
2008/09/02(火) 21:15:310255デフォルトの名無しさん
2008/09/02(火) 21:15:310256デフォルトの名無しさん
2008/09/04(木) 15:02:19具体的にどのページのどれが分からないか書かないとまともなレスは来ないよ常考。
0257デフォルトの名無しさん
2008/09/04(木) 23:09:46あとP.160ー173のYコンビネータのネタもややこしいですね
初見では10章よりも難しく思えましたまる
0258デフォルトの名無しさん
2008/09/05(金) 15:46:59ひとつは
(lambda (newlat seen)
(col newlat
(cons (car lat) seen)))
もうひとつは
(lambda (newlat seen)
(col (cons (car lat) newlat)
seen))
実は2つとも無名関数で再帰をしている。このコレクターが再帰のたびに別な関数になっていることをちゃんと理解できてるかな?
これが分かるならP.140までは理解できているはず。つまりTenth Commandmentはコレクターを作れってことだよね。実行してみるとこうなる。
http://codepad.org/efWZQKk8
8章のテーマは確かに継続渡しなんだけど、無名関数で再帰することを上手にやるのがコレクターってこと。
9章のネタではさらに再帰のさせ方を工夫してやるとYコンビネータを作れるというお話。
P.137からP.140が理解できればコレクターとYコンビネータを両方とも理解できます。頑張れ。
0259デフォルトの名無しさん
2008/09/05(金) 16:08:060260デフォルトの名無しさん
2008/09/05(金) 16:28:25無名関数で新しい関数が作れることをマクロ内でやれるようになると、プログラムの記述量を物凄く減らすことができる。
SchemeなどのLisp系言語の特徴はプログラムの記述量が少ないこと。これを支えているのが8章・9章の考え方。
ここを理解できると「Lisp脳」の人たちの考え方に近づくことが出来ます。
0261デフォルトの名無しさん
2008/09/05(金) 16:45:03↓
・コレクターを使ってみる
・Yコンビネータを使ってみる
・マクロを使ってみる。
そういえばSchemerシリーズにはマクロの説明が無いね。Reasoned Schemerでは使ってるけど。
0262デフォルトの名無しさん
2008/09/05(金) 16:45:52それが無限の入れ子になったのが再帰。
0263デフォルトの名無しさん
2008/09/05(金) 17:00:17有限じゃないと処理が終了しない常考。
0264デフォルトの名無しさん
2008/09/05(金) 17:28:360265257
2008/09/05(金) 17:53:48sicp読んでみたけど1.11の反復版の答え見て「なんだこれは」と実力不足は実感しましたし。
Yコンビネータのところは
http://www.ece.uc.edu/~franco/C511/html/Scheme/ycomb.htmlとか
http://dangermouse.brynmawr.edu/cs245/ycomb_jim.htmlみながら読み返してます。
collectorについては
8章のmultirember&coは書き出したりしながら雰囲気は掴めたんだけど、最後のeven-only*&coの
一番ネストが浅いcondのelseのコレクターをどうするの?って言うところ(P.146の上から4段目)で
ボブロスばりに答えの(lambda (al ap as)...)ってのが出てくるのが、面喰らいました。
でこれはhttp://practical-scheme.net/docs/cont-j.htmlの末尾再帰と継続って項で説明されてるような考え方を使って
ようやく「なるほど」って思える程度の理解に辿りついた次第であります。
マクロはTeach yourself scheme in fixnum days、Programming Language Schemeのマクロの項
あとOn Lispとpractice schemeのpractical-scheme.netのScheme:OnLispの項を参考にしてます。
elispを一年ぐらい触ってて()に抵抗が無いぐらいは馴染んでるつもりですが、それでもここまで詰まるとは…
やっぱり生のLispってものは怒ろしいものですね。
あとmultirember&coの"&"の読み方がわかったのも収穫です、ありがとう皆
0266デフォルトの名無しさん
2008/09/05(金) 17:59:08ここではコレクターやYコンビネータの話をしてるのに。
メモ化(memoization)ですら話が遠くなるからあとにしてくれ。
0267デフォルトの名無しさん
2008/09/05(金) 18:00:050268デフォルトの名無しさん
2008/09/05(金) 18:22:31multiinsertLR&co では lambda + collector は3つ使う。コレクターを1つ余計に使うだけ。
evens-only*&coでは lambda + collector は3つ使う。これは multiinsertLR&co と同じ。
multirember&co では a-friend の引数は2つ。
evens-only*&coでは the-last-friend の引数は3つ。コレクターの引数を1つ余計に使うだけ。
>一番ネストが浅いcondのelseのコレクターをどうするの?って言うところ(P.146の上から4段目)で
>ボブロスばりに答えの(lambda (al ap as)...)ってのが出てくるのが、面喰らいました。
そこで詰まるのはプログラミングの概念が原因じゃなくてP.145の3段目が頭に入ってなかっただけでしょ。
分かってるみたいだし気にしないで大丈夫。
0269デフォルトの名無しさん
2008/09/05(金) 18:30:38オマエ、弱参照が話したいだけだろ。ぼくちゃん知ってるよーみたく。ガキだねw
0270デフォルトの名無しさん
2008/09/05(金) 18:34:210271デフォルトの名無しさん
2008/09/05(金) 18:40:39オマエが弱参照を教えてやれば?
他の香具師は優しく>>257に教えてるぞ。
なんでけんか腰になるかね?
0272デフォルトの名無しさん
2008/09/05(金) 18:48:390273デフォルトの名無しさん
2008/09/05(金) 18:50:56「あとにしてくれ」とか書いてる時点で「おまえの演説」だろ。
ここは私物ではない。
0274デフォルトの名無しさん
2008/09/05(金) 18:56:220275デフォルトの名無しさん
2008/09/05(金) 19:05:470276デフォルトの名無しさん
2008/09/05(金) 19:26:530277デフォルトの名無しさん
2008/09/05(金) 19:40:48http://www.nicovideo.jp/mylist/8224180
0278デフォルトの名無しさん
2008/09/05(金) 21:44:50http://codepad.org/Ys9BY5CQ
((9 1 2 8) 3 10 ((9 9) 7 6) 2)
↓
((2 8) 10 (() 6) 2)
evens-only*&co (P.145-146)
http://codepad.org/9gVuGqhM
((9 1 2 8) 3 10 ((9 9) 7 6) 2)
↓
(38 1920 (2 8) 10 (() 6) 2)
リストの中にリストがある場合の処理がちょっと面倒でした。
0279デフォルトの名無しさん
2008/09/05(金) 23:11:56SRFI-45で言及されている問題?
と思ったらHaskellは素朴なグラフ簡約と等価なはずだから違う話かな?
0280デフォルトの名無しさん
2008/09/05(金) 23:53:24http://codepad.org/KCHE46Ro
multiinsertLR&co (P.141-144)
http://codepad.org/Gx9BpnQx
LとRの値を順番に辿ってみるとどのようになっているのか理解しやすいです。
この例は(col newlat 2 2)
0281デフォルトの名無しさん
2008/09/06(土) 17:23:58multirember&co (P.137)
http://codepad.org/efWZQKk8
multiinsertLR (P.141)
http://codepad.org/KCHE46Ro
multiinsertLR&co (P.141-144)
http://codepad.org/Gx9BpnQx
evens-only* (P.144)
http://codepad.org/Ys9BY5CQ
evens-only*&co (P.145-146)
http://codepad.org/9gVuGqhM
0282デフォルトの名無しさん
2008/09/06(土) 23:05:550283デフォルトの名無しさん
2008/09/07(日) 00:08:34Latin-1の範囲の文字をサポートしてるから
マルチバイト文字をユニバイトにばらしたものを使えば
大概は事足ります
文字コードは16進表記ではなく8進表記が使われます
guile> (string->list "こんにちは")
(#\343 #\201 #\223 #\343 #\202 #\223 #\343 #\201 #\253 #\343 #\201 #\241 #\343 #\201 #\257)
0284デフォルトの名無しさん
2008/09/07(日) 00:13:20483 :デフォルトの名無しさん:2008/02/07(木) 12:51:51
guileはutf-8で日本語は使えないのでしょうか?
484 :デフォルトの名無しさん:2008/02/07(木) 20:44:33
>>483
> guileはutf-8で日本語は使えないのでしょうか?
guile> (let ((s "日本語表示テストです."))
(string? s))
#t
guile>
485 :デフォルトの名無しさん:2008/02/07(木) 20:51:57
日本語が使えるが何を意味してるかによる
486 :デフォルトの名無しさん:2008/02/07(木) 21:12:09
まあ、日本語なんてこっちじゃ乞食でも気違いでも使ってるからね
487 :デフォルトの名無しさん:2008/02/07(木) 22:59:39
gosh> (define (日本語が使えますか?) #t)
日本語が使えますか?
gosh> (日本語が使えますか?)
#t
488 :デフォルトの名無しさん:2008/02/07(木) 23:27:38
日本語schemeキタコレ
489 :デフォルトの名無しさん:2008/02/08(金) 00:20:27
全角カッコのあつかいはどうなるのでしょうか
490 :デフォルトの名無しさん:2008/02/08(金) 01:27:27
全角なんてありませんよw
0285デフォルトの名無しさん
2008/09/07(日) 00:15:05guileでUTF-8で
guile> (define hoge "ほげほげ")
guile> hoge
"?\x81??\x81\x92?\x81??\x81\x92"
guile> (string-length hoge)
12
となってしまうけど、4にはならないの?
498 :デフォルトの名無しさん:2008/02/08(金) 15:26:02
>>497
guileではcharacterは8bitだったはず
(integer->char 256)はエラー
バイナリデータと文字が混在するファイルを扱う場合は
こっちのほうが割り切って使えるからいい
499 :デフォルトの名無しさん:2008/02/08(金) 16:31:45
ちょうどいいからお前らにUTF-8の文字数を数える
プログラムでも書いてもらおうかな。
【問題】上のGuileのような文字列のバイト列を
UTF-8とみなし、その文字数を返す関数を書け。
0286デフォルトの名無しさん
2008/09/07(日) 20:28:48ttp://talk.oyasuminasite.com/
眠れぬ夜は話し相手に。
0287デフォルトの名無しさん
2008/09/07(日) 23:32:538章のテーマは自己参照と継続渡し(コレクター)
9章のテーマは再帰とYコンビネータ
他の言語(例えばRubyとかJavaみたいな手続き型言語)ではあまりお目にかからないから、
一読して直ぐに理解できない人の方が多い。
0288デフォルトの名無しさん
2008/09/07(日) 23:43:430289デフォルトの名無しさん
2008/09/08(月) 00:33:13凄くお詳しそうなので継続渡しの素晴らしい例を教えてください。ちょうど悩んでました。
0290デフォルトの名無しさん
2008/09/08(月) 00:54:53素晴らしいかどうかじゃなくて、
一読して直ぐに理解できるかどうかの話だけど。
「継続」に2個以上の引数を渡すとか、わかりにくいかなと思っただけ。
既に多値を理解していることを前提にしているのかな?
0291デフォルトの名無しさん
2008/09/08(月) 02:15:54してないでしょ常考。Little読んでる人達だから。
『多値』
http://practical-scheme.net/wiliki/wiliki.cgi?Scheme%3A%E5%A4%9A%E5%80%A4
0292デフォルトの名無しさん
2008/09/08(月) 03:49:53> Little Schemerの8章・9章はLispらしい考え方が出来ないと難しく感じる。
ではどうしたらLispらしい考え方が出来るようになりますか?
0293デフォルトの名無しさん
2008/09/08(月) 04:24:37写経
0294デフォルトの名無しさん
2008/09/08(月) 12:37:58Little Schemerを読む。
0295デフォルトの名無しさん
2008/09/08(月) 12:58:120296デフォルトの名無しさん
2008/09/08(月) 13:44:53(define (写経) (Read-Little-Schemer))
(define (Read-Little-Schemer) (写経))
0297デフォルトの名無しさん
2008/09/08(月) 13:51:300298デフォルトの名無しさん
2008/09/08(月) 13:53:570299デフォルトの名無しさん
2008/09/08(月) 14:46:19(define (写経 理解度)(if (= 100 理解度 ) '終了 (Read-Little-Schemer (+ 理解度 1))))
(define (Read-Little-Schemer 理解度) (写経 理解度))
(Read-Little-Schemer 0)
0300デフォルトの名無しさん
2008/09/08(月) 16:35:07(if (= 100 理解度 ) '終了 (Read-Little-Schemer (+ 理解度 1))))
(define (Read-Little-Schemer 理解度)
(写経 理解度)
(display 理解度)
(newline))
(Read-Little-Schemer 0)
これを継続(コレクター)で書いてみてください。
0301デフォルトの名無しさん
2008/09/08(月) 16:41:030302デフォルトの名無しさん
2008/09/08(月) 17:54:13(define (写経 理解度)
(if (= 100 (car 理解度))
(display 理解度)
(Read-Little-Schemer (cons (+ (car 理解度) 1) 理解度) 写経)))
(define (Read-Little-Schemer 理解度 col)
(col 理解度))
(Read-Little-Schemer '(0) 写経)
0303デフォルトの名無しさん
2008/09/08(月) 22:26:09((lambda (f)
(lambda (g)
(f (lambda (x) ((g g) x))
(lambda (x) ((g g) x)))))
(lambda (写経)
(lambda (理解度)
(if (< 理解度 100)
(写経 (read-little-schemer 理解度))
'終了))))
0304デフォルトの名無しさん
2008/09/08(月) 23:36:52read-little-schemerも括り出した方がイイけど。
(((lambda (f )
((lambda (x )
(f (lambda (y) ((x x) y))))
(lambda (x )
(f (lambda (y) ((x x) y))))))
(lambda (写経)
(lambda (read-little-schemer)
(lambda (理解度)
(if (< 理解度 100)
(写経 (read-little-schemer 理解度))
'終了)))))
0)
0305デフォルトの名無しさん
2008/09/08(月) 23:39:220306デフォルトの名無しさん
2008/09/08(月) 23:43:51両方とも
#<procedure>
が返ってくる。
0307デフォルトの名無しさん
2008/09/09(火) 01:00:00(read 'hyper-spec)
(disassemble (compile nil (write-great-code)))
(read 'ia32-instruction-set))
0308デフォルトの名無しさん
2008/09/09(火) 04:04:38こういうことをやりたかったのかな?
(((lambda (f)
((lambda (x)
(f (lambda (y) ((x x) y))))
(lambda (x )
(f (lambda (y) ((x x) y))))))
(lambda (!)
(lambda (n)
(if (= 100 (car n))
(begin
(display n)
(newline)
(display "終了"))
(! (cons (+ (car n) 1) n))))))
'(0))
0309デフォルトの名無しさん
2008/09/09(火) 04:26:26Yコンビネータを分離した書き方。
(define Y
(lambda (f)
((lambda (x)
(f (lambda (y) ((x x) y))))
(lambda (x )
(f (lambda (y) ((x x) y)))))))
(define (写経 Read-Little-Schemer)
(lambda (理解度)
(if (= 100 (car 理解度))
(begin (display 理解度) (newline) (display "終了"))
(Read-Little-Schemer (cons (+ (car n) 1) 理解度)))))
((Y 写経) '(0))
0310デフォルトの名無しさん
2008/09/09(火) 04:36:19(define Y
(lambda (col)
((lambda (x)
(col (lambda (y) ((x x) y))))
(lambda (x )
(col (lambda (y) ((x x) y)))))))
と書けます。
ちょうど>>301の写経というのがコレクター関数みたいになってると考えると分かり易いと思います。
0311デフォルトの名無しさん
2008/09/09(火) 04:42:12(define Y
(lambda (col)
((lambda (x)
(col (lambda (y) ((x x) y))))
(lambda (x )
(col (lambda (y) ((x x) y)))))))
(define (Fact my-fact)
(lambda (n)
(if (= n 0)
1
(* n (my-fact (- n 1))))))
((Y Fact) 10)
>>310とあわせて考えるとLittle Schemerの9章も理解し易いでしょう。
0312デフォルトの名無しさん
2008/09/09(火) 05:11:40(define Y
(lambda (col)
((lambda (x)
(col (lambda (y) ((x x) y))))
(lambda (x )
(col (lambda (y) ((x x) y)))))))
(define (mk-length length)
(lambda (l)
(cond
((null? l) 0)
(else (+ 1 (length (cdr l)))))))
((Y mk-length) '(Little Schemer Seasoned Schemer Reasoned Schemer))
mk-lengthがコレクター関数みたいになっていて、Yコンビネータを括り出す説明を丁寧に行っています。
そして、コレクター関数というのがやりたいことの大事な部分を抽出したものになっているのも理解できるでしょう。
0313デフォルトの名無しさん
2008/09/09(火) 08:38:44http://codepad.org/JS40NwIb
(define Y3
(lambda (M)
((lambda (future)
(M (lambda (arg1 arg2 arg3)
((future future) arg1 arg2 arg3))))
(lambda (future)
(M (lambda (arg1 arg2 arg3)
((future future) arg1 arg2 arg3)))))))
自分でやってみてください。うまく出来たでしょうか?
0314デフォルトの名無しさん
2008/09/09(火) 09:40:52multirember&co (P.137) ・・・ Y3
http://codepad.org/JS40NwIb
multiinsertLR (P.141) ・・・ Y4
http://codepad.org/x4lUHXtg
multiinsertLR&co (P.141-144) ・・・ Y5
http://codepad.org/8vB4xkrZ
evens-only* (P.144) ・・・ Y
http://codepad.org/0uccVIHy
evens-only*&co (P.145-146) ・・・ Y2
http://codepad.org/KbHy4nk9
これを全部見ればYコンビネータに慣れてしまってもう難しく無いと思えるかもしれません。
0315デフォルトの名無しさん
2008/09/11(木) 09:54:59(if #t
(begin
(define x 1)
x))
こんな式を有効にすると何か文法的にまずくなるんですか。
0316デフォルトの名無しさん
2008/09/11(木) 14:16:550317デフォルトの名無しさん
2008/09/11(木) 14:34:100318デフォルトの名無しさん
2008/09/11(木) 17:09:32コンパイルする処理系で効率落ちるからじゃね?
0319デフォルトの名無しさん
2008/09/11(木) 20:36:41beginがスコープを作らないのは、複数のdefineを生成するマクロを書くのにbeginを使うため。
たとえば、
(let (...)
(multi-define-generating-macro)
body ...)
これが
(let (...)
(begin (define foo ...) (define bar ...) ...)
body ...)
こんなふうに展開された時、beginの中だけでスコープが完結したら困る。
0320デフォルトの名無しさん
2008/09/11(木) 21:29:48このスレではGaucheと異なるDrSchemeの処理が異端扱いされたことがあった。
TOPレベルでのbeginの処理についてだったかな。
0321デフォルトの名無しさん
2008/09/11(木) 21:53:250322デフォルトの名無しさん
2008/09/12(金) 00:31:38(if #t (define x 1))
これをDrSchemeで評価すると、
define: not allowed in an expression context
となるのですが、なんでdefineがexpression contextで許されないかが知りたいのですが。
0323デフォルトの名無しさん
2008/09/12(金) 00:34:480324デフォルトの名無しさん
2008/09/12(金) 00:37:24もうちょっと詳しくお願いします。
0325デフォルトの名無しさん
2008/09/12(金) 00:39:220326デフォルトの名無しさん
2008/09/12(金) 00:41:270327デフォルトの名無しさん
2008/09/12(金) 00:43:010328デフォルトの名無しさん
2008/09/12(金) 00:44:470329デフォルトの名無しさん
2008/09/12(金) 00:48:10宣言されているかどうか、という事実が変わる)のは好まれないのじゃないかなあ。
(define x デフォルト値)
(if なんちゃら (set! x ほげほげ))
みたいなんじゃ駄目?
0330デフォルトの名無しさん
2008/09/12(金) 00:55:19>動的にスコープが変わるのは好まれないのじゃないかなあ。
そうかもしれません。
> 〜みたいなんじゃ駄目?
普通はそうすると思うのですが、疑問に思ったので質問してみました。
0331デフォルトの名無しさん
2008/09/12(金) 00:59:350332デフォルトの名無しさん
2008/09/12(金) 01:11:04w ( ・ω・ )
(~)、 / i )
\ ` |_/ /|
`ー_( __ノ |
( `( 、ノ
Gauche原理主義のヤラセでした。www_ノ`i__ノ
0333デフォルトの名無しさん
2008/09/12(金) 01:18:46「やむをえんだろう、TOPレベルで継続が出来ない処理系が、何になるか」
「荒らすことはありませんでしたな、総帥・・・・。」
,! レ'~`'ー-!! 〉-'" ,.r'" ゙i, ゙,:.:.:| -t:r:.、――- 、..:::::::::::
. ,! `''ー、, ,! ゙i, / ゙i,-'" ゙i, ,r'゙`i,:.| `"ー‐'''"~:.:.:::::::l:.:.:.
,! ゙ヽ. ゙i / __ ゙i, i 'ヽ.i:.l ,;;''" ̄ ̄:.:.::/:::::::|:.:.:.
,! _,..,_ ヽレ' ,,、r'_ ヽ. ゙i, | /ゝl:.l, ":.:.:.:.:.:.:.:.:.:.:::::::::::::|:.:.:.
! ,ri-、-‐、ッ_、ー-r'' <,"ゞ'ノ'' |.:.ヽ. ゙i, ,r=,、i, i,ヽ,゙i'i :.:.:.:.:.:.:.:.:.:.:.:::::::::::::|:.:.:.
,! ,r':.:|i,  ̄ _,r--、,  ゙̄` ,|:.:.:.:.|ヽ.〉''ゝ=ノ゙i, ヽ.)i,! .:.:.:.:.:.:.:.:..:.:.:.::::::::::|:.:.:.
,! /:.:.:.:i ゙i、 ,r'" l `ヽ、_/::l:.:.:.:.:|,:' ,.:' . ゙i, λ .:.:.:.:.:.:.:.:.:.:.:.:.:.::::::!;:;:,、
!. /;;l.:.:.:.:.i `" l :::,!:.:.:.:./'t._,.:'l `‐'|', .:.:.:.:..:.:.:.:.:.:.:.:.:.:.:.::':':'
!/;;;;;;l:.:.:.:.:゙i, l ::,!:.:.,:''t./;;;;| | :':, .:.:.:.:.:.:.:.:,,_____
〈;;;;;;;;;;゙:,:.:.:.:.:゙i, ,! .:/,.,:' ,:':;;;;;;;;;,! | :.:.':、 .:.:.:.:.:.:.:.:.:. ̄ ̄ ̄
゙i,;;;;;;;;;;;;':,:.:.:.:.i'i, t ,/:'!,''-');;;;;;;;;;/ . | :.:.:.ヽ. .:.:.:.:.:.:.:.:.:.:;;;;;;:.:.:
゙i,;;;;;;;;;;;;゙ヽイ ゙:, ', ,r',:' ,:';;;;;;;;;ノ . | .:.:.:.:.:゙:、 .:.:..:..:.:.:.:.:.:.:.:.:.:
ヽ、;;;;;;;;;;;| ヽ、 _,,ノ,ri、、_,,:';;;;;;/ r.'! .:.:.:.:.;;::゙:、:.:.:.:.:.:.:.:.:.:.:.:.
「ふっ・・・冗談はよせ」
「兄上も意外とあまい様で・・・・。」
0334デフォルトの名無しさん
2008/09/12(金) 04:26:31しばらくPCでネット出来なくて、、
0335デフォルトの名無しさん
2008/09/12(金) 06:34:30心配やったら魚拓とっとけ
0336デフォルトの名無しさん
2008/09/12(金) 09:56:18自前の処理系では通るよ。
そのdefineはトップレベル束縛。
常識的に考えてbeginにスコープはない。(begin != (let () ...))
0337デフォルトの名無しさん
2008/09/12(金) 11:23:04beginはlambdaから導出されるよ
でも定義は書けないよ
しかもトップレベルのbeginは導出式じゃないよ
なんて書かないで
(CLで言う所の)特別式ってことにすればいいのに
0338デフォルトの名無しさん
2008/09/12(金) 11:41:300339デフォルトの名無しさん
2008/09/12(金) 12:10:14特殊形式を少なくするってのも、
Schemeの初期の設計方針の一つだったからねえ。
意外とトップレベルの意味はややこしくてR6RSへって流れじゃないですかね。
0340デフォルトの名無しさん
2008/09/12(金) 12:26:20Lisperはいつだってそうだ
0341デフォルトの名無しさん
2008/09/12(金) 12:32:30え?
0342デフォルトの名無しさん
2008/09/12(金) 12:40:100343デフォルトの名無しさん
2008/09/12(金) 13:29:24導出できる物はマクロでもいいけど
定義込みのbeginはトップレベルでなくても導出できない
必須だけど導出できない物はプリミティヴで用意しなくてはいけない
beginは必須(マクロ展開後に必要だったりするから)
なのにR5RSまでではbeginがあまりに宙ぶらりん
R6RSはまだよく読んでないけど
0344デフォルトの名無しさん
2008/09/12(金) 16:16:08前スレでの話
http://pc11.2ch.net/test/read.cgi/tech/1211381920/327
>723 名前:デフォルトの名無しさん 投稿日:2008/06/18(水) 23:37:58
>Scheme初心者の俺が通りますよ
>質問なんだけど、トップレベルってなんか特別なの?
>
>(define cc #f)
>
>;A
>(display (call/cc (lambda (c) (set! cc c) (cc 'hoge))))
>(display 'fuga)
>(cc 'moga)
>
>;B
>(begin
>(display (call/cc (lambda (c) (set! cc c) (cc 'hoge))))
>(display 'fuga)
>(cc 'moga)
>)
>
>トップレベルでこーやったとき、Aが無限ループにならないのにBが無限ループになるのが理解できないの...
当時は「Lisperさん」が暴れてて話が途切れてしまったと思う。
0345デフォルトの名無しさん
2008/09/12(金) 16:18:10× http://pc11.2ch.net/test/read.cgi/tech/1211381920/327
○ http://pc11.2ch.net/test/read.cgi/tech/1211381920/723
0346デフォルトの名無しさん
2008/09/12(金) 17:37:51Common Lispスレからわざわざ来て「SchemeはLispではない」という人いるね。
推薦図書スレで他の言語厨に同じことやって切れられたんだったね。
0347デフォルトの名無しさん
2008/09/12(金) 18:02:36たぶん、MITとUCBの考え方の違いを言いたいんだろう。
0348デフォルトの名無しさん
2008/09/12(金) 18:18:16素朴な実装の処理系なら普通は通ると思うけど、
少なくともR5RSを目指している処理系では本当は通っちゃだめなんじゃ?
0349デフォルトの名無しさん
2008/09/12(金) 18:48:20自分は336じゃないしRnRSでは通っちゃいけないと思うけど
(define x #f)
(define (foo) (set! x hoge) ...)
みたいなダサい書き方はどうにかならないか、とも思う
CLだと簡単な
(let ((x piyo))
(defun foo () xにアクセスしたり変更したりするコード)
(defun bar () xにアクセスしたり変更したりするコード))
みたいなことがどうしてできないのか、せっかくのレキシカルクロージャなのに、とも
0350デフォルトの名無しさん
2008/09/12(金) 19:20:18古いSchemeでは出来たんですよ。
0351デフォルトの名無しさん
2008/09/12(金) 19:43:55を評価すると定義の後にexpressionがないといって怒られますが、
なぜ定義だけで終わったらだめなんでしょうか。
意味がないからでしょうか。
0352デフォルトの名無しさん
2008/09/12(金) 20:31:58理解した。
0353デフォルトの名無しさん
2008/09/12(金) 20:46:13⇒lambda: bad syntax in: (lambda ())
((lambda () ))
⇒lambda: bad syntax in: (lambda ())
((lambda () (define x 1)))
⇒begin (possibly implicit): no expression after a sequence of internal definitions in: ((define x 1))
((lambda () (begin (define x 1))))
⇒begin (possibly implicit): no expression after a sequence of internal definitions in: ((define x 1))
((lambda () (begin (define x 1) x)))
⇒1
((lambda () (begin x)))
⇒reference to undefined identifier: x
((lambda () (begin 1)))
⇒1
((lambda () (begin )))
⇒begin (possibly implicit): bad syntax (empty form) in: (begin)
0354デフォルトの名無しさん
2008/09/13(土) 02:55:51>MITとUCB
R6RSを推進してる連中はもっと考え方が違うけどな。
0355デフォルトの名無しさん
2008/09/13(土) 03:06:44なんか質問しっぱなしだね。分かったのかまだ疑問が残ってるのか・・・
defineじゃなくトップレベルのbeginの話だってのはおk?
0356デフォルトの名無しさん
2008/09/13(土) 04:21:52区別するのはdefineの方だろ
0357デフォルトの名無しさん
2008/09/13(土) 05:08:46普通はxを外に出さずにこうするだろ?
(define foo nil)
(define bar nil)
(let ((x piyo))
(set! foo (lambda () ...))
(set! bar (lambda () ...)))
マクロでくるんで簡単そうに見せるのもなんとかなりそうな気はする。
0358デフォルトの名無しさん
2008/09/13(土) 05:31:46>beginを特別扱いするのやめろよ
理由は?
0359デフォルトの名無しさん
2008/09/13(土) 05:36:02symbol/variableは存在することにしてくれたら、
意味のある値を設定する前に参照するバグを、
実行時に補足できるのにな。
>>356
トップレベルのbegin特別扱いがないと、
マクロ等でちょっと厄介。例えば>>357。
0360デフォルトの名無しさん
2008/09/13(土) 05:58:44(define foo nil)
⇒reference to undefined identifier: nil
こんなん出ましたw
0361デフォルトの名無しさん
2008/09/13(土) 06:23:05(syntax-rules ()
((_ a)
(begin
(display a)
(newline)))))
(define-syntax foo!
(syntax-rules ()
((_ a) (set! a "foo"))))
(define-syntax bar!
(syntax-rules ()
((_ a) (set! a "bar"))))
(let ((x 'piyo2))
(display-line x)
(foo! x)
(display-line x)
(bar! x)
(display-line x))
0362デフォルトの名無しさん
2008/09/13(土) 06:26:51(define-syntax foo!
(syntax-rules ()
((_ a) (set! a "foo"))))
(define-syntax bar!
(syntax-rules ()
((_ a) (set! a "bar"))))
(display-line x)
(foo! x)
(display-line x)
(bar! x)
(display-line x))
0363デフォルトの名無しさん
2008/09/13(土) 09:13:220364デフォルトの名無しさん
2008/09/13(土) 10:50:35使えますが何か?
0365デフォルトの名無しさん
2008/09/13(土) 10:52:090366デフォルトの名無しさん
2008/09/13(土) 12:15:52define-syntaxは*R5RS処理系では*トップレベルでしか使えない、でよろしいか?
0368デフォルトの名無しさん
2008/09/14(日) 06:21:04bodyがないということで怒られるんだよ。
最近のやつって細かいことにうるさいけど、
肝心のプログラムは作ってるのか?
0369デフォルトの名無しさん
2008/09/14(日) 07:25:20空理空論にとりつかれる奴はプログラム作ってるか作ってないかに関係ない
まあ共通点は理屈をしっかり勉強してない奴だな
0370デフォルトの名無しさん
2008/09/14(日) 12:41:42納得しました。
> 肝心のプログラムは作ってるのか?
インタプリタを書いているんです。
質問した式は、素朴に実装した処理系なら普通通ると思いますし、
通ってもそんなに問題にならない気がするのに、DrSchemeでは通らないので疑問に思って質問しました。
確かに細かいことかもしれませんが、だからこそ気になるものじゃないですか?
なぜこんなものまで検出するように実装してあるのかと。
0371デフォルトの名無しさん
2008/09/14(日) 12:52:03考え方もあるのだ。
0372デフォルトの名無しさん
2008/09/14(日) 14:52:13曰く、
「今日紹介する Allegro eli (Emacs Lisp Interface) はわたしに取って最も大きな理由の1つになります。」
Emacs LispってANSIスタンダードだっけ?
「implementation が言語の semantics を決めるような言語 (perl, ruby, python, etc) は、まじめな開発には使うべきではない。」
implementationが言語のsemanticsを決めているEmacs Lispで書かれた拡張はOK?
それともエディタ類はimplementation が言語の semantics を決めるような言語を使ってても良い?
良く分かんないや。
この論法からすると、Allegroで書かれたエディタ以外ではCLのプログラムさえ書いちゃいけない希ガス
0373デフォルトの名無しさん
2008/09/14(日) 15:19:310が偽をあらわさない。
これは実用面から見ると相当マヌケな仕様でジョークのネタくらいにしかなりません。
> Scheme はその仕様に iteration を持ちません。
call/ccでループすればいいのでは?
> single name space に固執するのは、単に funcall を使いたくないだけ、というひどく 下世話な理由 のみによるのではないかとわたしには思えてなりません。
> そのわりには apply に拒否反応を示さないという自己矛盾に気がついている Schemer というのは少ないように見えます。
(foo x y z) = (funcall #'foo x y z)じゃなくて
(foo x y z) = (funcall foo x y z)ならfuncallがあってもいい。
Schemeのapplyは(foo x y z)を(apply #'foo '(x y z))なんて書かない。
0374デフォルトの名無しさん
2008/09/14(日) 15:20:160375デフォルトの名無しさん
2008/09/14(日) 15:30:43ギャグのつもりで言った/書いたのに真面目にとられて大弱り
いまさらギャグでしたとも言えないし
0376デフォルトの名無しさん
2008/09/14(日) 15:43:200377デフォルトの名無しさん
2008/09/14(日) 16:23:17プロダクトとして残るものを何で作るかとそれを作り上げるために使う道具との
区別もできないのか。一生バイナリエディタでマシンコード直接入力でもやってろ。
0378デフォルトの名無しさん
2008/09/14(日) 16:35:120379デフォルトの名無しさん
2008/09/14(日) 17:18:230380デフォルトの名無しさん
2008/09/14(日) 19:06:510381デフォルトの名無しさん
2008/09/14(日) 21:21:120382デフォルトの名無しさん
2008/09/14(日) 21:48:010383デフォルトの名無しさん
2008/09/15(月) 03:02:51| \
| // / ̄ ̄ \ ズン \乂八 へ
|//| (([]匚●二])) ∧ ズン | \ | | \|||/
|ゝ| ̄ ̄|7 (((((曰)))))/ ヽ> | ) | |\ \ が G /
| ____ |=_ ) 丿 ι( || | ― き a ―
| |II II II II II|(〇 /◆く丿ヽ/ / ) | | | ― た u ―
|()⌒| ̄\/_/へ / | ι ( 丿 | ― ぁ c ―
|人(ξ厂1、巛《丿ー′ | ι ( // ― ! h ―
| L「 \ | | \/ イ / e \
| /|| \◎ || ||\ | 丿人 /|||\
| / || || | ̄| || || | \ )
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ \ ん
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄\ / ____
/ ̄ ̄ ̄ ̄ ̄ ̄
/
0384デフォルトの名無しさん
2008/09/15(月) 03:03:46―――――――――――――――――――― ―――――――――――――
____ __ ぶちっ!!! _ _ \卩/―へ__ _______
/|| ⌒ゝ―( )IIIIIIつミ  ̄ ̄ ̄ ̄ ̄――― \/| ▽▽ __ \――――――
|/\]二( )IIIIIつミ  ̄ ̄ ̄ ̄ ̄ ̄――― ///\ [] | \ 」―――――
_\ \ _____――――― ///―― \ |_――U―― ――
L\ \ \ーヽ ______― / ̄し ――― ロ|v|ロ 〕――――――___
\/ 〉/_◎く|| 〜巛〈っ / 凵 \
___ \/\ ^( \_____ 〜 __/ / \ \_________
 ̄ ̄ \_く||_ \_/>、  ̄ ̄――――― / ̄/◎___\ \ _______
_____ ξ◎( L二二l_______ |/ 丿____ \ \_______
――――― (ξ \_ ―――――____ / //______ \ \――――― -
______\_/\ヽ\__―――――― l二> ̄ ̄ ̄ ̄―――
\ ̄ ノ /二/ニ|
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄  ̄  ̄ ̄ ̄ ̄ _ ̄ ̄ ̄ ̄ ̄ ̄ ̄  ̄ ̄ ̄ ̄ ̄ ̄ ̄  ̄ ̄ ̄ ̄ ̄
0385デフォルトの名無しさん
2008/09/15(月) 03:06:13=<## / / ̄ ̄ ̄
___//_|_/__/
_ヽ〓\ _/γ⌒ヽ ____
// //ヨコ.人_ ̄ノ _//∋.ヽ ̄ ̄ヽ
\\__\\ヨコ_/ ̄ ̄\\∋ノノ__ノ
 ̄  ̄  ̄ ̄ ̄ ̄
「高速で接近する機影があります」
「ザコか?」
「ありえません。通常のザコの3倍のスピードです。」
「ガ、ガウチェだ、、赤い彗星のガウチェだ、逃げろ!」
0386デフォルトの名無しさん
2008/09/15(月) 03:07:11ズ. \ . / /
ゴ \ / /
ォ \ | / /
ォ |
_____、 / ̄‖ ̄\ ∧
... / // _(((′ ‖ ...)))__ / ∧
/ // ((( ||\__/|| ))) /⌒⌒⌒ \
/____// (((\\ ● //))) し
|/―――― (((((((( ̄ ̄)))))))) し )
||Γ ‖ /___. . \――/ ___し ノ
||| ‖l l [Е∃]/ l |_ V ノ
|||_... l__ l . l __l /
|| \ \.. \ ̄\ / ̄/ / /
/ / ゴ \
/ / ォ \
/ // ォ \
「見せてもらおうか、連邦のR6RSの性能とやらを」
0387デフォルトの名無しさん
2008/09/15(月) 03:08:47| _______ | 「プログラミングしてる最中に、どうやってバグに
| | . || 気を付けろって言うんですか?」
| | / ノノ人..ヽ | | 『大丈夫、あなたなら出来るわ』
| |/ б б \| |
| |\... 人ー人 /| | 「・・・おだてないでください、、。」
| |__.______| | 『カタパルトへ!』
|______□□□|
0388デフォルトの名無しさん
2008/09/15(月) 03:14:43/ ̄ \ ∧)\
| : あ | ノ | | \ / ̄\
| : | /| | | | )人 | お |
| セ あ | / | | |丿 ノ ) | 高 |
| イ ん | / 丿 丿 丿丿 | く |
| ラ た | /ι  ̄ ̄\ )) ∠二 丿 | と |
| と : | /| :( ̄ ゚̄ ̄厂 「く ゚丿: | ま |
| か : | | 入__ノ | ー l⌒I | り |
| い > |ι 〃∵ | ∵l⌒I |ヽ | や |
| っ | ̄ ̄ ̄λ ∵ | | ||| < が |
| た | / | 〜~ | ||| | っ |
| よ | / | -―――′ / / | | | て |
| な | / |\ ´ / / /| \_/
\___/ /丶 | 丶_ / / / /
V ヽ | l′ ′´ 〉
| | /
0389デフォルトの名無しさん
2008/09/15(月) 05:55:200390デフォルトの名無しさん
2008/09/15(月) 17:30:260391デフォルトの名無しさん
2008/09/15(月) 21:16:23 ̄ ̄\|/ ̄ ̄
| / ̄ ̄\ / ̄ ̄\ |
. | \__/ \__/ .|
.|_____/\_____.|
| | ゝ | .|
|. | _____ | |
|... 人 ⌒ ノ |
「このタイミングでの継続は古今例がない。」
0392デフォルトの名無しさん
2008/09/15(月) 21:17:11////////////ォ。//*/炎//.//.。//////τ///゜。//*/.//。,////*/
///////。:/ォ// ヽ//σ/*///////ζ//゜///。、//.゜////////ォ/
/////.///ボ ∠=_ ヽ ))))//\摩擦\ /、。////,//・。、/ォ//
///炎___‖| ● |[] ))))/γ ⌒ ヽ \,////.:/.///////ォ////
///| | ̄ ̄ /[Εヨ]))))))__( 》≫、////.///:;/:///ォ/////
///| |/ // / ̄.. ..Γ 人___ノ\。/.・:/./://///ォ///*//
/.. |/ ̄/ /⌒| |⌒‖ ζ熱�=_ \\/、。*//////ォ///.////
//// /.\\|| \/(((((ノ炎/ γ⌒ ◆ヽ///*///ゴ/////////
//⌒ ))//(((((( ̄ ̄((((((((ノ ///..( ○ ヽヽ////////)))////。
/ ○////ォ/|‖| |‖|\\\///\ //////爆\\)))//、//
三/////ォ/// |‖| |‖|\\\\ /////◆―◎ ))))) 。//
///////ォ/////|_‖L_L‖|\\\//////;/◆◆ ̄し))))//
//////ォ///////// \ \ \/./:)))///\ \/
/////ォ/////////////\ \____\))))//////\/ ̄/\_ゝ
////ゴ////////////////((\◆ ◎_/////////////. / ..// //
「少佐ぁ!トップレベルで継続できません!!!!助けてくださいぃ!!!
shiro少佐ァァァァァッ!!shiroうわぁぁぁっぁぁっぁっぁぁっぁあーーーっ!」
0393デフォルトの名無しさん
2008/09/15(月) 21:22:240394デフォルトの名無しさん
2008/09/15(月) 21:25:09‖ _ ‖
|│─ ̄| | ̄│ |_
|│ │ | | | \
/|│_ | |_ | | \
| | │ | │ │
| ──/ \─^ |
| < \ / ̄ ̄> │
| ─__∨__─ヽ \ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
│| <二> <二>\ ヽ < 「すまないクラウン、、、、ザコにはトップレベルで
// |___/ ̄ヽ__/| \ | 継続をする能力は、、ない。だが、貴様の死はムダ
/ ヾヽ └ /(‖ | | ではないぞ。R6RSを道ずれにしたのだからな。
\__|\  ̄ ̄ /( |_─ ̄ \_______________________
ヽ|\__/ |丿
0395デフォルトの名無しさん
2008/09/15(月) 21:29:49(if (面白い? 'ガンダム) '継続でおk)
0396373=374
2008/09/15(月) 21:44:56372さんの黒田さんネタに373-374でジョークネタで便乗したのがいけなかったんだろうか
だとしたらごめんなさい
0397デフォルトの名無しさん
2008/09/15(月) 21:55:370398デフォルトの名無しさん
2008/09/15(月) 22:00:03道づれ
道連れ
0399デフォルトの名無しさん
2008/09/15(月) 22:11:440400デフォルトの名無しさん
2008/09/15(月) 22:45:100401デフォルトの名無しさん
2008/09/15(月) 23:03:31そう思ってるなら刺激するなYO!
一般的に逝って、脈絡もなく出る罵倒(として使っている)単語は、
その人のコンプレックスを表している。
0402デフォルトの名無しさん
2008/09/16(火) 07:58:00忙しければ自然とスルーをするけど、時間が余ってれば持て余すからな。結局
そうゆうことだとおもうよ。
さてネタを振るか…。
common lispではslime@emacsがあるけど、schemeではなにをつかってるの?
みんな!
0403デフォルトの名無しさん
2008/09/16(火) 08:14:56slime使ってるけど何か?
0404デフォルトの名無しさん
2008/09/16(火) 15:49:26無効なポインタ参照して落ちてる
$ cat foo.scm
$ mosh -l foo.scm
と空のファイルを食わしてもそうなる
どうなってるんだmosh…
amd64 linux環境なのがいけないのだろうけど、x86 linuxでコンパイルしたmoshは普通に使えるし、
gaucheやpltscheme、chicken、stalinは普通にコンパイル実行できるし
0405デフォルトの名無しさん
2008/09/16(火) 16:16:24分かることと言えばC++で書かれているとかその程度
0406デフォルトの名無しさん
2008/09/17(水) 01:30:40ポインタの扱いがまずい。
64bit CPUが存在しなかった時代のコードにそういうのがいっぱいある。
moshは…
0407デフォルトの名無しさん
2008/09/17(水) 22:43:4764bit環境でプログラミングした事ないからよくわかりませんが
(128bit環境ならありますが)
0408デフォルトの名無しさん
2008/09/17(水) 22:46:310409デフォルトの名無しさん
2008/09/17(水) 23:18:320410デフォルトの名無しさん
2008/09/17(水) 23:43:020411デフォルトの名無しさん
2008/09/17(水) 23:56:560412デフォルトの名無しさん
2008/09/18(木) 08:30:55つエミュ
0413デフォルトの名無しさん
2008/09/18(木) 20:38:11らしいよ。
0414デフォルトの名無しさん
2008/09/18(木) 21:59:46Forthの楽しさとS式の美しさを併せ持ったって感じで。
Schemeで実装するのは簡単なのでCでチャレンジしてます。
当面の目標はシンボルと空リストとペアだけで純Lispならぬ純Schemeです。
とりあえずコピーGCだけ形にしました。
最初はペア書換なし+参照カウントで行こうと思ったのですが
再帰の効率が悪いのと後々遅延評価を取り入れたいと考えたのでGCに変更しました。
0415デフォルトの名無しさん
2008/09/18(木) 23:55:53関数を呼べるようにしようとか思うと継続との絡みを考えないわけには
いかないよね。どう解決してるの?
0416デフォルトの名無しさん
2008/09/18(木) 23:59:26http://practical-scheme.net/docs/stack-j.html
0417デフォルトの名無しさん
2008/09/19(金) 00:25:36CのスタックとSchemeのスタックは全く別のものだと思えば簡単。
それで困ることはほとんどない。
0418デフォルトの名無しさん
2008/09/19(金) 00:50:12>ttp://pc11.2ch.net/test/read.cgi/tech/1211381920/588
>>>265のambをlet-syntaxするマクロを書いたら、`...' が衝突した
>http://codepad.org/FhFcRNhU
>こうですか?わかりません!
>http://codepad.org/DOhmrD4x
>
>ttp://pc11.2ch.net/test/read.cgi/tech/1211381920/589
>http://codepad.org/DsQGNTC2
>
>ttp://pc11.2ch.net/test/read.cgi/tech/1211381920/590
>PLTの拡張かと思ったがR6RSに書いてあった。
って話があった。
そのヒントに使ってケント.デヴィグ著「プログラミング言語Scheme」p.170を書き換えると
http://codepad.org/yvwb6wvY
こんな風にdoを書くことができた。
そんで思い出したが、Reasoned Schemerのパターンマッチの話でも... ...の置き換えがキモイって言ってたね。
で、調べてみたらココ
http://practical-scheme.net/wiliki/wiliki.cgi?sasagawa%3A%E6%95%B0%E5%BC%8F%E5%87%A6%E7%90%86
でも同じことやってた。でも"step"なんてやってる。
hygienic macroで(... ...)はこう使うのっておかしいのかな?
0419デフォルトの名無しさん
2008/09/19(金) 01:03:45SchemeとCを相互に呼べるようにしようと思うと
Schemeから呼んだCの中でScheme呼べるようにしたいし
その中で捕捉した継続が外側のSchemeから見えてしまう可能性あるじゃない。
0420デフォルトの名無しさん
2008/09/19(金) 01:07:19"step"を使った例はR5RSやR6RSのサンプルだね。
ttp://practical-scheme.net/wiliki/wiliki.cgi?R6RS%3A%E7%BF%BB%E8%A8%B3%3AStandard%20Libraries%3A5%20Control%20structures
0421デフォルトの名無しさん
2008/09/19(金) 01:19:25Part.21の319-330でそんな話があった。
... ...の置き換えじゃなくて、...が0個でもマッチするとかいう話。
0422デフォルトの名無しさん
2008/09/19(金) 04:35:27http://www.yuasa.kuis.kyoto-u.ac.jp/~nobu/study/palm/chap1.html
http://www.yuasa.kuis.kyoto-u.ac.jp/~nobu/study/palm/chap2.html
http://www.yuasa.kuis.kyoto-u.ac.jp/~nobu/study/palm/chap3.html
http://www.yuasa.kuis.kyoto-u.ac.jp/~nobu/study/palm/chap4.html
http://www.yuasa.kuis.kyoto-u.ac.jp/~nobu/study/palm/chap5.html
http://www.yuasa.kuis.kyoto-u.ac.jp/~nobu/study/palm/chap6.html
http://www.yuasa.kuis.kyoto-u.ac.jp/~nobu/study/palm/chap7.html
http://www.yuasa.kuis.kyoto-u.ac.jp/~nobu/study/palm/chap8.html
0423デフォルトの名無しさん
2008/09/19(金) 04:40:47http://codepad.org/DsQGNTC2
にpush!とpop!があるのか。Gaucheにもあるし、解決。
0424デフォルトの名無しさん
2008/09/19(金) 17:00:42極端な話、SchemeからCを呼ぶときは別のスレッドを走らせることにすると
Cの関数を挟む形で継続を捕捉することがなくなる。
・古いスレッドは新しいスレッドが終了するまで待機
・新しいスレッドの継続に古いスレッドの情報は含まれない
・新しいスレッドで古いスレッドの継続を呼ぶと古いスレッドが2個あるような状態になる
という感じで自然に辻褄が合う。
スレッドを使わなくても、難しいこと何も考えないで実装すればこれと同じ振る舞いになるはず。
Cの関数はRnRSの範囲外だから、どんな振る舞いだろうと問題ないと思う。
0425デフォルトの名無しさん
2008/09/19(金) 22:21:54http://www.blue.sky.or.jp/grass/doc_ja.html
こんなのが。
0426デフォルトの名無しさん
2008/09/20(土) 19:35:19(define-syntax for
(syntax-rules ()
((_ (var start stop) body ...)
(do ((var start (add1 var)))
((> var stop))
body ...))))
こっちのforは動きません。
(define-syntax for
(syntax-rules ()
((_ (var start stop) body ...)
((do ((var start (add1 var))
(limit stop))
((> var limit))
body ...)))))
どうしてでしょうか?
これは動きます。
(do ((var 1 (add1 var))
(limit 10))
((> var limit))
(display var)
(newline))
0427デフォルトの名無しさん
2008/09/20(土) 19:38:31(display i))
0428デフォルトの名無しさん
2008/09/20(土) 19:48:480429デフォルトの名無しさん
2008/09/20(土) 20:03:00__(syntax-rules ()
_____((_ (var start stop) body ...)
______(do ((var start (add1 var))
____________(limit stop))
___________((> var limit))
________body ...))))
0430デフォルトの名無しさん
2008/09/20(土) 20:11:13あ、恥ずかしいw
もちろん非意図的です。
ありがとうございます。
0431デフォルトの名無しさん
2008/09/20(土) 20:36:47__(syntax-rules ()
____((_ (var start stop) body ...)
_____(let ((continue #f)
___________(var start)
___________(limit stop))
_______(call-with-current-continuation
________(lambda (x)
__________(set! continue x)))
_______(unless (> var limit)
_________body ...
_________(set! var (+ var 1))
_________(continue))))))
こんな風に書かないと黒田さんに怒られるかも
これならtail recursionじゃなくてiteration
(もちろんジョーク)
0432デフォルトの名無しさん
2008/09/20(土) 20:42:04(define-syntax for
(syntax-rules ()
((_ (var start stop) body ...)
(let ((gstop (gensym)))
(do ((var start (add1 var))
(gstop stop))
((> var gstop))
body ...)))))
0433デフォルトの名無しさん
2008/09/20(土) 20:45:32syntax-rulesではgensymを使わなくても変数キャプチャは起こらない
マクロテンプレートの展開より先に評価するトリックはない(はず)
あれば保健的じゃなくなるし
0434デフォルトの名無しさん
2008/09/20(土) 20:49:55syntax-caseでも心配ないの?
0435デフォルトの名無しさん
2008/09/20(土) 20:52:130436デフォルトの名無しさん
2008/09/20(土) 20:58:27stepに対応したバージョンを考えたw
(define-syntax for
(syntax-rules ()
((_ (var start stop) body ...)
(do ((var start (add1 var))
(limit stop))
((> var limit))
body ...))
((_ (var start stop step) body ...)
(do ((var start (+ step var))
(limit stop))
((> var limit))
body ...))))
0437デフォルトの名無しさん
2008/09/20(土) 21:02:09(display i)
(newline))
0438デフォルトの名無しさん
2008/09/20(土) 21:04:29リードマクロ
0439デフォルトの名無しさん
2008/09/20(土) 21:10:45__(syntax-rules (= to step)
____((_ var = start to stop step i body ...)
_____(do ((var start (+ var i))
___________(limit stop))
__________((> var limit))
_______body ...))
____((_ var = start to stop body ...)
_____(do ((var start (+ var 1))
___________(limit stop))
__________((> var limit))
_______body ...))))
(for i = 0 to 10 (print i))
(for i = 0 to 10 step 3 (print i))
0440デフォルトの名無しさん
2008/09/20(土) 21:13:38__(syntax-rules (= to step)
____((_ var = start to stop step i body ...)
_____(do ((var start (+ var i))
___________(limit stop))
__________((> var limit))
_______body ...))
____((_ var = start to stop body ...)
_____(for var = start to stop step 1 body ...))))
このほうがいいか
0441デフォルトの名無しさん
2008/09/20(土) 21:16:12(let ((to #f))
(for i = 0 to 10 (print i)))
は動きません(マクロ使用内リテラル識別子toの束縛がマクロ定義中の束縛と違うから)
もちろんtoが=でもstepでも同じ事です
0442デフォルトの名無しさん
2008/09/20(土) 21:33:35それいいね。
0443デフォルトの名無しさん
2008/09/21(日) 20:06:420444デフォルトの名無しさん
2008/09/22(月) 06:17:30http://q.hatena.ne.jp/1221708568
0445デフォルトの名無しさん
2008/09/22(月) 06:41:30なんていうか、微妙にコミュニケーションスキルの足りない困った人の宴に
Schemeが巻き込まれて可哀相、みたいに思った。
でも、そんなに不正解者が多いのか、そのQ1・・・ちょっと驚き。
0446デフォルトの名無しさん
2008/09/22(月) 07:30:42これ正しい選択肢ないよね。Schemeに関数無いし。
0447デフォルトの名無しさん
2008/09/22(月) 08:12:54釣り針大き杉www
0448デフォルトの名無しさん
2008/09/22(月) 08:14:03これってプログラミング全然関係ないしwww
0449デフォルトの名無しさん
2008/09/22(月) 08:44:490450デフォルトの名無しさん
2008/09/22(月) 10:14:01驚くんじゃなくて、
はてなで答えたくてうずうずしている人たちのレベルが、
そういうものなんだという理解をすべき。
ってなんかそこのコメントみたいなレスになっちゃったw
0451デフォルトの名無しさん
2008/09/22(月) 10:34:05いや、まともな奴はQ1を読んで「馬鹿だコイツ」と判断してポイだろw
0452デフォルトの名無しさん
2008/09/22(月) 10:43:59ここのQ1も選択肢が^^;
0453デフォルトの名無しさん
2008/09/22(月) 10:48:15nishioがschemerだと思われてしまってるところに、怖いです。pythonの人でしょう?
0454デフォルトの名無しさん
2008/09/22(月) 11:08:43話題にしない方がいいのでは。
逆上して荒されそうな。
0455デフォルトの名無しさん
2008/09/22(月) 11:09:38完全にギャグだな
0456デフォルトの名無しさん
2008/09/22(月) 11:16:59schemerへの風当たりを強くしてくれたからね。
0457デフォルトの名無しさん
2008/09/22(月) 11:19:430458デフォルトの名無しさん
2008/09/22(月) 14:30:54適当に答えてるとしか思えないな。
参考→ ttp://d.hatena.ne.jp/tilfin/20080522/1211510834
履歴見たらshiroさん色んな所で回答しまくってるな。好きなのかな。
それにしてもピアノうますぎ吹いた
0459デフォルトの名無しさん
2008/09/22(月) 17:13:460460デフォルトの名無しさん
2008/09/22(月) 17:54:460461デフォルトの名無しさん
2008/09/22(月) 18:03:470462デフォルトの名無しさん
2008/09/22(月) 18:26:100463デフォルトの名無しさん
2008/09/22(月) 18:27:410464デフォルトの名無しさん
2008/09/22(月) 18:41:18http://d.hatena.ne.jp/nishiohirokazu/20080917/1221667941
http://d.hatena.ne.jp/nishiohirokazu/20080918/1221708888
釣られてる連中必死だなw
0465デフォルトの名無しさん
2008/09/22(月) 19:53:16システム的にああなるのは明らかなことで
すでに他の人も指摘してる
つまらん遊びはSchemeと関係ないところでやってくれ
0466デフォルトの名無しさん
2008/09/22(月) 20:05:55(if (ネタ? 'Scheme) 'その釣り針で吊れますか?)
0467デフォルトの名無しさん
2008/09/22(月) 22:41:280468デフォルトの名無しさん
2008/09/22(月) 22:54:140469デフォルトの名無しさん
2008/09/22(月) 23:06:530470デフォルトの名無しさん
2008/09/22(月) 23:37:24はてな出身者がScheme処理系で売り出し中なわけだが。
0471デフォルトの名無しさん
2008/09/22(月) 23:42:390472デフォルトの名無しさん
2008/09/22(月) 23:50:280473デフォルトの名無しさん
2008/09/23(火) 00:11:30はてな村が母体なの?こりゃ駄目だな
0474デフォルトの名無しさん
2008/09/23(火) 00:26:08結構、致命的?
0475デフォルトの名無しさん
2008/09/23(火) 00:29:570476デフォルトの名無しさん
2008/09/23(火) 00:40:400477デフォルトの名無しさん
2008/09/23(火) 01:05:28↓
学生に教えるのに良い言語は?
Coq>Haskellとかいう有り得ない結果
↓
追試だ!
↓
『第一問に答えられない人は答えないで!』
→Scheme は多くのサーバに設置されてるらしい
↓
仮説立証
→問題文読まない子逆ギレ
0478デフォルトの名無しさん
2008/09/23(火) 01:14:43アラン・ケイと飯食ったって話はwilikiに詳しく書いてくれるかな。
ちょっと期待。
0479デフォルトの名無しさん
2008/09/23(火) 02:02:480480デフォルトの名無しさん
2008/09/23(火) 02:30:20「実用規模のコードを書いたことがある言語」
がそもそもPythonとSchemeしかかぶっていない件について。
つまりまずは無駄な物を教えろという事ですかwww?
0481デフォルトの名無しさん
2008/09/23(火) 03:02:48基礎をちゃんと固めておけば、どんな言語でもそれなりに対応出来るように
なると思うですよ。
0482デフォルトの名無しさん
2008/09/23(火) 03:57:52ていう話がもっとでればおもしろかったのにねえ
0483デフォルトの名無しさん
2008/09/23(火) 04:03:580484デフォルトの名無しさん
2008/09/23(火) 06:42:59pythonは書くのも読むのも好きなほうだけど、なんだか悲しいよ。
0485デフォルトの名無しさん
2008/09/23(火) 08:20:370486デフォルトの名無しさん
2008/09/23(火) 08:50:23言語の進化・成長だろう。言語は時代とともに書き換えられて、
より現状に適した形態へと変化する、かね。カッコ良く言えば。
変化を拒んでいたら、取り残されるのは当然だよ。悲しいが。
いい加減転換の時期なんだ。
このままきれいなschemeに固執するのか、それともpythonの
生産性に匹敵するようなschemeにしてゆくのか。
0487デフォルトの名無しさん
2008/09/23(火) 09:28:030488デフォルトの名無しさん
2008/09/23(火) 09:52:05綺麗なインターフェイスが先行し実装がそれに従うというのは大嘘だな。
0489デフォルトの名無しさん
2008/09/23(火) 10:07:18pythonみたいに「バッテリーも付いてて生産性高いよ!」なんてのは
Schemeじゃ無理だ。
0490デフォルトの名無しさん
2008/09/23(火) 10:12:09> 慣れればRubyより生産性が高い
だってよ。
0491デフォルトの名無しさん
2008/09/23(火) 10:51:44> これだからScheme使いは非常識だって言われるんだよ。Lispなんてマイナー言語使うやついるわけねぇだろ。
じっくり読むとじわじわ面白味がわかってくるな、この一行w
0492デフォルトの名無しさん
2008/09/23(火) 11:11:240493デフォルトの名無しさん
2008/09/23(火) 11:24:24ねぇねぇ、>>440あたりの見ながらマクロ練習してんだけど、
defineとdefine-syantaxってどう使い分けるのか教えて。
実行速度とか違うもの?どっちが早いの?
インライン展開みたいな使い方ならマクロのほうが速いよね?
処理系によって逆転する程度の速度差なら気にしなくて良い?
0494デフォルトの名無しさん
2008/09/23(火) 11:28:47まず機能面を重視して学ぶべき。
0495デフォルトの名無しさん
2008/09/23(火) 11:30:120496デフォルトの名無しさん
2008/09/23(火) 11:53:20「より汎用性の高いパターン」はマクロ化して、特殊用途なら関数にまとめるってこと。
汎用性の高いパターンあたりの話を機能面と言ってる希ガス。
外してる?
0497デフォルトの名無しさん
2008/09/23(火) 11:59:54関数であろうとマクロであろうとどのような実装になるかは処理系ごとに違う。
速度に関してはどちらを選ぶべきかは実測しないとわからん。
言語としての一般的な作法としては可能である限りは関数として、
つまり define で定義する方が良いとされてる。
評価のタイミングをコントロールしたいとかいった、
関数では出来ないことが必要になったらマクロを使うのが普通。
0498デフォルトの名無しさん
2008/09/23(火) 12:36:13どうしても関数で出来ないことが出てきたらdefine-syntaxする。』
という判断基準を決めたと仮定してみる。
例えば、forの例で出てくる「body ...」や「step」といった可変長なことを
パターンマッチするのはdefine-syntaxでOK。
aprintもdefine-syntaxでOK。
でも四捨五入やkeisanは関数で良い。『汎用性の高いパターン』だけど関数で出来ない訳じゃない。
という理解で良いんでしょうか?
0499デフォルトの名無しさん
2008/09/23(火) 12:40:42マクロ化してインライン展開みたいな使い方で高速化出来るならマクロ化する。
というのも判断基準に加えておけば良いのかな?
0500デフォルトの名無しさん
2008/09/23(火) 13:05:01「引数評価」のキーワードが出てこないから失格です。
0501デフォルトの名無しさん
2008/09/23(火) 13:06:29バタフライ効果で大御所クラスの人間の脳まで汚染してゆく。
これがバブルか・・・
0502デフォルトの名無しさん
2008/09/23(火) 13:10:020503デフォルトの名無しさん
2008/09/23(火) 13:46:20マクロ練習してる香具師が最初から完璧に理解できてたらオマエ等自殺するしかないもんなw
0504デフォルトの名無しさん
2008/09/23(火) 13:47:20関数とマクロは本質的に違うものだ。 汎用的であるかどうかは全然関係ない。
なんでそこで「汎用性」を持ち出すのかまず説明しないと何を知りたいのか曖昧だぞ。
0505デフォルトの名無しさん
2008/09/23(火) 14:18:26「汎用的」って言葉を使ったのは「繰り返し良く使う共通パターンを抽出したもの」って意味で使いました。
で、そのパターンが「引数評価」の順番によって影響されるか考えてみる。
>>500
「引数評価」の順番はコンパイル時だから、マクロはその前だった。
もし、評価された関数の結果を使うようになってたらマクロ化は出来ない。
そういうときはその結果を除いた別のパターンを見つける。
それで、>>498-499みたいなことを考えるけど、最後まで妙な高速化は考えない。
早い時点で変な最適化をするのは一般的には悪影響を与えることが多いから。
こんな順番で考えるのかな?
0506デフォルトの名無しさん
2008/09/23(火) 14:26:250507デフォルトの名無しさん
2008/09/23(火) 14:35:270508デフォルトの名無しさん
2008/09/23(火) 14:38:32>>506
「引数評価をするかしないか」で使い分けるということか。
>>494が言ってた
>まず機能面を重視して学ぶべき。
というのも「引数評価をするかしないか」という話?
0509デフォルトの名無しさん
2008/09/23(火) 14:48:36などという考察を大真面目にしているブログを見つけて吹いた
0510デフォルトの名無しさん
2008/09/23(火) 14:50:39lambdaさえあれば没問題
0511デフォルトの名無しさん
2008/09/23(火) 14:51:120512デフォルトの名無しさん
2008/09/23(火) 14:56:30Exercise 1.6.にAlyssaがnew-ifを使ってsquare-rootを計算したら何が起こるか説明せよとあった。
Special Formの話。
http://codepad.org/OHXrT4yy
やってみると無限ループ。
特殊形式でないと、then部、else部ともに評価を終えた
後で、分岐を評価しようとするので、自分を呼び出す再
帰が使われている場合、無限ループになってしまうから。
じゃあ、特殊形式が必要なときにdefine-syntaxが必要になる?
0513デフォルトの名無しさん
2008/09/23(火) 15:10:10評価するってレベルじゃねーぞ
0514デフォルトの名無しさん
2008/09/23(火) 15:17:31http://codepad.org/3KaPqn6k
最初の例ではthen部かelse部が必ず無限ループになったが、
define-syntaxを使うことで回避できる。
0515デフォルトの名無しさん
2008/09/23(火) 16:03:14引数のsqrt-iterを次々と展開している。
関数の呼び出しは引数の評価が先に行われるが、
マクロの場合は先頭から展開されるため、このような形の再帰呼び出しはマクロではできない。
もっとも、new-if関数だって遅延評価で使えるようにできるが>>509が言うように、
IFステートメントがあるから遅延評価の機能を持ってると逆に考えてはいけない。
0516デフォルトの名無しさん
2008/09/23(火) 16:11:41Haskellなどの正規順序で評価する言語では異なる。
new-if関数のような問題は作用順序の言語で起こる。
0517デフォルトの名無しさん
2008/09/23(火) 16:13:580518デフォルトの名無しさん
2008/09/23(火) 16:37:10condがマクロじゃなければいけない理由は違うでしょ
0519デフォルトの名無しさん
2008/09/23(火) 17:42:45(define (sqrt-iter guess x)
(new-if (good-enough? guess x)
guess
(sqrt-iter (improve guess x)
x)))
sqrt-iterが次々と開かれるためにおこる。condは関係ない。
だからnew-if関数が遅延評価であっても同じく次々と開かれるので無限ループ。
>>515の遅延評価の機能を持ってると考えてはいけないのはそういう意味。
new-if関数は遅延評価で使えるようにできるわけではない。
0520デフォルトの名無しさん
2008/09/23(火) 17:59:40http://codepad.org/yt4cs2s9
new-if関数が>>514の時に無限ループにならないのは「if and only if」の条件になっている。
my-ifの場合のシンボルは特殊形式と同じ働きになる。
>>494の言っていた機能面とはまさにこのこと。
0521デフォルトの名無しさん
2008/09/23(火) 18:29:10特殊形式には今見た if のほかに lambda, define, quote, set! などがあります。
関数では、先頭要素が手続きだからそれ以外の要素を先に評価し、それから先頭の手続きに引数を適用します。
平たく言えばSchemeでのマクロとは、特殊形式を定義することに他なりません。
マクロは呼び出し時の形式がsyntax-rulesの形にひっかかったとき、本体が適用される仕組みですから、
sqrt-iterが次々と開かれるためにおこる無限ループを避けることが出来ます。
Common Lispでは特殊形式とマクロという区別があります(した?)が Schemeでは両方構文として扱われます。
0522デフォルトの名無しさん
2008/09/23(火) 18:54:48そうしないで特殊な処理をするのがシンタックス形式である。
特殊手続きじゃないnew-ifは、trueの時の式もfalseの時の式も両方簡約して
から評価しようとするため、sqrt-iterを再帰的に処理して引数を評価ようとする。
そのため無限ループに落ちいってしまう。
my-ifマクロではこのような簡約は起こらず、マクロ展開が行われてお仕舞である。
0523デフォルトの名無しさん
2008/09/23(火) 22:55:50(define (p) (p))
(define (test x y)
(if (= x 0)
0
y))
(test 0 (p))
最後の式を実行した時どうなるか?
正規順序で評価する(Haskellなどの言語の)場合、非演算子の(p)を
必要になるまで「完全に展開し、簡約しよう」とはしない。その為に、
展開が行われないで無限ループにならないですむ。必要になったら述語を
最初に評価し、その結果if文の0だけ評価することを決める。(p)は無視される。
ところがこれをSchemeで実行すると、非演算子の0と(p)を「評価して作用させ」
ようとする。よってif文の(p)が次々と展開されで無限ループになる。
マクロを作成する時にはEx1.6とEx1.7のエラーには気をつけるべき。
0524デフォルトの名無しさん
2008/09/23(火) 23:17:56(syntax-rules ()
((p) p)))
今度のはマクロでこうは書けない。マクロに出来ない例?
0525デフォルトの名無しさん
2008/09/23(火) 23:31:12「正規形が存在すれば必ず正規形(β簡約可能項を持たない項)に到達する」
という正規化戦略が保証されている。
従って、簡略戦略は,作用順序のSchemeでは停止性について責任を持たねばならぬが、
正規順序の言語では停止性が保証されているのである。
この話はこのスレでよく挙げられる "To Mock A Mockingbird" にも出てくる
ラムダ計算の話である。
0526デフォルトの名無しさん
2008/09/24(水) 01:24:34責任を持たねばならない。ただし、関数は完全展開するがマクロはマクロ展開
までしか展開しない違いがある。
「defineとdefine-syantaxってどう使い分けるのか」という最初の質問に対する
ひとつの答えは、この違いが決定的に重要ならマクロにするべきということ。
そうでない限りは関数のままでおいた方が良い。最適化が効くことが多いから。
他の理由は、アナフォリックマクロやマクロ生成マクロなどが挙げられる。
0527デフォルトの名無しさん
2008/09/24(水) 22:18:40んでもって、その式が閉式でアリティ0だったら
その式はカノニカルな式、というわけですね?
0528デフォルトの名無しさん
2008/09/24(水) 22:32:43ちゃんと読んで質問しようと思ってただけなんだけどね。
0529デフォルトの名無しさん
2008/09/24(水) 23:21:02なっていないと思うよ。
0530デフォルトの名無しさん
2008/09/25(木) 13:45:50http://www.call-with-current-continuation.org/
こんなのみつけた
これってマイナーな言語なの?
他で使ってたプログラムの流用はできない?
0531530
2008/09/25(木) 13:47:36すまそ
0532デフォルトの名無しさん
2008/09/25(木) 13:50:380533デフォルトの名無しさん
2008/09/25(木) 14:04:550534デフォルトの名無しさん
2008/09/25(木) 14:05:00本当のところは「言語規格準拠で、様々なCPU、様々なOSで動くポータブルな処理系がCLになかった」から
もしかしたらLisperとしてよちよち歩きの頃にポータブルなCL処理系があったらSchemerになることもなかったかもしれない
Lisperとしての自我が芽生える前にCLにフられて(というか自爆)、目の前にいたSchemeに惚れて以来一筋
0535534
2008/09/25(木) 14:06:42よりシンプルな物が好きだったという傾向も影響してるかも
R3000が好きだし
0536デフォルトの名無しさん
2008/09/25(木) 14:24:29まずは無料で手に入るSICPを読もうと思います。
普段はVBA、Java、趣味でRubyです。
0537デフォルトの名無しさん
2008/09/25(木) 14:42:440538デフォルトの名無しさん
2008/09/25(木) 15:39:56俺はそうしてるが。
0539デフォルトの名無しさん
2008/09/25(木) 16:10:24コンパイラかな?
0540デフォルトの名無しさん
2008/09/25(木) 18:13:16どうしてもSchemeでないとだめな用途って何だろう。
こくばんかな?
0541デフォルトの名無しさん
2008/09/25(木) 20:50:55作ってみない?
数学の勉強にもなるし。
といいつつ、わたしゃ途中で挫折している。
数式処理は簡単化がめんどい。
0542デフォルトの名無しさん
2008/09/25(木) 22:08:26http://codepad.org/zctEhM1Y
http://docs.plt-scheme.org/reference/nest.html
0543デフォルトの名無しさん
2008/09/25(木) 23:32:29compact-number-listの逆関数キボンヌ
0544デフォルトの名無しさん
2008/09/26(金) 00:48:29http://codepad.org/PYA73S1q
0545デフォルトの名無しさん
2008/09/26(金) 01:09:01色々いじっていたらこんなになった
(lambda (xs)
(define (foo x y z)
(if (= x y) (cons x z) (foo x (- y 1) (cons y z))))
(let fold
([f (lambda (x z) (if (pair? x) (foo (car x) (cdr x) z) (cons x z)))]
[z '()]
[xs (reverse xs)])
(if (null? xs) z (fold f (f (car xs) z) (cdr xs)))))
0546デフォルトの名無しさん
2008/09/26(金) 01:22:04http://codepad.org/JcuniUhD
0547デフォルトの名無しさん
2008/09/26(金) 01:36:21�d。このS式は便利かも。
http://codepad.org/Xye6JwUI
0548デフォルトの名無しさん
2008/09/26(金) 02:10:17数式処理ならJacalは? http://people.csail.mit.edu/jaffer/JACAL
0549デフォルトの名無しさん
2008/09/26(金) 14:24:46installしてみた
今年の3月に出たソフトなのか
wxmaximaみたいなGUIないのかな
maximaのto_lisp();
でlisps層に降りて作業できるけど、それに相当するのみつけられなかった
0550デフォルトの名無しさん
2008/09/26(金) 16:18:00自己レスです
maximaに相当する機能が一通りあるようです
maximaのto_lisp();
=
jacalのqed;
(to-maxima)
=
(math)
0551デフォルトの名無しさん
2008/09/26(金) 18:45:33いや、Jacal自体はMS-DOSでも走ってたくらい古いソフト (当時から全てSchemeで書かれてた)。
だからあんまり機能は豊富じゃないと思う。枯れてるとは思うけど。
0552デフォルトの名無しさん
2008/09/26(金) 19:14:24scmはかなり軽いから常用したいんだけど
ビルド周りが泥臭くて
ちゃんとビルドできてるんだかどうだかわからなくて不安。
OSのパッケージ版でさえ不備があるくらい。
Bignum周りも微妙だし有理数もない。
Guileがscmくらい軽いといいんだけど。
0553デフォルトの名無しさん
2008/09/26(金) 20:31:23を見ながら作成してる人もいるね。
http://practical-scheme.net/wiliki/wiliki.cgi?sasagawa%3A%E6%95%B0%E5%BC%8F%E5%87%A6%E7%90%86
http://practical-scheme.net/wiliki/wiliki.cgi?sasagawa%3Acomplex
0554デフォルトの名無しさん
2008/09/26(金) 21:25:50商用の処理系じゃないと無理?
0555デフォルトの名無しさん
2008/09/26(金) 21:43:12ttp://ecls.sourceforge.net/
0556デフォルトの名無しさん
2008/09/27(土) 14:40:08って誰かが言ってたが、
新しい技術を恐れるなとか言いつつ
古いものを使い続けることに恐怖を感じているのだとしたら、間抜けだ
0557デフォルトの名無しさん
2008/09/27(土) 14:44:070558デフォルトの名無しさん
2008/09/27(土) 15:46:59百年で思い出したが、なんとか2056年まで生きたい。
Lisp生誕百年だ。どうなっているのか?
実装レベルで考えると今ちょうど50年だね。
0559デフォルトの名無しさん
2008/09/27(土) 16:03:490560デフォルトの名無しさん
2008/09/27(土) 20:49:090561デフォルトの名無しさん
2008/09/27(土) 22:22:03なんかオブジェクトを手で動かして作るんだよ
言語なんてなくなってる
0562デフォルトの名無しさん
2008/09/27(土) 22:45:120563デフォルトの名無しさん
2008/09/27(土) 23:03:060,1とは付き合わざるを得ないし、
アセンブラも消えないはず。
高級言語CPUが一般的になったら変わるのかな。
0564デフォルトの名無しさん
2008/09/27(土) 23:30:10プログラムを組むプログラム を組むプログラム を組むプログラム… を組むプログラム を人間が組む
になる
人間側インタフェースは完全に自然言語ベースになっていくでしょう
0565デフォルトの名無しさん
2008/09/27(土) 23:43:02数式は自然言語だというオチならあり得るが
0566デフォルトの名無しさん
2008/09/27(土) 23:54:19ソフトウェア会社社長「プログラムを組むプログラムが完成したので
おまえらプログラマは全員解雇な。既に競合他社は人間を全員クビにして
高い生産性、少ないバグ、人件費削減を達成してるんだ」
0567デフォルトの名無しさん
2008/09/28(日) 00:33:05全ての定理を少数の公理から導けるとか
情報理論っておもしろいなw
0568デフォルトの名無しさん
2008/09/28(日) 00:52:41Lispは姿を変えて残ってるだろうね、本質が数学なものは長生きするよ
0569デフォルトの名無しさん
2008/09/28(日) 18:34:30最終的にはすべての仕事をプログラムが行うようになる。
でも、バグがないプログラムを作ることはできないので、そのプログラムを
メンテする人が最後の職業となる。
その人はアーキテクトと呼ばれるバグを取り除くだけの簡単なお仕事です。
0570デフォルトの名無しさん
2008/09/28(日) 18:36:380571デフォルトの名無しさん
2008/09/28(日) 20:34:11どこからがコンピュータなのか、きっと区別がつかなくなってると思う。
したがってプログラミングなんぞ存在しないと言えば存在しないし、
有ると言えば有るとも言える状態になっているだろう。
西暦2500年くらいには…
0572デフォルトの名無しさん
2008/09/28(日) 21:09:14はいはいサイバーパンクサイバーパンク
0574デフォルトの名無しさん
2008/09/28(日) 22:49:43libecl は LGPL って点に気をつければ、かなり自由だと思われ。
0575デフォルトの名無しさん
2008/09/28(日) 22:57:22thx. スタティックリンクしなければ好きなライセンスで大丈夫なんですね。
0576デフォルトの名無しさん
2008/09/29(月) 14:24:08cffi
>>556
c++呼びたいなら
Verrazano
http://common-lisp.net/project/fetter/
0577デフォルトの名無しさん
2008/09/29(月) 17:45:55> >>554
> cffi
cffiでどうやってdllを作るのか詳しく
0578デフォルトの名無しさん
2008/09/29(月) 20:20:36http://lispuser.net/memo/lisp/2006-04-16-04-32.html
http://lispuser.net/memo/lisp/2006-04-19-05-00.html
でも>>554の求めてるのはdllを作ってCで使いたいから逆か・・・
0579デフォルトの名無しさん
2008/09/29(月) 20:51:510580デフォルトの名無しさん
2008/09/30(火) 01:29:260581デフォルトの名無しさん
2008/09/30(火) 01:52:320582どうぞお引取りを
2008/09/30(火) 01:53:55もしくは、作れても作る気は全くないので作れないのと同じと思ってくれたまえ。
0583デフォルトの名無しさん
2008/09/30(火) 01:54:590584デフォルトの名無しさん
2008/09/30(火) 02:00:50云い得て妙な。
0585デフォルトの名無しさん
2008/09/30(火) 02:27:55いくら元ネタにFreenetがあったとはいえ、
当時Winnyを着想するのは・・・・・・やはり天才と言わざるを得ない
0586デフォルトの名無しさん
2008/09/30(火) 04:18:52linuxとかでああいうソフトは無理
0587デフォルトの名無しさん
2008/09/30(火) 09:06:080588デフォルトの名無しさん
2008/09/30(火) 10:48:04普通にCから呼ぶdll作れば
clからも同じ名前で呼べたはず
ただしextern "C"でcにしないとだめ
0589デフォルトの名無しさん
2008/09/30(火) 10:52:50maximaのplot機能を置き換えることができなさそう
lisp:(cffi::hoge)
ができないのもちょっと気になる
0590デフォルトの名無しさん
2008/09/30(火) 11:26:16だから質問文良く読めよ。
CL"で"dll作るって書いてあるだろ。お前の目は節穴か。そうか。
0591デフォルトの名無しさん
2008/09/30(火) 11:33:57逆向きなのね。
0592デフォルトの名無しさん
2008/09/30(火) 11:37:41まぁ質問文はよく読むべきだが、単なる見間違いのレベルで熱源反応出さんでも。
0593デフォルトの名無しさん
2008/09/30(火) 12:30:37いや、上の方でも同じ事指摘されてるのに同じ間違いをしてるから、ついカッとなってやった。今は反省している。
0594デフォルトの名無しさん
2008/09/30(火) 12:58:020595デフォルトの名無しさん
2008/09/30(火) 13:00:37exeも作れんのにdllなんて作れるわけがない
0596デフォルトの名無しさん
2008/09/30(火) 14:19:500597デフォルトの名無しさん
2008/09/30(火) 18:01:10実はその試みは問題を複雑にしただけだ。まずそこに気付いて欲しい。
相互末尾再帰はgotoよりも始末が悪く、デバッグすらままならない。
デバッグするには、全てを普通の再帰に戻す。これでやっと理解できる
レベルに落としこめる。脳は日常的にスタック構造に慣れているからだ。
では末尾再帰にも慣れればよいのでは?という反論がありそうだが、
そんな概念が日常に出てくる事があるだろうか。
残念ながら思いつかない。
0598デフォルトの名無しさん
2008/09/30(火) 18:07:56スタックを明示的に使った方が速いのは明らかだ。
schemeは構文を少なくする代わりに、意味を重複して持たせている。
例えばクロージャと関数の同一視、これに継続も含めると、
自分で作った関数がどのように使われる事があるか、全く予測が付かない。
これではバグの予防すら困難だ。
意味が重複する事で、自分の意思が込められない。
構文を少なくまとめるよりも、構文1つの意味を単純にするべきではないだろうか。
構文だけ見てdoの繰り返しが末尾再帰だと気付く人間が、
一体どれだけいるだろうか。
わざわざ末尾再帰だと規定する必要もどこにあるだろう。
コードにプログラマの意思を込められなければ、
それは良い言語とは言えないのではないか。
0599デフォルトの名無しさん
2008/09/30(火) 18:09:240600デフォルトの名無しさん
2008/09/30(火) 18:19:430601デフォルトの名無しさん
2008/09/30(火) 19:06:55597-598さんとは逆にループでプログラムを書くのに苦労してます。
末尾再帰最大の利点は参照透明性を保ちつつ変化する値を扱える点だと思います。
継続の特別扱い(末尾文脈でなくても継続を破棄すること)は自分もおかしいとおもいますけど。
Wilikiでも前に話題になってた「なぜcall/ccが副作用をもたらすのか」の原因にもなってると思います。
0602601
2008/09/30(火) 19:26:40参照透明性+値の変化はふつうの再帰でも扱えますね。
定数空間でそれを行えるのが末尾再帰の利点ですね。
0603デフォルトの名無しさん
2008/09/30(火) 19:33:300604デフォルトの名無しさん
2008/09/30(火) 19:34:31>>598 のような感性があることは認める。だがそれをむやみに一般化しないでくれるか。
世の中には少数ながら、再帰とTCOの方が自然に考えられる変な種類の人間がいるのだ。
0605デフォルトの名無しさん
2008/09/30(火) 19:42:350606デフォルトの名無しさん
2008/09/30(火) 19:46:57Lisperはニュータイプなんだろうか?オールドタイプなんだろうか?
TCOの意味がしばらくわかりませんでした。
0607デフォルトの名無しさん
2008/09/30(火) 20:02:30代入の順序が前後するのが嫌なときは使える。
0608デフォルトの名無しさん
2008/09/30(火) 20:07:240609デフォルトの名無しさん
2008/09/30(火) 20:28:150610デフォルトの名無しさん
2008/09/30(火) 20:43:280611デフォルトの名無しさん
2008/09/30(火) 20:54:17と言うわけでお前らloopを使おう。
0612デフォルトの名無しさん
2008/09/30(火) 21:27:470613デフォルトの名無しさん
2008/09/30(火) 21:45:020614デフォルトの名無しさん
2008/09/30(火) 21:57:29括弧とスペシャルフォーム
0615デフォルトの名無しさん
2008/09/30(火) 21:58:06schemeで実装した原始lispと大体同じ作り
DSLをパーズして一つのS式に畳み込んでゲロるだけ
0616デフォルトの名無しさん
2008/09/30(火) 22:12:040617デフォルトの名無しさん
2008/09/30(火) 22:14:05あれを実装しようとすると心の底からイラつく
0618デフォルトの名無しさん
2008/09/30(火) 22:19:480619デフォルトの名無しさん
2008/09/30(火) 22:58:50500行未満って小規模なのか?loopとformatは実装しろと言われたら泣くw
でもひげぽんの問題も、loopでの回答が一番美しいな。
ttp://d.hatena.ne.jp/higepon/20080925/1222326246
0620デフォルトの名無しさん
2008/10/01(水) 06:21:30Comp.Lang.schemeの記事が見つかる。
それをコピペすれば解決。
0621デフォルトの名無しさん
2008/10/01(水) 18:35:53�d。loopを使ってみた。そのページのは長いので改造した。
lisp系なのにreturnとか笑えるw
http://codepad.org/QeJlUSpa
0622デフォルトの名無しさん
2008/10/01(水) 18:49:11ループじゃなきゃ駄目とか末尾再帰じゃなきゃ駄目と言ってるのは
使う側の問題であって処理系の評価には全く関係ない。
そんなことも理解できないで文句言ってる奴は腕が無さ杉。
どの言語を使っても大した仕事は出来ないだろうね。
0623デフォルトの名無しさん
2008/10/01(水) 18:57:560624デフォルトの名無しさん
2008/10/01(水) 19:35:36>>418 do
http://codepad.org/yvwb6wvY
>>436-441 for
http://codepad.org/pHIilEjT
>>621 loop
http://codepad.org/QeJlUSpa
※ iterate, seriesマクロも募集
0625デフォルトの名無しさん
2008/10/01(水) 20:32:08Schemeで会計ソフトって作れますか?
0626デフォルトの名無しさん
2008/10/01(水) 20:54:17いまだにScheme脳になりきらない俺なんだが
int line[100][100]; // なんか適当な値が入ってる
------------------
int out[100];
int i, j;
(for i = 0; i < 100; i++){
out[i] = 0;
for(j = 0; j < 100; j++){
if(i != j){
out[i] += line[i][j]
}
}
}
return out;
上記みたいなイメージの処理で2次元配列ぐりぐり回してなんか処理したいけど(= i j)のときは処理しないよみたいなことがしたいときってどうやって書けばいいと思う?
outをリストにしてlineをリストのリストにしてそれぞれiotaで添え字作ってzipでまとめてぐだぐだぐだーな処理を書いてみて流石に頭が悪すぎるだろうと思ったけどいい考えも浮かばなかった
誰かかっこいいネタくれ
0627デフォルトの名無しさん
2008/10/01(水) 21:10:58と思ったら書くな
0628デフォルトの名無しさん
2008/10/01(水) 21:17:23特に書き込むことなかった
0629デフォルトの名無しさん
2008/10/01(水) 21:44:53ところでCで書くんですか?Schemeで書くんですか?
0630デフォルトの名無しさん
2008/10/01(水) 21:48:35Common Lispとかだとちょっと嬉しい
0631デフォルトの名無しさん
2008/10/01(水) 21:53:240632デフォルトの名無しさん
2008/10/01(水) 22:37:05doを使うとSchemeらしくないけど。
0633デフォルトの名無しさん
2008/10/01(水) 22:37:26>lineをリストのリストにして
むしろ重症だと思うぞ。
0634デフォルトの名無しさん
2008/10/01(水) 23:12:48(= i j)のときは処理しない、ってのが既に手続き的じゃないかな。
関数的には、このときはこの値、そのときはその値、って感じじゃない?
0635デフォルトの名無しさん
2008/10/01(水) 23:34:58あーそうかも
>>632
doとか使うとなんか負けたような気がするじゃないか
0636デフォルトの名無しさん
2008/10/02(木) 00:31:020637デフォルトの名無しさん
2008/10/02(木) 03:43:300638デフォルトの名無しさん
2008/10/02(木) 04:05:260639デフォルトの名無しさん
2008/10/02(木) 04:09:460640デフォルトの名無しさん
2008/10/02(木) 04:23:50そういうのならsrfi-42使うかな。
(do-ec (: i 100) (: j 100)
(unless (= i j) (inc! (vector-ref out i) (array-ref line i j))))
Scheme脳っていったって何でもかんでも明示的な再帰で書くわけじゃないっさ。
再帰はあくまで基本のビルディングブロック。定型的な処理にはより大きな出来合いのブロックを使う。
0641デフォルトの名無しさん
2008/10/02(木) 07:54:55ありがとう。
行列簿記のシステムをSchemeで書こうと思って。
0642デフォルトの名無しさん
2008/10/02(木) 13:28:10めんどくさくなった記憶がある
std::for_each
0643デフォルトの名無しさん
2008/10/03(金) 03:17:44common lispは過去の遺産の関係で簡単には変わらないっていう解釈は間違い?
0644デフォルトの名無しさん
2008/10/03(金) 07:42:220645デフォルトの名無しさん
2008/10/03(金) 09:00:520646デフォルトの名無しさん
2008/10/03(金) 10:05:17LispやSchemeのブランドにこだわるのは処理系の開発が滞るのが怖いからかな。
0647デフォルトの名無しさん
2008/10/03(金) 12:10:03保守すべき実物が何もないから、一寸先は闇。
0648デフォルトの名無しさん
2008/10/03(金) 13:43:56ANSIとIEEEってどっちが上ですか?
(もちろん言語としてはANSI CL > R5RS Scheme > IEEE Scheme、ANSI CL > ISLISPであり
規格の権威の上下が言語の上下を決める訳ではない事は承知しています)
0649デフォルトの名無しさん
2008/10/03(金) 14:26:040650デフォルトの名無しさん
2008/10/03(金) 14:34:230651デフォルトの名無しさん
2008/10/03(金) 14:53:070652デフォルトの名無しさん
2008/10/03(金) 15:09:55重なる部分が多いのは分かるけど。
上も下も無いだろ〜
どっちもよりより上位の規格としてISO持ってるんだから。
0653648
2008/10/03(金) 15:30:25私がアホなのもSchemeが実験言語なのも否定しませんが
ISOには及ばないもののIEEEで規格化されているSchemeが643-647(特に647)みたいな扱いはないでしょ、て意味です
括弧つき注釈をつけたのは
「それくらいググれカス」
「ISOが最高ならISLISP >>> (越えられない壁)>> ANSI CL, IEEE Schemeかよ」
って書かれないようにと思ったのですが、まずかったですね。
0654デフォルトの名無しさん
2008/10/03(金) 18:01:250655デフォルトの名無しさん
2008/10/03(金) 20:04:06継続なんてオナニーだろアホか
0656デフォルトの名無しさん
2008/10/04(土) 00:39:36R5RS->R6RSという流れは必然なのではないかと思う。
Schemeは小さな言語でも、自分を自分自身で表現することで、
インクリメンタルに自己拡張させることができるという
meta-circularの理論を実証するため生み出された可能性がある。
(継続の概念もその過程で発見された?)
Scheme開発の歴史は知らないので、誤っているかもしれないけれど、
その一面は間違いなく存在したはず。
その観点に立った場合、Schemeはいつか小さな仕様の自分自身を用いて
大きな仕様の自分を記述しないと、意味が無い。
それが、R5RS->R6RSという流れなんじゃないだろうか。
逆に言えば、R5RSのScheme世界が十分成熟したとみなされたんだろう。
0657デフォルトの名無しさん
2008/10/04(土) 01:19:05末尾再帰の最適化=継続の最適化
0658デフォルトの名無しさん
2008/10/04(土) 01:33:580659デフォルトの名無しさん
2008/10/04(土) 02:14:52アイアイサー
0660デフォルトの名無しさん
2008/10/04(土) 02:48:06自己記述とインクリメンタルな拡張の概念はLispにほぼ最初から備わってた。
継続の発明もSchemeよりずっと前。LandinのJ-operatorが1965年くらいかな? そのへんまで遡れる。
そんじゃSchemeは何をしたかってことだけど、直接の動機はHewittのActorモデルのうまい記述を
考えているうちに、手続き呼び出しとメッセージパッシングがともに継続渡し+gotoで統一的に
表現できることに気づいたって話かなあ。けれど実装面では、静的スコープで性能を出せることを
示したって功績の方が大きいかもね。
0661デフォルトの名無しさん
2008/10/04(土) 09:40:00>自己記述とインクリメンタルな拡張の概念はLispにほぼ最初から備わってた。
万能関数?とかいう機能のことですか。
うーん。とにかく、歴史は一度調べておく必要がありますね。
0662デフォルトの名無しさん
2008/10/04(土) 09:52:440663デフォルトの名無しさん
2008/10/04(土) 10:46:13「ではないかと思う。 」「可能性がある。 」「発見された?」 「誤っているかもしれない」
「その観点に立った場合、」「という流れなんじゃないだろうか。 」「とみなされたんだろう。 」
終始、自分の推測と、そこから派生するものと、疑問しか書いていない。
つまり、これは事実についての文章ではなく、彼の認識についての文章なわけで、
デタラメかどうかは「Schemeに関する事実と彼の記述内容」ではなく「彼の考えと彼の記述内容」に
違いがあるかどうかで決まる。
(本当はそう思っていない事実を、「〜と思う」という言い方で書いたら、それは「事実でありデタラメ」だ)
多分>>656は、本当にそう思っていることを書いたのであって、デタラメを書いたのではないと思うよ。
0664デフォルトの名無しさん
2008/10/04(土) 11:41:03>>661
自己記述についてはeval[e;p]の実装がLispインタプリタの始まりであったことを
考えれば、最初からLispはそうだったってことになる。自己記述が容易だったために
インクリメンタルな拡張が可能だったっていうのはMcCarthyの"The History of Lisp" で
触れられてたと思う。
Lispの歴史の中でのSchemeの位置づけについてはSteele&Gabrielの"The Evolution of Lisp"
がわかりやすい。
R5RSとR6RSについては、まあいろいろな人のいろいろな思惑があるんで一口には言えないなあ。
0665デフォルトの名無しさん
2008/10/04(土) 12:06:54元はリスト処理ライブラリでしょ、FORTRANの。
詳しくは"The History of Lisp"で。
0666デフォルトの名無しさん
2008/10/04(土) 19:24:45Gerry Sussman and I wanted to understand Carl Hewitt’s ideas, which seemed to have intellectual power, but we couldn’t get past the complexity and the notation to see “what was really going on.”
So we decided to implement a “toy” actors language.
We hoped that it could capture the essence of the ideas while remaining simple enough to understand.
It might even turn into something useful.
--- Guy Steele "The History of Scheme"
0667デフォルトの名無しさん
2008/10/04(土) 19:30:43LISP (McCarthy et al., 1958)
METEOR (Bobrow, 1964)
CONVERT (Guzman, 1969)
PLANNER (Hewitt, 1969)
MUDDLE (Sussman, Hewitt, et al., 1970)
MICROPLANNER (Sussman et al., 1971)
CONNIVER (Sussman et al., 1972)
PLASMA (Hewitt et al., 1973) <== >>666のヒューイットのアイデアはこれで説明していた
SCHEMER (Sussman and Steele, 1975)
0668デフォルトの名無しさん
2008/10/04(土) 19:37:03Gerry had been studying and teaching Algol 60, so we decided to use the full funarg solution so that our toy language would have lexical scope.
Our intuition was that this would also keep track of actor’s acquaintances correctly.
(Also inspired by Algol 60, the first toy interpreter was call-by-name rather than call-by-value! I will gloss over that distinction here.)
0669デフォルトの名無しさん
2008/10/04(土) 19:40:47Actor constructors and lambda expressions in our toy language are operationally equivalent.
Does it follow that actors are “merely” functions in a tail-recursive, lexically scoped language?
They are the same mechanism.
Any difference is not inherent, but depends only on what you put in their bodies.
If your primitive operators are functions, you will tend to write programs in a functional style.
If your primitive operators are actors, you will tend to write programs in an actor style.
0670デフォルトの名無しさん
2008/10/04(土) 19:44:42After some discussion, Carl Hewitt agreed with our conclusions (with two minor exceptions).
In a way, this ended the “language competition.” <== これは大事!
Our great new AI language “Schemer” turned out to be a small dialect of Lisp with some nice properties.
Oh, yes: the name?
File names in that OS were limited to 6 characters.
“SCHEME”
0671デフォルトの名無しさん
2008/10/04(土) 20:03:47(DEFINE FACTORIAL (N)
(COND
((ZEROP N) 1)
(T (TIMES N (FACTORIAL (DIFFERENCE N 1)))))
(FACTORIAL 5) ⇒ 120
0672デフォルトの名無しさん
2008/10/04(土) 20:04:43(define
[factorial ≡
(≡≡> (message: [=n] (reply-to: =c))
(rules n
(≡> 1 (c <== (message: 1)))
(else (factorial <==
(message: (n . 1)
(reply-to:
(≡≡> (message: =y)
(c <== (message: (y * n))))))))))])
0673デフォルトの名無しさん
2008/10/04(土) 20:05:54(define factorial
(alpha (n c)
(= n 0
(alpha () (c 1))
(alpha ()
(- n 1
(alpha (z)
(factorial z
(alpha (y)
(* n y c)))))))))
0674デフォルトの名無しさん
2008/10/04(土) 20:08:01(factorial 5 fred)
results in sending a message containing 120 to the actor named fred.
Oh, joy!
0675デフォルトの名無しさん
2008/10/04(土) 20:42:11(define-syntax zerop
(syntax-rules ()
((_ x) (= 0 x))))
(define-syntax times
(syntax-rules ()
((_ x y) (* x y))))
(define-syntax difference
(syntax-rules ()
((_ x y) (- x y))))
(define (FACTORIAL N)
(cond
((zerop N) 1)
(else (times N (FACTORIAL (difference N 1))))))
(FACTORIAL 5)
0676デフォルトの名無しさん
2008/10/04(土) 21:11:46よくぞ見破りましたというか、すごい明確化の能力ですね。
上記書き込みの理解をとりあえず試みてみます。
0677デフォルトの名無しさん
2008/10/04(土) 21:15:00そこでdefine-syntaxを使うのは恥ずかしい
0678デフォルトの名無しさん
2008/10/04(土) 21:18:34http://codepad.org/JOzaBBNR
このように今でもACTORモデルは使えます。
0679デフォルトの名無しさん
2008/10/04(土) 21:21:34理解出来ないなら書き込むな
0680デフォルトの名無しさん
2008/10/04(土) 21:26:50あらかじめdefine-syntaxで定義されてる処理系で走らせる意味があるんだよ。
0681デフォルトの名無しさん
2008/10/04(土) 21:39:04おまえホント、痛い奴だな。
0682デフォルトの名無しさん
2008/10/04(土) 21:48:130683デフォルトの名無しさん
2008/10/04(土) 21:54:38喧嘩はよそでやってくれ
0684デフォルトの名無しさん
2008/10/04(土) 22:05:060685デフォルトの名無しさん
2008/10/04(土) 22:12:430686デフォルトの名無しさん
2008/10/04(土) 22:25:030687デフォルトの名無しさん
2008/10/04(土) 22:27:340688デフォルトの名無しさん
2008/10/04(土) 22:30:13設計されたのですね。
安直に言うと、SICP2章〜3章のdispatchが出てくるコードがScheme
メインストリームということでOKですか?
0689デフォルトの名無しさん
2008/10/04(土) 22:45:05違います。
PLANNER A Language for Proving Theorems
by Carl Hewitt (1967)
ttp://dspace.mit.edu/bitstream/1721.1/6144/2/AIM-137.pdf
MICRO-PLANNER REFERENCE MANUAL
by Gerald Jay Sussman and Terry Winograd (1970)
ttp://dspace.mit.edu/bitstream/1721.1/5833/2/AIM-203.pdf
Gerald Jay Sussman と Terry Winograd によるPlanner のサブセット
Micro-Planner は、当時主流であった論理的アプローチとは異なる手法を提案しました。
論理的アプローチ派の Robert Kowalski は Alain Colmerauer と共同で
Micro-Planner によく似た Prolog を開発しました。
不幸なことにMicro-Plannerはバックトラッキングの扱いにくさを証明しましたが、
制御構造に関する議論を活性化しました。
このころ、Peter Landin は J (Jump) 演算子を使って非常に強力な制御構造
を導入しました。
0690デフォルトの名無しさん
2008/10/04(土) 22:46:11「Hairy Control Structure」と呼びさらに発展させ、Conniver 言語に実装し
ました。
THE CONNIVER REFERENCE MANUAL
by Drew V. McDermott and Gerald Jay Sussman (1972)
ttp://dspace.mit.edu/bitstream/1721.1/6204/2/AIM-259a.pdf
Scheme An Interpreter for Extended Lambda Calculus
by Gerald Jay Sussman and Guy Lewis Steele Jr. (1975)
http://dspace.mit.edu/bitstream/1721.1/5794/2/AIM-349.pdf
MITのAIラボで作る言語は CONNIVER とか PLANNER とか 「考えるもの」系の
名前をつける伝統だったので、Schemeの名前は、「Conniverよりもっと
スニーキー(卑劣)なPlanner」という意味のSchemerとなるはずだった。
0691デフォルトの名無しさん
2008/10/04(土) 22:53:19そしてそれら全てを包含した最終言語がSchemeなので、>>688の意見は的外れです。
0692デフォルトの名無しさん
2008/10/04(土) 22:53:30どう違うんでしょうか?簡単でいいので教えていただけると嬉しいのですが。
0693デフォルトの名無しさん
2008/10/04(土) 22:54:22了解しました。
0694デフォルトの名無しさん
2008/10/04(土) 23:05:100695デフォルトの名無しさん
2008/10/04(土) 23:18:11> >>670で言ってる“language competition”には>>667,>>689,>>690の各言語が登場します。
> そしてそれら全てを包含した最終言語がSchemeなので、>>688の意見は的外れです。
>>670には
SCHEMER (Sussman and Steele, 1975)
が入っているのですが、本当にこれも包含されるのですか?
もしかして、SchemerとSchemeは別物ということでしょうか?
0696デフォルトの名無しさん
2008/10/04(土) 23:19:02>>667には○
0697デフォルトの名無しさん
2008/10/05(日) 00:40:56>Lispの歴史の中でのSchemeの位置づけについてはSteele&Gabrielの"The Evolution of Lisp"
>がわかりやすい。
http://www010.upp.so-net.ne.jp/okshirai/HOPL2-Uncut-j.txt
PLASMA(PLANNER-73)
http://dspace.mit.edu/bitstream/handle/1721.1/41116/AI_WP_081.pdf?sequence=4
0698デフォルトの名無しさん
2008/10/05(日) 00:42:17リョーカイ
0699デフォルトの名無しさん
2008/10/05(日) 05:35:36(define (hit clist)
(let iter ((progress (look-forward-symbol clist)) (w '()))
; (display progress)(display w)(newline)
(cond ((not progress) w)
((not (car progress)) #f))
(else (iter (look-forward-symbol progress)
(append w (hit2 progress))))))
look-forward-symbolとhit2の実装はあまり関係ないと思うので省きます。
名前付きletでループさせているのですが、
else節のiterが第一引数#fで呼び出された場合に
condの最初の節で抜けて欲しいのにelse節を再び評価してしまいます。
condって節を順に評価していくとR5RSに書いてあるのでその通りにしたつもりなのですが、
何か間違ってますでしょうか。
0700デフォルトの名無しさん
2008/10/05(日) 06:16:46#fの後の括弧が一つ多い
0701699
2008/10/05(日) 06:49:41直したらうまくいきました。
ありがとうございました。
0702デフォルトの名無しさん
2008/10/05(日) 18:15:48このスレのまとめ:
習得するべき言語:C, C++, C#
習得するべきスクリプト:perl, python, ruby
やめておくべき言語:Haskell, Lisp
0703デフォルトの名無しさん
2008/10/05(日) 19:44:06日本語が使えなさそうなのは門前払いなのかな
C#やRubyは日本語に関しては安心だよな
0704デフォルトの名無しさん
2008/10/05(日) 19:56:20(define foo #hHEREDOC
aaaaa
bbbbbbbbb
cccc
HEREDOC)
みたいなことやりたいです
0705704
2008/10/05(日) 20:02:10(define foo
#hHEREDOC
abcde
#hSEXP (integer->string 1)
fooHEREDOC)
0706デフォルトの名無しさん
2008/10/05(日) 20:54:44非公式なパッチならあるので、これを使えば出来なくはない。
http://practical-scheme.net/wiliki/wiliki.cgi?Rui%3a%E3%83%92%E3%82%A2%E3%83%89%E3%82%AD%E3%83%A5%E3%83%A1%E3%83%B3%E3%83%88
2年前のバージョンに対するパッチなので、今の版に適用するならちょっと手を加えないといけないかも
0707デフォルトの名無しさん
2008/10/05(日) 20:56:15文字列リテラル内でダブルクオートやバックスラッシュをエスケープするのが面倒ってこと?
0708デフォルトの名無しさん
2008/10/05(日) 21:00:01便利なケースが無いとは言わんが、そんな小汚い方法はSchemeにそぐわない。
マクロでやればいいことだし。
0710デフォルトの名無しさん
2008/10/05(日) 21:15:00http://practical-scheme.net/gauche/man/gauche-refj_157.html#SEC433
文字列補間でもいいけど。
http://practical-scheme.net/gauche/man/gauche-refj_48.html#SEC80
0711デフォルトの名無しさん
2008/10/05(日) 23:24:03#`"foo
bar" とか普通に改行も含められるんだから、十分じゃないか?
0712デフォルトの名無しさん
2008/10/07(火) 12:48:59質問です。
(+ 1 2) の様な書き方を「逆ポーランド記法」と読んでも良いのでしょうか?
0713デフォルトの名無しさん
2008/10/07(火) 12:54:50ttp://ja.wikipedia.org/wiki/%E9%80%86%E3%83%9D%E3%83%BC%E3%83%A9%E3%83%B3%E3%83%89%E8%A8%98%E6%B3%95
0714デフォルトの名無しさん
2008/10/07(火) 12:57:090715デフォルトの名無しさん
2008/10/07(火) 20:50:340716デフォルトの名無しさん
2008/10/08(水) 09:40:520717デフォルトの名無しさん
2008/10/08(水) 11:27:32こんな風にalphaを導入すれば>>673-674のように
(factorial 5 fred)
でアクター指向プログラミング出来るから>>678よりSchemerに近くできるね。
アクターがメソッドを持つようにすればオブジェクト指向と同じ。
alpahaの式でその部分が鮮明になる。
CLOSはこんな風に考えられたのかな?
0718デフォルトの名無しさん
2008/10/08(水) 11:48:31注目されるようになって来てはいるが、実用には程遠いかなぁ。
Erlangぐらいか?
0719デフォルトの名無しさん
2008/10/08(水) 17:42:10んなことないだろ。バカでも携わる方面にまで降りてきてないだけで。
0720デフォルトの名無しさん
2008/10/08(水) 18:13:300721デフォルトの名無しさん
2008/10/08(水) 23:34:270.8.13なら動くのに
cygwinどっか壊したかな?
0722デフォルトの名無しさん
2008/10/09(木) 00:56:57> アクターモデルのような非同期型のオブジェクトモデルも
アクターモデルはオブジェクトモデルじゃないよ。
非同期メッセージングモデル。
> Erlangぐらいか?
Erlangも違う。
非同期オブジェクトモデルなのはABCLなどほんのごく一部です。
0723デフォルトの名無しさん
2008/10/09(木) 01:24:34リビルドしたか?
0.8.13と0.8.14はVMの仕様が変わってるぞ。
0724デフォルトの名無しさん
2008/10/09(木) 06:59:340725デフォルトの名無しさん
2008/10/09(木) 10:08:58defineとdefine-methodはどう使いわけるのがいいのでしょうか。
define-methodだけで十分且つ安全とは言えませんか?
0726デフォルトの名無しさん
2008/10/09(木) 10:49:42たとえば (define pi 3.14)
0727デフォルトの名無しさん
2008/10/09(木) 11:01:250728デフォルトの名無しさん
2008/10/09(木) 11:03:440729デフォルトの名無しさん
2008/10/09(木) 14:17:42Gauche のオブジェクトシステムは CLOS を元にしているけれど、
Scheme とは相性の悪い点もある。
概念的に Scheme の関数は本質的に全て無名関数であって、
それが変数を束縛しているということになってるのに、
CLOS は名前で区別する体裁になってるのがイマイチと言われている。
その他、速度の点でも常に妥当な型を探してディスパッチなんてやってらんない。
このへんは最適化もほとんど出来ないらしい。
でも、もしその速度低下が許容可能で、
define-method を常に使うことが開発効率を大幅に上昇させるなら、
あなたがそうすることを処理系は妨げない。
0730デフォルトの名無しさん
2008/10/10(金) 06:48:32シンボル拡張して(obj.foo.bar)でいいじゃん。
でもfooが関数だとすると((obj.foo).bar)なのか?
これでいいのか?って議論にかならずなるよね。
無いものを作るのは難しいですなw
0731デフォルトの名無しさん
2008/10/10(金) 10:02:260732デフォルトの名無しさん
2008/10/10(金) 10:18:10いや obj.foo.bar は lisp 的に一つのシンボルじゃね?
0733デフォルトの名無しさん
2008/10/10(金) 13:07:02(obj . (foo . bar))なら許す
0734デフォルトの名無しさん
2008/10/10(金) 13:26:380735デフォルトの名無しさん
2008/10/10(金) 15:25:47適当なマクロ導入するだけでできますか?
0736デフォルトの名無しさん
2008/10/10(金) 15:49:440737デフォルトの名無しさん
2008/10/10(金) 16:39:52こいつのメソッド適用はオブジェクトを前置する記法だったと聞いた
0738デフォルトの名無しさん
2008/10/10(金) 17:36:060739デフォルトの名無しさん
2008/10/10(金) 17:39:26[object message arg1 arg2 arg3]と書く。
先頭がフラグが立った特殊なコンスセルになっていて、
それでこのS式がメッセージセンド式であることを識別していたはず。
0740デフォルトの名無しさん
2008/10/11(土) 10:10:33どれも割と悪くないとは思う。
WindowsのAPIとか叩くなら、PLT Schemeとか楽だった。
日本語の文字コードも、少なくとも変換はネイティブで対応してる。
でも本格的に使ってる人、はてなの人以外全然見たこと無い。
Biglooは本当触ってみただけなんだけど、MinGWでコンパイルすると、
(作者曰く)Boehm GCのせいでマルチスレッドが使えないのが悲しかった。
Cygwinだと遅いし、CygwinのDLLに依存するしで扱いづらい。
でもスタンドアローンの実行ファイルはいいよなー。
0741デフォルトの名無しさん
2008/10/11(土) 13:57:47というのは冗談としてBoehm GCをpthreadに対応させるにはどうしたらいいんですかね?
OpenBSD portsでも未だにpthreadには対応できてません。
0742デフォルトの名無しさん
2008/10/11(土) 17:31:500743デフォルトの名無しさん
2008/10/11(土) 19:54:16accurateなのを独自実装する(ypsilon, tamarin, v8)のが多いね。
0744741
2008/10/11(土) 20:14:52私はGauche on OpenBSDのパッチを作ってるんですが
pthread対応版Gaucheを作りたいんです。
Kahuaなどpthreadが有効である事を要求する物があるので。
(もしかして私じゃなくて740さんへのレスだったかな?)
0745デフォルトの名無しさん
2008/10/11(土) 20:35:520747デフォルトの名無しさん
2008/10/11(土) 21:45:490748デフォルトの名無しさん
2008/10/11(土) 22:13:40特定した。
Boehm GCのスレッドサポートが一部OSで欠けているのは、
単にそっちの作業をしてる人がいないだけな感じなので、
パッチ送れば取り込んで貰えるんじゃないかなー。
前にびの人がNetBSDのスレッドサポートをさせてたから、
自分でやる気があるなら、LingrのGauche部屋に行けば、
何か取っ掛かりになること教えてくれるかもしれないよ。
0749デフォルトの名無しさん
2008/10/11(土) 22:24:210750デフォルトの名無しさん
2008/10/11(土) 22:56:070751デフォルトの名無しさん
2008/10/11(土) 23:45:06スレッドつかいたくてLinuxに移行しちゃった。
ありがとうびの人。これでBSDにかえれる。
0752デフォルトの名無しさん
2008/10/12(日) 08:42:010753デフォルトの名無しさん
2008/10/12(日) 13:19:20それを言うなら(. (. obj foo) bar)かと
0754デフォルトの名無しさん
2008/10/13(月) 00:04:24せっかく覚えたイディオムなんだろうけど、使い方が間違ってるよ
0755デフォルトの名無しさん
2008/10/13(月) 01:36:35中卒ではLispをマスター出来ないから悟りも開けない
という回答もあり得る。
0756デフォルトの名無しさん
2008/10/13(月) 01:39:460757デフォルトの名無しさん
2008/10/13(月) 01:50:180758デフォルトの名無しさん
2008/10/13(月) 01:53:21つられて脳が活性化されるんじゃね?
0759デフォルトの名無しさん
2008/10/13(月) 02:14:320760デフォルトの名無しさん
2008/10/13(月) 14:22:360762デフォルトの名無しさん
2008/10/13(月) 15:53:040763デフォルトの名無しさん
2008/10/13(月) 16:05:29つ 「メタマジック・ゲーム」
0764デフォルトの名無しさん
2008/10/13(月) 16:16:27指導である程度のところまでは到達できるが、
世界一になるなら自分でそこまで這い上がらなければいけない。
発想その物が世界一になれる見込みは感じない。
0765デフォルトの名無しさん
2008/10/13(月) 16:17:320766デフォルトの名無しさん
2008/10/13(月) 16:23:30* 世界一のプログラマは LISP で文字列操作を'やる(do)'。
* 世界一のプログラマは LISP で経理処理を(必要ならば)'する(do)'。
* 世界一のプログラマは人工知能プログラムを LISP で'する(do)'。
もし LISP で出来なければ、C言語でやる。C言語で出来なきゃ、それはやる価値がないのだ。
0767デフォルトの名無しさん
2008/10/13(月) 16:54:41世界一にしか言えないはずのことや、世界一が言わないと説得力が無いことは
一つも書かれていない中で、そんなことを書いても意味がない。
0768デフォルトの名無しさん
2008/10/13(月) 17:18:500769デフォルトの名無しさん
2008/10/13(月) 17:21:47real programmers don't use ???
0770デフォルトの名無しさん
2008/10/13(月) 20:31:250771デフォルトの名無しさん
2008/10/14(火) 00:37:19MITもないからおよしなさい
もっとでかいことなぜできぬ
0772デフォルトの名無しさん
2008/10/14(火) 01:22:350773デフォルトの名無しさん
2008/10/14(火) 04:18:060774デフォルトの名無しさん
2008/10/14(火) 12:49:580775デフォルトの名無しさん
2008/10/14(火) 17:51:260776デフォルトの名無しさん
2008/10/14(火) 18:56:42おう。ガンバっといで。もし痔なら塗り薬も忘れずにな。
0777デフォルトの名無しさん
2008/10/14(火) 23:59:230778デフォルトの名無しさん
2008/10/15(水) 01:39:360779デフォルトの名無しさん
2008/10/15(水) 01:49:44いっといれ
0780デフォルトの名無しさん
2008/10/15(水) 06:06:11にあったlisp15.zip、どこか他で手に入れること出来ませんか?
持ってたのに、なくしてしまった。消したかも orz
0781デフォルトの名無しさん
2008/10/16(木) 04:02:590782デフォルトの名無しさん
2008/10/16(木) 04:06:180783デフォルトの名無しさん
2008/10/16(木) 05:09:270784デフォルトの名無しさん
2008/10/16(木) 05:18:05cdr - carを除いた残り
0785デフォルトの名無しさん
2008/10/16(木) 08:03:420786デフォルトの名無しさん
2008/10/16(木) 08:13:53武蔵工大レベル高杉。
0787デフォルトの名無しさん
2008/10/16(木) 11:59:02CDRはContents of the Decremental part of Register numberの略
IBMの昔のコンピューター(IBM 704)のレジスタの略称に由来しています。
車(CAR)は左側通行という俗説もある。
0788デフォルトの名無しさん
2008/10/16(木) 12:03:40こっちの方がわかりやすい筈なのについついcar, cdrを使ってしまう
慣習というのは恐しいものだ
0789デフォルトの名無しさん
2008/10/16(木) 12:08:57とかを自動生成できる。コンパイラが。プログラマを信じて。
0790デフォルトの名無しさん
2008/10/16(木) 12:12:30>>789
そういうのをcxxxxrとcxxxrとcxxrとcxrの組み合わせに展開するマクロなら使ってました
0791デフォルトの名無しさん
2008/10/16(木) 12:21:590792デフォルトの名無しさん
2008/10/16(木) 12:22:32ググってみたが、これ関係ある?
LISP 1.5 -- Millesime 1961
http://coding.derkeiler.com/Archive/Lisp/comp.lang.lisp/2005-06/msg00629.html
--
The LISP1.5 sources:
http://www.informatimago.com/develop/lisp/lisp15-0.0.tar.gz
The original Listing:
http://community.computerhistory.org/scc/projects/LISP/LISP1.5-Bonnie-sBirthdayAssembly.pdf
The asm7090:
http://www.cozx.com/~dpitts/ibm7090.html
0793デフォルトの名無しさん
2008/10/16(木) 12:30:05まだあるのか知らないけど。
0795デフォルトの名無しさん
2008/10/16(木) 12:38:130796デフォルトの名無しさん
2008/10/16(木) 12:50:59IBM704の1wordは36bitでprefix:3, decrement:12, tag:3, address:12というビットフィールドだったらしいです
それぞれcpr, cdr, ctr, carが対応し、word全体を表すcwrというものもあったそうです
0797デフォルトの名無しさん
2008/10/16(木) 12:57:200798デフォルトの名無しさん
2008/10/16(木) 12:58:390799デフォルトの名無しさん
2008/10/16(木) 13:09:280800デフォルトの名無しさん
2008/10/16(木) 15:25:040801デフォルトの名無しさん
2008/10/16(木) 18:00:55pythonのメタ制御をしたくてこんなのを見つけたのですが
この処理系独自の方法で
scheme共通のffiの方法はないのでしょうか
0802デフォルトの名無しさん
2008/10/16(木) 19:49:420803デフォルトの名無しさん
2008/10/16(木) 21:00:070804デフォルトの名無しさん
2008/10/16(木) 21:38:07閉じなきゃ、閉じなきゃと
思ってるうちに目が覚めた。
0805デフォルトの名無しさん
2008/10/16(木) 21:46:230806デフォルトの名無しさん
2008/10/16(木) 21:49:080807デフォルトの名無しさん
2008/10/16(木) 21:58:170808デフォルトの名無しさん
2008/10/16(木) 22:02:470809デフォルトの名無しさん
2008/10/16(木) 22:05:040810デフォルトの名無しさん
2008/10/16(木) 22:08:08今度、じっくり観察してみよう。
0811デフォルトの名無しさん
2008/10/16(木) 22:19:410812デフォルトの名無しさん
2008/10/16(木) 22:34:20スーパーこっか?
0813デフォルトの名無しさん
2008/10/16(木) 23:04:100814デフォルトの名無しさん
2008/10/16(木) 23:16:18pythonは電池
0815デフォルトの名無しさん
2008/10/17(金) 00:24:230816デフォルトの名無しさん
2008/10/17(金) 00:56:50lisp系言語なら別にどっちでもいいと思うよ。お好きにどうぞ。
0817デフォルトの名無しさん
2008/10/17(金) 01:12:20そのココロは?
0818デフォルトの名無しさん
2008/10/17(金) 07:12:20どうせ過疎るから。スレは立てないわ。ありがとう
0819デフォルトの名無しさん
2008/10/17(金) 09:14:57CDRはContents of the Decremental part of Register numberの略 (15 bits)
CTRはContents of the Tag part of Register numberの略 (3 bits)
CARはContents of the Address part of Register numberの略 (15 bits)
CWRはContents of the Word part of Register numberの略 (36 bits)
IBMの昔のコンピューター(IBM 704)のレジスタの略称に由来しています。
IBM704の1wordは36bits。
車(CAR)は左側通行という俗説もある。
0820デフォルトの名無しさん
2008/10/17(金) 09:46:081 1 1 2 2 3
0 1 2 3 .................7 8 9 0 1 .................5
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
<---> <-------------------> <---> <------------------->
prefix decrement tag address
0821デフォルトの名無しさん
2008/10/17(金) 10:12:089ビット単位でアドレッシング?
0822デフォルトの名無しさん
2008/10/17(金) 10:16:33ttp://www.bitsavers.org/pdf/ibm/704/24-6661-2_704_Manual_1955.pdf
0823デフォルトの名無しさん
2008/10/17(金) 13:21:08当初は4096ワード(12ビットぶん)実装してたってことでFAか
0824デフォルトの名無しさん
2008/10/17(金) 16:51:41返事がおそくなりました。
ありがとうございます。
0825デフォルトの名無しさん
2008/10/17(金) 21:06:46バイトアドレッシングがなかったのでは?
0826デフォルトの名無しさん
2008/10/18(土) 01:50:19PDPが大流行してからだからね。
packed BCDとかやってた頃。
0827デフォルトの名無しさん
2008/10/18(土) 08:36:41C言語との相性がいいこと
マイコンの主流がバイトアドレッシングになったこと
0828デフォルトの名無しさん
2008/10/18(土) 10:10:17毎回マクロを作らないで済むようにHaskellみたいに
ガード節が使えるパターンマッチでifの問題を回避できるんだよね。
http://codepad.org/yViqll2E
これのpmatchみたいなマクロを一度作れば、毎回マクロを作らないで済む。
「いつマクロが必要か?」という一例かな。
0829デフォルトの名無しさん
2008/10/18(土) 10:19:570830デフォルトの名無しさん
2008/10/18(土) 10:26:19cdr - carを除いた残り
CPRはContents of the Prefix part of Register numberの略 (3 bits)
CDRはContents of the Decremental part of Register numberの略 (15 bits)
CTRはContents of the Tag part of Register numberの略 (3 bits)
CARはContents of the Address part of Register numberの略 (15 bits)
CWRはContents of the Word part of Register numberの略 (36 bits)
IBMの昔のコンピューター(IBM 704)のレジスタの略称に由来しています。
IBM704の1wordは36bits。IBM704にはバイトアドレッシングがなかった。
バイトアドレッシングはPDP以降。メインフレームでは System/360 以降。
バイトアドレッシングが登場した頃、CPR・CTR・CWRは無くなった。
車(CAR)は左側通行という俗説もある。
0831デフォルトの名無しさん
2008/10/18(土) 11:50:57そりゃ違うと思ったので>>512をpmatchでやってみた。
http://codepad.org/StCiwAUv
やっぱ>>514みたいにマクロでやらないと、ガード節があっても関数は展開されるから駄目。
でもこのOleg Kiselyovのpmatchマクロは便利。
0832デフォルトの名無しさん
2008/10/18(土) 14:29:43then式とelse式をthunkで囲んだ式に変形するマクロがあれば没問題。
ifが特別式なのは習慣的にそうなっているだけで
マクロがあれば特別式はquote、lambdaだけでいいはず。
0833デフォルトの名無しさん
2008/10/18(土) 15:00:54SICPの冒頭で挙げられている三つの要素は
変数の参照と関数呼び出しとlambdaに対応する
0834デフォルトの名無しさん
2008/10/18(土) 16:40:47その話題の古典
Guy Lewis Steele, Jr.. "RABBIT: A Compiler for SCHEME". Masters Thesis. MIT AI Lab. AI Lab Technical Report AITR-474. May 1978
http://repository.readscheme.org/ftp/papers/ai-lab-pubs/AITR-474.pdf
0835デフォルトの名無しさん
2008/10/18(土) 18:03:180836デフォルトの名無しさん
2008/10/18(土) 18:10:32美国ってどこ?
0837デフォルトの名無しさん
2008/10/18(土) 18:14:310838デフォルトの名無しさん
2008/10/18(土) 18:14:59アメリカ
0839デフォルトの名無しさん
2008/10/18(土) 18:37:090840デフォルトの名無しさん
2008/10/18(土) 18:43:11中国語でアメリカ合衆国をさす。
0841デフォルトの名無しさん
2008/10/18(土) 19:17:10中国語:美国(メイグォ)、同上
韓国語:美国(ミグッ)、???
0842841
2008/10/18(土) 19:26:24”メイ”じゃなくて”メ”一音が米に相当するんですね
お詫びして訂正します
0843デフォルトの名無しさん
2008/10/18(土) 19:31:05合衆国市民とよくいう
0844デフォルトの名無しさん
2008/10/18(土) 19:39:110845デフォルトの名無しさん
2008/10/18(土) 19:40:080846デフォルトの名無しさん
2008/10/18(土) 19:55:44×アメリカ人は日本語しゃべれる
○日本語しゃべれるアメリカ人は存在する
Lispにも論理が極端に苦手な人っているんだな。
0847デフォルトの名無しさん
2008/10/18(土) 20:38:31○喋ることができる
0848デフォルトの名無しさん
2008/10/18(土) 21:16:46「喋れる」はら抜き言葉だから×だと言いたいのかな?
「喋る」は五段活用だから、「喋れる」はら抜き言葉ではないよ。
文法的には「話せる」「遊べる」など五段活用の可能表現と同一。
可能の意味しかないので「〜できる」と書かなくても誤解はない。
0849デフォルトの名無しさん
2008/10/18(土) 21:25:380850デフォルトの名無しさん
2008/10/18(土) 22:06:04うん、文法学的にはまさにそれが発生の理由だとされている。
もともと五段活用では可能(例:喋れる)が受身(例:喋られる)と区別されていて、
それが動詞一般に適用されたのがら抜き言葉。
0851デフォルトの名無しさん
2008/10/18(土) 22:22:050852デフォルトの名無しさん
2008/10/18(土) 22:22:54というのはできないものだろうか?
竹内先生の初期のLispってメモリの効率化から
そんなことやってたってどこかに書いてなかった?
ハミルトンの4元数みたいに拡張すると面白いことは
できないだろうか?と。
0853デフォルトの名無しさん
2008/10/18(土) 22:37:20言語処理で枝を複数出したいケースは確かにある。
たとえば「重要な昨日の問題」というようなケース。
「重要な」は「昨日」や「問題」ではなく「昨日の問題」に掛かっている。
昨日の問題
└重要な
これを文節単位で区切ろうとすると、ツリーを入れ子にするか、
名詞句を受けるノードを追加するような方法しかない。
0854デフォルトの名無しさん
2008/10/18(土) 22:42:45論理によるプログラミングといえばPrologしかない
Lispは論理を超越している。
0855デフォルトの名無しさん
2008/10/18(土) 22:46:24生成文法では後者ですな
自然言語処理では生成文法が主流でしょ
0856デフォルトの名無しさん
2008/10/19(日) 00:50:22何かXMLを使った方がいいような気がします。
0857デフォルトの名無しさん
2008/10/19(日) 02:06:44"cdr coding"でググれ
car/cbr/ccr/cdrって四つ組Lispもあった。
0858デフォルトの名無しさん
2008/10/19(日) 02:26:01シリアライズ形式は関係なくね?
XMLを使ったとして、LISPではDOMをリスト処理するよね?
だからこそ自然言語処理ではLISPが強いわけで。
0859デフォルトの名無しさん
2008/10/19(日) 02:39:43洋書ってLittle並に易しいですか?
0860デフォルトの名無しさん
2008/10/19(日) 02:43:10でもそれでLispでWebサーバ書いたり処理系書いたりすることは多分できない。
0861デフォルトの名無しさん
2008/10/19(日) 03:02:31自然言語処理ではLISPやPrologが強いって話はよく聞くんだが、
実際に商用の翻訳ソフトとかで使ってるって話は聞いたことがない。
しかも英日翻訳とか全然実用レベルに達してないじゃん。
これでまともに処理できてるって言えるの?
0862デフォルトの名無しさん
2008/10/19(日) 03:41:57基礎アルゴリズムを探求するうえで、
プロトタイプが得意なLisp, Prologは便利だった。
GC, S式, 節などのデータ構造がらみが特に。
今は基礎アルゴリズムが確立してきているので、
効率を考えてC/C++などで書かれることが多い。
代数処理系も同様。
0863デフォルトの名無しさん
2008/10/19(日) 03:45:20なるほど、サンクス!
0864デフォルトの名無しさん
2008/10/19(日) 04:38:11でも、商用で多分一番有名なSYSTRANなんかは今でもProlog/Lispプログラマ
募集してるよ。計算機言語学の論文なんかでもProlog使われてるし。
あと、英語<ー>日本語はラテン語圏内の機械翻訳にくらべてかなり難しいし
日本語話者は日本で閉じてるのでマーケットになりづらい。
韓国語<ー>日本語の機械翻訳ならけっこう意思疎通できるぞ。ホルホルホルとかあるけど。
0865デフォルトの名無しさん
2008/10/19(日) 05:09:49これまたサンクス!!
0866デフォルトの名無しさん
2008/10/19(日) 14:17:19(count)
(count)
に対して
the number of times the counter has been used 1
the number of times the counter has been used 2
という出力を出したいのですが、私がコーディングしたSchemeでは
(the number of times the counter has been used . 1)
という風に出てしまいます。
以下がコードなのですが、どこをどういう風に変えれば良いか教えていただきたく思います。ビギナー的な内容で恐縮ですがよろしくお願いします。
(define next 0)
(define count
(lambda()
(set! next (+ next 1))
(append '(the number of times the counter has been used) next)))
(count)
(count)
0867デフォルトの名無しさん
2008/10/19(日) 14:22:07そのコードに対してなるべく小さな変更で実現しようとするならこんな感じだと思う。
(define count
(lambda()
(set! next (+ next 1))
(append '(the number of times the counter has been used) `(,next))))
0868867
2008/10/19(日) 14:27:39おっと、その外側の括弧もいらないのかな?
文字列で返してほしいならこうなる。
(define count
(lambda()
(set! next (+ next 1))
(string-append "the number of times the counter has been used "
(number->string next))))
0869デフォルトの名無しさん
2008/10/19(日) 14:56:24>>868
あり得ないくらい助かります。本当にありがとうございます。
やっぱりappendを使うと( )が付いてくるのでしょうか。string-appendというのは初めてみました。大変勉強になりました。
0870デフォルトの名無しさん
2008/10/19(日) 15:09:59戻り値はリストで、表示は非リスト形式での表示にしたければ、次のようにするとか
(map (lambda (x) (display x) (display #\space) x)
(append '(the number of times the counter has been used) (cons next ())))
0871867
2008/10/19(日) 15:33:01> string-appendというのは初めてみました。
こういうこと言う初心者って多いけど、なんで R5RS を読まないのかと小一時間問い詰めたい。
いきなり読んでも意味わからんところは結構あるかもしれないが、
ありきたりな関数でも知ってるとそれなりに便利だし。 充分に洗練された日本語訳があるし。
それに、意味わかんなくても読んでおくと、
入門書を読みすすめていくうちに「なるほど、こういうことだったのか」っていう感覚が得られる。
地道に学習するにしても、マイルストーンがあるとはげみになるでしょ。
0872デフォルトの名無しさん
2008/10/19(日) 16:22:10cprが現代に(あまり)残ってなくてよかったな。
Lisperたちが「くぱぁ」「くぱぁ」言いまくる怪しい人たちになるところだった。
0873デフォルトの名無しさん
2008/10/19(日) 16:22:490874デフォルトの名無しさん
2008/10/19(日) 16:27:03せっかくだからクロージャー使って局所変数として
もたせた方がいいんじゃない?
0875デフォルトの名無しさん
2008/10/19(日) 16:33:47画面に表示して関数の値は#tとかというのは
ダメかな。
0876デフォルトの名無しさん
2008/10/19(日) 17:29:52(sexp 873) ;-> T
0877デフォルトの名無しさん
2008/10/19(日) 21:13:01ググるまで意味わかんなかった。
0878デフォルトの名無しさん
2008/10/19(日) 22:54:110879デフォルトの名無しさん
2008/10/20(月) 01:03:48carやcdrをシーエーアール・シーディーアールとは読まんでしょふつー
0880デフォルトの名無しさん
2008/10/20(月) 01:41:430881デフォルトの名無しさん
2008/10/20(月) 02:49:310882デフォルトの名無しさん
2008/10/20(月) 04:39:530883デフォルトの名無しさん
2008/10/20(月) 10:07:27CWRはバイトアドレッシングがどうのこうのと関係ないだろ?
CPR、CTRだってそうだけどな。
0884デフォルトの名無しさん
2008/10/20(月) 11:00:21今度使わせてもらうよ。
0885デフォルトの名無しさん
2008/10/20(月) 14:29:100886デフォルトの名無しさん
2008/10/20(月) 14:38:280887デフォルトの名無しさん
2008/10/20(月) 18:33:100888デフォルトの名無しさん
2008/10/20(月) 20:22:31Webアプリにはそういうのないの?
0889デフォルトの名無しさん
2008/10/20(月) 20:30:09えー?
そりゃプログラマにはそうだろうけどなぁ
0890デフォルトの名無しさん
2008/10/20(月) 21:02:49オープンソースなら自分で読めるでしょ。
0891デフォルトの名無しさん
2008/10/20(月) 21:09:00なって、細かいヘルパーとか揃ってくればぜひ使いたいな。
Railsを真似したSchemeによるフレームワークって無いのかな。
0893デフォルトの名無しさん
2008/10/20(月) 21:22:59え、あるの?教えてw
0894デフォルトの名無しさん
2008/10/20(月) 21:37:53プログラマ以外は関係ないじゃん。
少なくともこの板では。
0895デフォルトの名無しさん
2008/10/20(月) 21:41:20板の話をすれば確かにそうなんだけど、
この場合は話の流れで出てきた「デザイナ(>>886)」を絡めた会話だと思う。
0896デフォルトの名無しさん
2008/10/20(月) 21:43:56このリポジトリに。
http://ey-office.net/svn/rails/trunk/GaucheRails/
0897デフォルトの名無しさん
2008/10/20(月) 21:55:40必要なときに変換すればいいんでないの?
0898デフォルトの名無しさん
2008/10/20(月) 21:58:38DOMくらい理解してるだろ。
0899デフォルトの名無しさん
2008/10/20(月) 22:05:560900デフォルトの名無しさん
2008/10/20(月) 23:10:29閉じタグでつりあいをチェックできる
→typoにつよい
<むすー>
<わはー>
</むすー>
この場合</むすー>の前に</わはー>があるとみなすんだっけ?
それともエラーになるんだっけ?
(むすー (わはー)
readがエラーを返す
0901デフォルトの名無しさん
2008/10/20(月) 23:14:02なして?
0902デフォルトの名無しさん
2008/10/20(月) 23:23:52<わはー>
</むすー>
</わはー>
ってのはXMLの仕様でやっちゃいけないと決まってるから
普通のパーサの実装なら </むすー> が見つかった時点でエラー
0903デフォルトの名無しさん
2008/10/21(火) 01:00:540904デフォルトの名無しさん
2008/10/21(火) 01:03:14流行ってるしWebグラマには人気なのはわかるけどさ・・・・
0905デフォルトの名無しさん
2008/10/21(火) 01:28:42便利で実用的な言葉だ…
0906デフォルトの名無しさん
2008/10/21(火) 09:00:370907デフォルトの名無しさん
2008/10/21(火) 12:41:390908デフォルトの名無しさん
2008/10/21(火) 12:47:080909デフォルトの名無しさん
2008/10/21(火) 13:17:280910デフォルトの名無しさん
2008/10/21(火) 14:30:26hogeとかgegeとかと一緒じゃね?
0911マジレスごめん
2008/10/21(火) 14:41:58「さんー」よくきー
「けよー」や
「まおー」とこに
「わはー」
0912デフォルトの名無しさん
2008/10/21(火) 15:13:04http://www.invizoo.com/geru/gallery/graphics/nijiura/wahawhf01.jpg
0913デフォルトの名無しさん
2008/10/21(火) 15:23:040914デフォルトの名無しさん
2008/10/21(火) 16:26:290915デフォルトの名無しさん
2008/10/21(火) 16:44:11そっちのオタクの世界なのか。
0916デフォルトの名無しさん
2008/10/21(火) 17:05:39わけわからん
0917デフォルトの名無しさん
2008/10/21(火) 17:20:08なんじゃそりゃ〜!
マジでfoo,barのたぐいかと思った
0918デフォルトの名無しさん
2008/10/21(火) 18:23:370919デフォルトの名無しさん
2008/10/21(火) 20:27:59これって実績あるの?セミナー用に作っただけじゃなくて?
0920デフォルトの名無しさん
2008/10/21(火) 20:28:25これか。面白そうだな。
http://www.lisp50.org/
0921デフォルトの名無しさん
2008/10/22(水) 01:54:07今度から「わはー」と「むすー」使うわw
0922デフォルトの名無しさん
2008/10/22(水) 02:22:46うーん。変な構文(人に優しい構文ってなんだよ)を導入するより
S式に拒否反応を示す馬鹿をチームから捨てた方が早いんじゃないかな。
0923デフォルトの名無しさん
2008/10/22(水) 02:30:360924デフォルトの名無しさん
2008/10/22(水) 02:35:49Listにある4×4マトリックスの四つ、例えば
'((1 2 3 4)(5 6 7 8)(9 0 1 2)(3 4 5 6))を
((1 8 9 3)(2 6 0 4)(3 7 1 5)(4 8 2 6))
という形にリカーシブに4つのマトリックスを転置行列したいのですが、思うようにいかず困っています。
どちら様かアイデアを頂ければ大変助かります。宜しくお願いします。
0925デフォルトの名無しさん
2008/10/22(水) 02:51:44M
gosh> (use srfi-1)
#<undef>
gosh> (apply zip M)
((1 5 9 3) (2 6 0 4) (3 7 1 5) (4 8 2 6))
0926デフォルトの名無しさん
2008/10/22(水) 02:54:57(define (substitution mat) (apply map list mat))
0927デフォルトの名無しさん
2008/10/22(水) 02:57:300928デフォルトの名無しさん
2008/10/22(水) 03:04:48reformで新しいリストを作成して、その中に入れていくという方法もあるかな。
0929デフォルトの名無しさん
2008/10/22(水) 03:38:57R5RS
> procは手続き、argsはリストでなければならない。
> リスト`(append (list arg1 ...) args)'の要素を実引数に使用してprocを呼び出す。
(append (list list) '((1 2 3 4) (5 6 7 8) (9 0 1 2) (3 4 5 6)))
(map list '(1 2 3 4) '(5 6 7 8) '(9 0 1 2) '(3 4 5 6))
0930デフォルトの名無しさん
2008/10/22(水) 06:31:05ruby屋はこれだから(ry
0931デフォルトの名無しさん
2008/10/22(水) 07:51:28自分で構文作れるってもLispの一部だからまぁいいんじゃね?
何かが奇妙だ、とは思うけどw
ただ、構文と実装と両方のバグとか不具合に対応するって
大変だったろうな。
0932デフォルトの名無しさん
2008/10/22(水) 09:34:00再帰じゃ無くしかもベクターだけど、数値計算は汎用ルーチンでやった方が安心。
http://codepad.org/f6dZESSj
0933デフォルトの名無しさん
2008/10/22(水) 10:34:40そうしょっちゅう上京していられないのだが
0934デフォルトの名無しさん
2008/10/22(水) 13:45:42>>927
早速のお返事ありがとうございます。我流で本を読みながらその付属の問題からのモノだったのですが、
carとcdrとlistに関しての基本的なリカーシブのトピックなので、頂いたコードは少しトピ違いでした(最初にいっておけばよかったです、申し訳ないです)。
>>928
そうです、パズル感覚の問題だと思います。Reformを調べてみます。
とりあえずお答えありがとうございます。
0935デフォルトの名無しさん
2008/10/22(水) 14:04:35SICPではaccumulateを使って再帰処理してる。
http://codepad.org/jFscjfs5
0936デフォルトの名無しさん
2008/10/22(水) 14:26:21SICPではaccumulate(=fold-right)かfold-leftで再帰処理だね。
0937デフォルトの名無しさん
2008/10/22(水) 14:37:15それをfold-leftで書き直せれば再帰処理を理解できてるか判断できるね。
0938デフォルトの名無しさん
2008/10/22(水) 20:26:35fold-leftで再帰処理したプログラムも作ってみた。
http://codepad.org/y1R8xgv9
0939デフォルトの名無しさん
2008/10/22(水) 22:51:23>>926 http://codepad.org/aiOINqa8
>>932 http://codepad.org/f6dZESSj
>>935 http://codepad.org/jFscjfs5
>>938 http://codepad.org/y1R8xgv9
0940デフォルトの名無しさん
2008/10/24(金) 04:43:30関数型言語(Scheme,Erlang, Haskell, ML等)を学ぶ上での将来性の利点を教えてください。
0941デフォルトの名無しさん
2008/10/24(金) 05:00:490942デフォルトの名無しさん
2008/10/24(金) 05:04:26両方やって虻蜂取らずになるよりか、まずは簡単なJavaをある程度マスターして、
それから関数型をやってもまったく遅くない。
0943デフォルトの名無しさん
2008/10/24(金) 05:46:05Javaをやってると
再帰的な関数記述の感覚が鋭くなるかというと、
そうではないと思う。将来性を考えて関数型を
やりたいなら、今すぐ切り替えるべき。
0944デフォルトの名無しさん
2008/10/24(金) 07:11:35javaにも応用できる知識を学べる。
Scheme(Lisp)は回帰ロジックに強いという印象を持ちました。
0945デフォルトの名無しさん
2008/10/24(金) 07:31:58再帰だけなら関数型言語やらなくても
Eric Roberts "Thinking Recursively with JAVA"
でも読めば足りる。
JAVAで不満が出てきてから他の言語を考えれば?
いろんな言語を知っててもどれもボチボチでは困ると思うよ。
その言語のどういった点が良さそうかハッキリさせてから
完全に乗り換えるのがいい。
0946デフォルトの名無しさん
2008/10/24(金) 07:56:45関数型言語をやるのはやめときな。
0947デフォルトの名無しさん
2008/10/24(金) 08:13:14--- 5人の若者達が時に傷つけ合い、時に励ましあいながら成長していく青春ドラマ ---
出演:
Ben Bitdiddle
Alyssa P. Hacker
Eva Lu Ator
Louis Reasoner
Lem E. Tweakit
0948デフォルトの名無しさん
2008/10/24(金) 08:50:17ここできくと、背中を押す人や梯子を外す人など様々な人がいるけど、やりたければ
その気持ちに忠実にすればいい。
関数型の利点は、関数を作るときに最小単位をしっかり考えるくせがつく。それが無
ければデバックもままならない。javaなどなら一つの関数にいろんな動作を入れがち
だが、これは関数型と手続き型の大きな違いで、関数型のプログラミングを学と、読
みやすいソースを記述することができるね。それ故に、生産性がいいと言われている。
将来性だが、マシンパワーは普通のことをする限り最適化に気合を入れる必要がな
くなってきたこともあって、生産性の高さに変わってきている。生産性の高さはLLがあ
るけどLLより速くって、生産性があるとなれば手続き型言語より関数型に変わる。この
変化の兆候は少しずつみえてきている。おそらく、ここ5年で関数型へもう少し切り替
わるだろう。
一方javaでの大きな問題は何でもかんでもオブジェクト指向で片付ける悪い癖がつく
ね。他へパラダイムシフトをするときについていけなくなる危険はある。だから、関数
型を知っておくと、変化についていける可能性は高いと思うね。javaVMも多様な方向に
動き出していて、scala,clojureでてきているから、javaのライブラリをそれから利用できる
ために、javaを知っておくと有利になる部分も持っていますね。
いかんせん、日本語の情報が少ないものが多いので、gauche,ocaml,haskell,common lisp
など、日本語で書籍が出ているものに手を出す方が勉強しやすいだろう。
0949デフォルトの名無しさん
2008/10/24(金) 09:07:31広げるというならわかるが
cpr
0950デフォルトの名無しさん
2008/10/24(金) 10:35:18将来はコンピュータの機械命令が関数型になるであろうから関数型をやる
というのでは答えにならないのかな。
0951デフォルトの名無しさん
2008/10/24(金) 10:40:210952デフォルトの名無しさん
2008/10/24(金) 12:43:1130年前からタイムスリップしてきたんですね。
0953デフォルトの名無しさん
2008/10/24(金) 12:47:370954デフォルトの名無しさん
2008/10/24(金) 12:54:34LISPマシンは時期尚早だっただろうけれど、20年後には
Haskell的マシンになるんじゃないの?
0955デフォルトの名無しさん
2008/10/24(金) 12:58:06特殊化は効果があげられない
というのが前世紀の結論です。
0956デフォルトの名無しさん
2008/10/24(金) 13:15:15機械命令についてはよくわからないけど、
1024コアの並列といった環境でも手続き型言語は有効なの?
0957デフォルトの名無しさん
2008/10/24(金) 14:10:55どのような言語で書くかは最初は気にしない
似たようなものを何度も書くようになってから書きやすい言語を探せばいい
0958デフォルトの名無しさん
2008/10/24(金) 17:21:150959デフォルトの名無しさん
2008/10/24(金) 17:39:010960デフォルトの名無しさん
2008/10/24(金) 17:50:18そうおもう。lispも理解しやすいけど、特にhaskellは扱い易そうに思う。<数学やってきた人
0961デフォルトの名無しさん
2008/10/24(金) 21:29:10と言う嘘を大衆に植え付けたからだよ。
当時のイルミナティはMITのトイレから入ることが出来たんだが、
あ、、、誰か来たから後で続き書くね(^o^)/
0962デフォルトの名無しさん
2008/10/24(金) 21:37:020963デフォルトの名無しさん
2008/10/24(金) 21:59:49捕まると洗脳されてCしか書けない体にされてしまう。
lambdaのスペルを一生思い出せないようにされるという。
これ以上は危なくて話せない。
0964デフォルトの名無しさん
2008/10/24(金) 22:14:480965デフォルトの名無しさん
2008/10/24(金) 22:21:06アホな低級レス
どうしようもない
0966デフォルトの名無しさん
2008/10/24(金) 22:59:110967デフォルトの名無しさん
2008/10/24(金) 23:06:590968デフォルトの名無しさん
2008/10/24(金) 23:16:05これはね、SolarisがとうとかLinuxがどうとかというレベルじゃないですよ。
もうひとつ上のレベル。
OSという本質的な意味ね。IBMとかが「Linuxで!」なんて聞くと「え?っ!」て思うもん。
「あなたたち、IBMでしょ。それはないんじゃないですか?」って。
そりゃMulticsの時代にMulticsってヤバイからUnixねって、それって何10年も前の話でしょ。
http://sdc.sun.co.jp/news/200201/danwa01.html
0969デフォルトの名無しさん
2008/10/25(土) 00:10:46大学で単位取っただけだから全く知らね
0970デフォルトの名無しさん
2008/10/25(土) 00:26:18SMPもそういう夢を見られた頃がありました。
マルチコアだって今は一桁だからスケールしてるだけ。
0971デフォルトの名無しさん
2008/10/25(土) 01:42:270972デフォルトの名無しさん
2008/10/25(土) 01:43:34ナイス。
0973デフォルトの名無しさん
2008/10/25(土) 01:53:470974デフォルトの名無しさん
2008/10/25(土) 02:03:29Web2.0とかクラウドみたいな怪しげなところに行くのはやめてくれ
0975デフォルトの名無しさん
2008/10/25(土) 02:03:570976デフォルトの名無しさん
2008/10/25(土) 02:06:21ポール・グレアムはそんな方向ですがやっぱり怪しげですか?
0977デフォルトの名無しさん
2008/10/25(土) 02:29:19これはね、Common LispがとうとかSchemeがどうとかというレベルじゃないですよ。
もうひとつ上のレベル。
関数型言語という本質的な意味ね。MITとかが「Lispで!」なんて聞くと「え?っ!」て思うもん。
「あなたたち、MITでしょ。それはないんじゃないですか?」って。
そりゃFortranの時代にFortranってヤバイからLispねって、それって何10年も前の話でしょ(笑)
0978デフォルトの名無しさん
2008/10/25(土) 02:42:20pgは雲行きが怪しくなったらスパッと諦める
0979デフォルトの名無しさん
2008/10/25(土) 02:50:180980デフォルトの名無しさん
2008/10/25(土) 02:51:00MITとかが「Lispで!」なんて聞くと「え?っ!」て思うもん。
「デルモ!」っていったら「え?っ!」ってみんなが。
0981デフォルトの名無しさん
2008/10/25(土) 07:16:270982デフォルトの名無しさん
2008/10/25(土) 15:35:430983デフォルトの名無しさん
2008/10/25(土) 15:36:220984デフォルトの名無しさん
2008/10/25(土) 15:37:130985デフォルトの名無しさん
2008/10/25(土) 15:39:420986デフォルトの名無しさん
2008/10/25(土) 15:41:020987デフォルトの名無しさん
2008/10/25(土) 16:01:560988デフォルトの名無しさん
2008/10/25(土) 18:32:02どないなもんだろう。経済対策にもなるしあの忌々しい
ノイマン型から脱出できるかもしれないじゃん。
臨時経済対策にどうですか、麻生さん。
0989デフォルトの名無しさん
2008/10/25(土) 19:51:050990デフォルトの名無しさん
2008/10/25(土) 20:12:34論理型@ICOT
データフロー@九州大学
と既にやってます。
0991デフォルトの名無しさん
2008/10/25(土) 20:15:080992デフォルトの名無しさん
2008/10/25(土) 20:39:080993デフォルトの名無しさん
2008/10/25(土) 20:39:520994デフォルトの名無しさん
2008/10/25(土) 20:40:440995デフォルトの名無しさん
2008/10/25(土) 21:38:55http://pc11.2ch.net/test/read.cgi/tech/1215875388/
0996デフォルトの名無しさん
2008/10/25(土) 21:56:28http://pc11.2ch.net/test/read.cgi/tech/1224939205/l200
0997デフォルトの名無しさん
2008/10/25(土) 22:02:260998デフォルトの名無しさん
2008/10/25(土) 22:17:500999デフォルトの名無しさん
2008/10/25(土) 22:29:261000デフォルトの名無しさん
2008/10/25(土) 22:30:3810011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。