Lisp Scheme Part22
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2008/05/21(水) 23:58:40Part21: 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/
Part9: ttp://pc2.2ch.net/test/read.cgi/tech/1069594582/
Part8: ttp://pc5.2ch.net/tech/kako/1058/10582/1058263391.html
Part7: ttp://pc5.2ch.net/tech/kako/1042/10421/1042167213.html
Part6: ttp://pc3.2ch.net/tech/kako/1031/10315/1031560687.html
Part5: ttp://pc3.2ch.net/tech/kako/1023/10230/1023091882.html
Part4: ttp://pc.2ch.net/tech/kako/1016/10162/1016211619.html
Part3: ttp://pc.2ch.net/tech/kako/1008/10082/1008220265.html
Part2: ttp://pc.2ch.net/tech/kako/1002/10025/1002584344.html
Part1: ttp://piza2.2ch.net/tech/kako/987/987169286.html
0002デフォルトの名無しさん
2008/05/21(水) 23:59:51日本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
「普通のやつらの上を行け」など、興味深い文書を沢山翻訳されてます。
(Gaucheという完成度の高いscheme処理系作者さんのページでもあります。)
LispUser.net
ttp://lispuser.net/
0003デフォルトの名無しさん
2008/05/22(木) 00:00:15CLtL2: 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 (ja)
ttp://www.sci.u-toyama.ac.jp/~iwao/Scheme/r5rsj/html/r5rsj.html
R5RS: Revised(5) Report on the Algorithmic Language Scheme (en)
ttp://swiss.csail.mit.edu/~jaffer/r5rs_toc.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/05/22(木) 00:01:08SICP(英語)
ttp://mitpress.mit.edu/sicp/full-text/book/book.html
「計算機プログラムの構造と解釈」の原書です。 全てオンラインで読めます。
計算機プログラムの構造と解釈 第二版 (snip) に関連するホームページ
ttp://sicp.ipl.t.u-tokyo.ac.jp/
□wikipedia関連□
http://ja.wikipedia.org/wiki/LISP
http://ja.wikipedia.org/wiki/Common_Lisp
http://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/05/22(木) 00:01:240006デフォルトの名無しさん
2008/05/22(木) 00:01:48John McCarthy's Home Page
ttp://www-formal.stanford.edu/jmc/
LISPの生みの親、J・マッカーシーのページだそうです。
Association of Lisp Users 米国のLispユーザ会
ttp://www.alu.org/alu/home
CMUの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/
Bibliography of Scheme-related Research Scheme関連の論文リンク集
ttp://library.readscheme.org/
Scheme Hash(英語) S式でXMLを使える様にするSXMLなど
ttp://okmij.org/ftp/Scheme/index.html
幻の「入門Scheme」 オンラインで読める
ttp://www4.ocn.ne.jp/~inukai/scheme_primer_j.html
各種scheme処理系をcygwin上からビルドする方法など。
ttp://www.geocities.co.jp/SiliconValley-PaloAlto/7043/
encyCMUCLopedia (cmucl以外でも有益なはず )
ttp://www.isr.ist.utl.pt/library/docs/encycmuclopedia/doc/
0007デフォルトの名無しさん
2008/05/22(木) 00:06:18独習 Scheme 三週間 (Schemeの教科書 )
ttp://www.sampou.org/scheme/t-y-scheme/t-y-scheme-Z-H-1.html
Cliki (CLコードがたくさん紹介されている。)
ttp://www.cliki.net/index
よろずや (lispの実用的な情報が色々。 )
ttp://www.geocities.co.jp/SiliconValley-SanJose/7474/
Common-Lisp.net: 多くのプロジェクトがホスティングされてる
ttp://common-lisp.net/
Practical Common Lisp: S式の羅列で現実的な問題をどう解くのかそのギャップに悩まされてる人に
ttp://www.gigamonkeys.com/book/
SLIB
ttp://swiss.csail.mit.edu/~jaffer/SLIB
SRFI
ttp://srfi.schemers.org/
Meadow memo: 2ちゃんねるログ(dat落ちした過去スレの一部が見られます。 )
ttp://www.bookshelf.jp/2ch/index.html
Lispとは何か
ttp://www.asahi-net.or.jp/%7Eki4s-nkmr/lisp20061121/lisp.html
0008デフォルトの名無しさん
2008/05/22(木) 00:06:42初心者が集うIRC(布教してくれる先生も大募集です)
irc.scenecritique.com
port 6667
チャンネル #Lisp_Scheme
Scheme のテストコード書いたり、簡単な実行したりコードさらしたりするにはここへカモン。
ttp://codepad.org/
コードを書いて実行した時のURLを記録しておけば、
実行結果も一緒にさらす事が出来て幸せです。
0009デフォルトの名無しさん
2008/05/22(木) 00:07:42Bit (mini-schemeよりも小さい(?)bytecode変換系 )
ttp://www.iro.umontreal.ca/~dube/
Lisp 言語処理系: CAMPUS LIsP, Lemon version (Cでわずか1000行)
ttp://www-masu.ist.osaka-u.ac.jp/~kakugawa/hacks/clisp/
Schemix (Linuxのkernelへのパッチで/dev/として扱えるTinyScheme )
ttp://www.abstractnonsense.com/schemix/
awkで書かれたわずか500行のLispインタプリタ
ttp://www.accesscom.com/~darius/
Bigloo CLR 用のコードを吐けるようになったらしい
ttp://www-sop.inria.fr/mimosa/fp/Bigloo/
SECDR-Scheme: SECD machine model に基づく実装
ttp://lily.fan.gr.jp/~kmd/adhoc/view.rhtml?n=SECDR-Scheme_woyomu
Minischeme: 1 ファイルに凝縮された Scheme 処理系
ttp://tinyscheme.sourceforge.net/minischeme.tar.gz
TinyScheme: Minischeme を色々弄ったもの
ttp://tinyscheme.sourceforge.net/
KI-Scheme, AM-Scheme, etc...
ttp://www.nifty.com/download/dos/prog/lisp/
LispMe: Palm 上で動く Scheme 処理系. これも SECD virtual machine.
ttp://www.lispme.de/lispme/
0010デフォルトの名無しさん
2008/05/22(木) 00:09:07Gauche: R5RS準拠のScheme処理系。Shiro Kawaiさん作。
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/
Steel 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/
Arc: ポール・グレアム氏が作成した新しいLisp
ttp://arclanguage.org/
0011デフォルトの名無しさん
2008/05/22(木) 00:09:40GaucheNight(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://cl-www.msi.co.jp/solutions/knowledge/lisp-world/articles/scheme
Scheme:マクロ:CommonLispとの比較
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
Script Languages
ttp://cl-www.msi.co.jp/solutions/knowledge/lisp-world/articles/script-lang
0012デフォルトの名無しさん
2008/05/22(木) 00:12:20<プログラミングGauche>
・著者:川合史朗 監修 / Kahuaプロジェクト 著
・定価:3360円(本体3200円+税)
・B5変 524頁
・ISBN 978-4-87311-348-7
・発売日:2008/03/14
Scheme処理系言語Gauche(ゴーシュ)の初の解説書!
ttp://ssl.ohmsha.co.jp/cgi-bin/menu.cgi?&ISBN=978-4-87311-348-7
立ち読み版
ttp://karetta.jp/book/gauche-hacks
<On Lisp>
・著者:Paul Graham 著 / 野田 開 訳
・定価:3990円(本体3800円+税)
・A5 440頁
・ISBN 978-4-274-06637-5
LispハッカーPaul Grahamが、Lispの力の源泉であるマクロプログラミングを解説
ttp://ssl.ohmsha.co.jp/cgi-bin/menu.cgi?ISBN=978-4-274-06637-5
HTML版
ttp://user.ecc.u-tokyo.ac.jp/~tt076524/onlispjhtml/
<The Scheme Programming Language>
(英語 オンライン読可)
ttp://www.scheme.com/tspl3/
0013デフォルトの名無しさん
2008/05/22(木) 00:12:53【入門】Common Lisp その4【質問よろず】
ttp://pc11.2ch.net/test/read.cgi/tech/1201402366/
【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/
Lisp@UNIX版
ttp://pc11.2ch.net/test/read.cgi/unix/1019926525/
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/
0014デフォルトの名無しさん
2008/05/22(木) 00:16:110015デフォルトの名無しさん
2008/05/22(木) 01:05:55λ....... あ、、これはラムダなんだからね!乙じゃないんだからぁ!
0016デフォルトの名無しさん
2008/05/22(木) 03:17:05guile:R5RS準拠のGNUの公式拡張用言語、もちろんSLIBも使えます。
ttp://www.gnu.org/software/guile/guile.html
0017デフォルトの名無しさん
2008/05/22(木) 20:24:36ttp://codepad.org/F4Kw7JDA
0018デフォルトの名無しさん
2008/05/22(木) 21:49:40女王様のジャムが盗まれました.犯行は単独犯によるものだとい
うことがわかっていて,容疑者は三月ウサギと頭のいかれた帽子屋とヤマネです.それぞれを取
り調べたところつぎのような証言をしました.
三月ウサギ 「私は絶対にジャムなど盗んでいません.」
帽子屋 「私たち3人のうち1人がジャムを盗みました.でもそれは私ではありません」
ヤマネ 「ウサギと帽子屋のどちらか一方だけが本当のことを言っています」
さらに調べたところ,三月ウサギとヤマネの少なくとも一方は嘘だということがわかりました.
ジャムを盗んだのは誰でしょうか?
0019デフォルトの名無しさん
2008/05/22(木) 22:02:340020デフォルトの名無しさん
2008/05/22(木) 23:02:06三月ウサギ or 帽子屋 or ヤマネ ?
0021デフォルトの名無しさん
2008/05/22(木) 23:04:060022デフォルトの名無しさん
2008/05/22(木) 23:08:000023デフォルトの名無しさん
2008/05/22(木) 23:13:18おまえ三月ウサギだったのか。往生しろ!w
ttp://codepad.org/hT2eWLdF
0024デフォルトの名無しさん
2008/05/22(木) 23:18:540025デフォルトの名無しさん
2008/05/22(木) 23:25:14ジャムを盗んだのは誰でしょうか?と質問してる人
0026デフォルトの名無しさん
2008/05/22(木) 23:26:48発情してるからかw
>自分のことって意外と判らんもんなんですわ
0027デフォルトの名無しさん
2008/05/22(木) 23:34:56前者ならヤマネが犯人、後者は矛盾
ヤマネが真→兎が嘘且つ帽子が真
兎が犯人
じゃない?
0028デフォルトの名無しさん
2008/05/23(金) 01:01:49それだけだと条件が足りず、答えが2通りでてしまう。
0029デフォルトの名無しさん
2008/05/23(金) 01:16:220030デフォルトの名無しさん
2008/05/23(金) 09:35:290031デフォルトの名無しさん
2008/05/23(金) 09:59:130032こんなんでどうだろ
2008/05/23(金) 16:36:16(define mhatter-s '(and (not (criminal mhatter)) (or mrubbit mhatter dormouse)))
(define dormouse-s '(xor (truth mrubbit-s) (truth mhatter-s)))
(define term '(and (xor (criminal mrubbit) (criminal mhatter) (criminal dormouse))
(or (not (truth mrubbit-s)) (not (truth dormouse-s))) ))
(truth term)
0033デフォルトの名無しさん
2008/05/23(金) 18:07:56絞れます。>>23
0034デフォルトの名無しさん
2008/05/23(金) 18:10:40できない子は有難くROMってろw
0035デフォルトの名無しさん
2008/05/23(金) 18:13:130036デフォルトの名無しさん
2008/05/23(金) 19:11:18;⇒(xor (�@) (�B))⇒(xor (�@) (xor (�@) (�A)))
ここ違いませんか?
0037デフォルトの名無しさん
2008/05/23(金) 19:35:290038デフォルトの名無しさん
2008/05/23(金) 19:36:35もう少し具体的に言うとどういうところ?
0039デフォルトの名無しさん
2008/05/23(金) 19:39:58ばーか。答は合ってるんだよ。ちっとはググレ。解き方が変なんだ。
0040デフォルトの名無しさん
2008/05/23(金) 20:17:44(xor (�@) (�B))だと(少なくとも一方が嘘)ではなく(どちらか一方が嘘)になる
0041デフォルトの名無しさん
2008/05/23(金) 20:59:26ttp://codepad.org/hiI1QK5U
0042デフォルトの名無しさん
2008/05/23(金) 21:47:12残念。答が違うよ。
0043デフォルトの名無しさん
2008/05/23(金) 21:49:040044デフォルトの名無しさん
2008/05/23(金) 21:52:400045デフォルトの名無しさん
2008/05/23(金) 21:52:48(not (and (�@) (�B)))ではだめ。それだと両方とも嘘だということになって意味が違ってしまう。
0046デフォルトの名無しさん
2008/05/23(金) 21:55:190047デフォルトの名無しさん
2008/05/23(金) 21:55:59なら三月ウサギとヤマネの両方が嘘でも真では?
0048デフォルトの名無しさん
2008/05/23(金) 22:05:01ttp://codepad.org/BiVICzJG
0049デフォルトの名無しさん
2008/05/23(金) 22:06:03ベン図書いてミソ。
0050デフォルトの名無しさん
2008/05/23(金) 22:07:430051デフォルトの名無しさん
2008/05/23(金) 22:08:23は違いますよね?
0052デフォルトの名無しさん
2008/05/23(金) 22:11:47文章からココを読み取れるかどうかが論理プログラミングの難しいところか。
0053デフォルトの名無しさん
2008/05/23(金) 22:14:48なら>>41と>>48が同じ答になるのは何故?
0054デフォルトの名無しさん
2008/05/23(金) 22:17:330055デフォルトの名無しさん
2008/05/23(金) 22:25:39それは違う。
論理的帰結としてrequireになることがわかった枝をこのschemeの論理プログラムでは自動的に修正できない。
そこで、プログラマーが自分でその枝をrequireにしてやらなければならない。
半自動定理証明を調べてみろ。
0056デフォルトの名無しさん
2008/05/23(金) 22:39:59(男 . 男) -> #t
(男 . 女) -> #t
(女 . 男) -> #t
(女 . 女) -> #f
2人組がいる。どちらか1人は男だ。
(男 . 男) -> #f
(男 . 女) -> #t
(女 . 男) -> #t
(女 . 女) -> #f
>>53
志村〜、ド・モルガン
0057デフォルトの名無しさん
2008/05/23(金) 22:44:16あ、そっか。対話型でやってる部分はそういう項を書き換えてるということだね。
つまり>>23は書き換え操作が入ってるから枝が増えてるということか。
0058デフォルトの名無しさん
2008/05/23(金) 23:04:49それはわかったw
0059デフォルトの名無しさん
2008/05/23(金) 23:07:06ttp://codepad.org/0pMJwn0y
0060デフォルトの名無しさん
2008/05/23(金) 23:14:560061デフォルトの名無しさん
2008/05/23(金) 23:15:090062デフォルトの名無しさん
2008/05/23(金) 23:15:51(define (誰かひとりが犯人? . ls)
(cond
((eq? (car ls) '有罪) (and (eq? (cadr ls) '無罪) (eq? (caddr ls) '無罪)))
((eq? (cadr ls) '有罪) (and (eq? (car ls) '無罪) (eq? (caddr ls) '無罪)))
((eq? (caddr ls) '有罪) (and (eq? (car ls) '無罪) (eq? (cadr ls) '無罪)))))
の不備は不問?
0063デフォルトの名無しさん
2008/05/23(金) 23:22:270064デフォルトの名無しさん
2008/05/23(金) 23:27:56>>23のは含んでない。
でも、>>23も正解に到達するのは2つ目のrequireを追加することが両方とも嘘の場合を却下したからだ。
だから>>59の両方とも嘘の場合もキャンセルされて、>>23と>>59は同じ結果になる。
ということは>>23はrequireを追加しただけじゃなく(not(and�@ �A))も書き換えてることになる。
0065デフォルトの名無しさん
2008/05/23(金) 23:29:330066デフォルトの名無しさん
2008/05/23(金) 23:31:38帽子屋「俺じゃない」
ヤマネ「ウサギか帽子屋のどちらかだ」
0067デフォルトの名無しさん
2008/05/23(金) 23:37:02なぜヤマネの主張をrequireする?
0068デフォルトの名無しさん
2008/05/23(金) 23:43:43(define (誰かひとりが犯人? . ls)
(cond
((eq? (car ls) '有罪) (and (eq? (cadr ls) '無罪) (eq? (caddr ls) '無罪)))
((eq? (cadr ls) '有罪) (and (eq? (car ls) '無罪) (eq? (caddr ls) '無罪)))
((eq? (caddr ls) '有罪) (and (eq? (car ls) '無罪) (eq? (cadr ls) '無罪)))
(else #f)))
こうだよねw
0069デフォルトの名無しさん
2008/05/23(金) 23:46:43ttp://codepad.org/XTHODItB
0070デフォルトの名無しさん
2008/05/23(金) 23:50:30(eq? 帽子屋 '有罪) (eq? ヤマネ '有罪))
(xor (eq? 三月ウサギ '有罪) (eq? ヤマネ '有罪))))
があるってことはヤマネは常に正しい事を言ってるんですね。
ヤマネの弁護士の方ですか?
0071デフォルトの名無しさん
2008/05/24(土) 00:05:26しかし、ウサギとヤマネが少なくとも一方は嘘だということに矛盾する。
したがって、帽子屋は本当のことをいった。ここまではわかった。
0072デフォルトの名無しさん
2008/05/24(土) 00:09:28犯人であることと嘘を言っていることは同値ということになります
で、ウサギとヤマネの少なくとも一方が嘘ですが、これ以上絞り込めません
0073デフォルトの名無しさん
2008/05/24(土) 00:13:43>ヤマネ 「ウサギと帽子屋のどちらか一方だけが本当のことを言っています」
ヤマネ 「ウサギと帽子屋の少なくとも一方は本当のことを言っています」
になってた。つまり、帽子屋が本当のことをいった時点でヤマネは本当のことを言ったことになる。
つまり>>18の問題文は間違ってる。その結果、2通りの答が出ることになったと思う。
たぶん、>>23は他のサイトでも見てるんだろう。>>70の主張が正しいと思う。
0074デフォルトの名無しさん
2008/05/24(土) 00:34:54(let loop () (and (amb) (loop)))とかにしたほうがいいですね
0075デフォルトの名無しさん
2008/05/24(土) 01:31:24女王様のジャムが盗まれました.犯行は単独犯によるものだとい
うことがわかっていて,容疑者は三月ウサギと頭のいかれた帽子屋とヤマネです.それぞれを取
り調べたところつぎのような証言をしました.
三月ウサギ 「私は絶対にジャムなど盗んでいません.」
帽子屋 「私たち3人のうち1人がジャムを盗みました.でもそれは私ではありません」
ヤマネ 「ウサギと帽子屋の少なくとも一方は本当のことを言っています」 ←修正!
さらに調べたところ,三月ウサギとヤマネの少なくとも一方は嘘だということがわかりました.
ジャムを盗んだのは誰でしょうか?
ttp://codepad.org/ffEosmDe
0076デフォルトの名無しさん
2008/05/24(土) 01:37:070077デフォルトの名無しさん
2008/05/24(土) 01:43:25てことは、ヤマネが正しいことを言った。⇒三月ウサギとヤマネの少なくとも一方は嘘だ。⇒「私は絶対にジャムなど盗んでいません.」 が嘘。
つまりウサギが有罪。
0078デフォルトの名無しさん
2008/05/24(土) 01:44:390079デフォルトの名無しさん
2008/05/24(土) 01:54:17これはレイモンド=スマリヤンの『パズルランドのアリス』という有名な論理パズル本の問題
ttp://www.amazon.co.jp/dp/4150502889
0080デフォルトの名無しさん
2008/05/24(土) 01:58:55ヤマネは自明なことを言ってるだけだな。
0081デフォルトの名無しさん
2008/05/24(土) 02:04:18「ウサギとヤマネの少なくとも一人は嘘をついていることが確定している」
でいいのか?
「ウサギとヤマネの言ったことは真実であるとは限らない」
ではなく?
0082デフォルトの名無しさん
2008/05/24(土) 02:16:55この手のは時々勝手な条件をつける人がいたり
省略や改変で余分な条件がついたりしてよく破綻する
0083デフォルトの名無しさん
2008/05/24(土) 03:51:100084デフォルトの名無しさん
2008/05/24(土) 09:30:280085デフォルトの名無しさん
2008/05/24(土) 10:52:360086デフォルトの名無しさん
2008/05/24(土) 10:54:41宿題にしても仕事にしても、そんなに甘くはないだろう
0087デフォルトの名無しさん
2008/05/24(土) 11:01:070088デフォルトの名無しさん
2008/05/24(土) 11:13:02ジャンガジャンガジャンガジャンガー
0089デフォルトの名無しさん
2008/05/24(土) 15:33:59xor( A, B ) :-
A -> ¥+B ; B.
truth(Is) :-
Is = [ [rabbit, g], [hatman, n], [yamane, n] ] ;
Is = [ [rabbit, n], [hatman, g], [yamane, n] ] ;
Is = [ [rabbit, n], [hatman, n], [yamane, g] ] .
rabbit_says(Is) :-
truth(Is),
member( [rabbit, n], Is ).
hatman_says(Is) :-
truth(Is),
member( [hatman, n], Is ).
yamane_says(Is) :-
xor( rabbit_says(Is), hatman_says(Is) ).
more_research(Is) :-
xor( rabbit_says(Is), yamane_says(Is) ).
solve(It) :-
truth(It),
yamane_says(It),
more_research(It).
?- findall(It, solve(It), All).
All = [[[rabbit, g], [hatman, n], [yamane, n]]].
0090デフォルトの名無しさん
2008/05/24(土) 15:38:230091デフォルトの名無しさん
2008/05/24(土) 15:44:27犯行は単独犯によるものだということがわかっていて,
容疑者は三月ウサギと頭のいかれた帽子屋とヤマネです.
スマリヤン本持っている人、原著・翻訳本では正確な問いはどんなですか?
0092デフォルトの名無しさん
2008/05/24(土) 16:08:40"Did YOU by any chance steal the jam?" the King asked the March Hare.
"I never stole the jam!" pleaded the March Hare.
"What about YOU?" the King roared to the Hatter, (中略)
"No, no!" pleaded the Hatter . "One of us stole it, but it wasn't me!"
"And what about YOU?" continued the King to the Dormouse.
"What do you have to say about all this? Did the March Hare and the Hatter both tell the truth?"
"At least one of them did," replied the Dormouse, (中略)
As subsequent investigation revealed, the March Hare and the Dormouse were not both speaking the truth.
Who stole the jam?
0093デフォルトの名無しさん
2008/05/24(土) 16:29:17The Hatter said, in effect, that either the March Hare or the Dormouse stole it.
If the Hatter lied, then neither the March Hare nor the Dormouse stole it,
which means that the March Hare didn't steal it, hence was speaking the truth.
Therefore, if the Hatter lied, then the March Hare didn't lie,
so it is impossible that the Hatter and the March Hare both lied.
Therefore the Dormouse spoke the truth when he said that the Hatter and March Hare didn't both lie.
So we know that the Dormouse spoke the truth. But we are given that the Dormouse and the March Hare didn't both speak the truth.
Then, since the Dormouse did, the March Hare didn't.
This means that the March Hare lied, so his statement was false, which means that the March Hare stole the jam.
これから逆算するに
ウサギ「私は盗んでいない」
帽子屋「ウサギかヤマネのどちらかが盗みました」
ヤマネ「帽子屋とウサギの両方が嘘を言っていることはありえません」
ルール:必ず単独犯で、ウサギとヤマネの両方が真実を告げているということはありえない
だ
>>75が正しいかな
0094デフォルトの名無しさん
2008/05/24(土) 16:37:43お前wwなんでもかんでもxorしやがって
notを使うのが怖いからヤマネが正しいことを前提にしてるのか?
0095デフォルトの名無しさん
2008/05/24(土) 17:51:54(let ((usagi (amb #t #f)) (bousi (amb #t #f)) (yama (amb #t #f)))
(when usagi
(unless (not (eq? * 'usagi)) (amb)))
(when (not usagi)
(unless (eq? * 'usagi) (amb)))
(when bousi
(unless (not (eq? * 'bousi)) (amb)))
(when (not bousi)
(unless (eq? * 'bousi) (amb)))
(when yama
(unless (or usagi bousi) (amb)))
(when (not yama)
(unless (not (or usagi bousi)) (amb)))
(unless (or (not usagi) (not yama)) (amb))
(display *)
(newline)
(amb)))
0096デフォルトの名無しさん
2008/05/24(土) 17:58:15(dir 'c) なんてやると
(fileA fileB fileC ...)
みたいに返ってくるような。
S式で全部閉じた世界ってのを空想してます。
0097デフォルトの名無しさん
2008/05/24(土) 18:03:55山根の証言が正しいことを前提にしてたのは、そうしないとヤマネも犯人になっちゃってたからw
あと、not を使うのが怖いってどういう意味?
ともかく、>>93を参考にしてもう一回問題を読み直して、ヤマネの証言に依存しないようにした
truth(Is) :- % 単独犯である
Is = [ [rabbit, g], [hatman, n], [yamane, n] ] ;
Is = [ [rabbit, n], [hatman, g], [yamane, n] ] ;
Is = [ [rabbit, n], [hatman, n], [yamane, g] ] .
rabbit_says(Is) :- % ウサギの証言
member( [rabbit, n], Is ). % 俺はやってない
hatman_says(Is) :- % 帽子屋の証言
member( [hatman, n], Is ). % 俺もやってない
yamane_says(Is) :- % ヤマネの証言
¥+( ( ¥+rabbit_says(Is), ¥+hatman_says(Is) ) ).
%% ウサギと帽子屋の両方が嘘を言っていることはあり得ない
more_research(Is) :- % その後の調査
¥+( ( rabbit_says(Is), yamane_says(Is) ) ).
%% ウサギとヤマネの両方の証言が真実だとはあり得ない
solve(It) :-
truth(It),
more_research(It).
?- findall(It,solve(It),All).
All = [[[rabbit, g], [hatman, n], [yamane, n]]].
0098デフォルトの名無しさん
2008/05/24(土) 18:04:58こんなの?
http://www.scsh.net/
0099デフォルトの名無しさん
2008/05/24(土) 18:44:32symbolicsの中古探してみるとか?
0100デフォルトの名無しさん
2008/05/24(土) 18:52:35findallはProlog標準関数ですか?
働きがよくわかりません。
0101デフォルトの名無しさん
2008/05/24(土) 19:12:06適当に説明すると、findall は第2引数(述語)を満たすような第1引数(変数)のリストを第3引数(変数)に束縛する。
ここでは、このプログラムがウサギが犯人であることを導くことと、それ以外の結論を導かないことを示すために使った。
ttp://www.cs.ualberta.ca/~you/courses/325/Mynotes/Log/builtin.html
の "3. Finding all solutions" も参考になると思う
0102デフォルトの名無しさん
2008/05/24(土) 19:51:55>こんなの?
そうそう、そういうの。そういうのをWindowsで欲しい、作りたい。
>>99
>symbolicsの中古探してみるとか?
マジに中古あったらい欲しいっす。プレミアついてるんだろうか。
性能は今のパソコンより遥かに劣るんだし、安く手に入らんかな〜。
0103デフォルトの名無しさん
2008/05/24(土) 20:11:57捨てちゃったらしんだよね。俺が来るだいぶ前に。
捨てたってそれどういうことよ。
ありえないよ。
捨てるんだったら俺にくれ。
0104デフォルトの名無しさん
2008/05/24(土) 20:13:250105デフォルトの名無しさん
2008/05/24(土) 20:15:39たしかに電気代は心配だなぁ。
0106デフォルトの名無しさん
2008/05/24(土) 20:19:32自宅に200V電源あるのか?
0107デフォルトの名無しさん
2008/05/24(土) 20:25:50ブレーカ 1 個つけりゃ 200V なんてすぐとれるだろ?
それとも 3相 200V が必要なのか?
0108デフォルトの名無しさん
2008/05/24(土) 21:16:06途中のいろんなところに負荷が掛かるから自宅以外の工事も必要だろ常考。
0109デフォルトの名無しさん
2008/05/24(土) 22:02:19�d。わかりました。
solve(It)という制約条件を満たすItをバックトラック(?)して見つけて、それをAllにbag-ofする関数ですね。
0110デフォルトの名無しさん
2008/05/24(土) 22:06:520111デフォルトの名無しさん
2008/05/24(土) 22:44:070112デフォルトの名無しさん
2008/05/24(土) 22:50:06家庭の分電盤は単相三線が多い。
普通のコンセントには 100V + 100V として供給。
エアコンには 200V (センターアース)で供給。
0113デフォルトの名無しさん
2008/05/24(土) 23:58:18特定しますた
…漏れも触ってみたかった orz
0114デフォルトの名無しさん
2008/05/25(日) 01:33:58通常の家屋じゃ電気代の前に床がもたんので貰っても結構高く付きそう。
0115デフォルトの名無しさん
2008/05/25(日) 08:39:43チップ単体の性能向上に限界が見えつつある現代にこそふさわしい。
0116デフォルトの名無しさん
2008/05/25(日) 16:32:040117デフォルトの名無しさん
2008/05/25(日) 16:36:49「お前の話はツマラン」
0118デフォルトの名無しさん
2008/05/25(日) 16:39:40さらに上を行ってどうするw
0119デフォルトの名無しさん
2008/05/25(日) 16:43:27自分の書くことが悉く金言至言に思えちゃう年頃なんですよ
0120デフォルトの名無しさん
2008/05/25(日) 16:44:330121デフォルトの名無しさん
2008/05/25(日) 17:43:18その吹き溜まり社会に行かなくて良かったと思えるスレだなw
0122デフォルトの名無しさん
2008/05/25(日) 18:52:330123デフォルトの名無しさん
2008/05/25(日) 19:59:110124デフォルトの名無しさん
2008/05/25(日) 20:07:350125デフォルトの名無しさん
2008/05/25(日) 20:46:080126デフォルトの名無しさん
2008/05/25(日) 21:17:13そんな生活に戻るのはおらまっぴらだ。
0127デフォルトの名無しさん
2008/05/25(日) 21:28:290128デフォルトの名無しさん
2008/05/25(日) 22:06:15それはまた逆の意味で極端ですね。本質wは両極端の中間に位置していると思います。
0129デフォルトの名無しさん
2008/05/25(日) 22:39:310130デフォルトの名無しさん
2008/05/26(月) 01:17:55今でもマクロアセンブラレベルでしか書けないマシンもあるからあんまりいぢめんな
メモリさえ許せばとりあえずlisp1.0系を導入して、強引に繋いだキーボードでテスト基盤を調査とかすることはよくあると思うんだけどどう?
組み込みよりのちょっと大きめのプロダクト扱う会社だとテストでインタラクティブ環境作れるlispやもちっと小さいインタプリタを自前で持ってるよね?
少なくともおいらのしってる会社で4件はあったよ(うち2件がlispだった)
0131デフォルトの名無しさん
2008/05/26(月) 01:38:560132デフォルトの名無しさん
2008/05/26(月) 01:41:260133デフォルトの名無しさん
2008/05/26(月) 02:24:48美しいプログラミングの世界をかいま見せてくれたのがFORTHだった。
0134デフォルトの名無しさん
2008/05/26(月) 02:50:29>>132の言う通り残りの1件はforthでした、しかも、もっとメモリ制約の有った案件が10件他にあってそれは全部forth系です。
ようするに若干メモリに余力無いと採用できないのは本当です
0135デフォルトの名無しさん
2008/05/26(月) 02:52:18全部で1Kワードのメモリしか無いのが残りね。
最初の4件は32Kワードあった
0136デフォルトの名無しさん
2008/05/26(月) 04:12:04GCを極力使わない方法もある。
運用の仕方でGCレスも可能。
メモリも100KBもあれば余裕で動くんじゃないの。
組み込みつっても最近のは余裕あるでしょ。
0137デフォルトの名無しさん
2008/05/26(月) 09:28:07それROMは別でしょ?
余裕でLisp動くじゃない。
0138デフォルトの名無しさん
2008/05/26(月) 09:29:11組み込みだとアドレス空間の割り当てが、案件ごとに違うだろうし。
0139デフォルトの名無しさん
2008/05/26(月) 18:03:39配列が使える状況であればどうとでもなる。
セグメントの話ならFORTHでも同じ事だし、
頻繁にreadするのでもない限りRAMもそれほど必要ない。
最終的に何かを制御するだけならGCも省ける場合がある。
どういうプロセッサできついのか具体的に
挙げてくれると判りやすいけど。
0140デフォルトの名無しさん
2008/05/26(月) 19:36:40そういえばdoubleは64ビットだから組み込み以外でも問題になるね
0141デフォルトの名無しさん
2008/05/26(月) 19:42:390142デフォルトの名無しさん
2008/05/26(月) 19:43:070143デフォルトの名無しさん
2008/05/26(月) 20:18:26難しく考えすぎじゃないのか?
組み込みでdoubleなんて使うのかね。
0144デフォルトの名無しさん
2008/05/26(月) 21:16:53http://www.nicovideo.jp/watch/sm3452591
0145デフォルトの名無しさん
2008/05/26(月) 21:41:481KワードしかRAMがなければ、
組み込みシンボルオブジェクトの一部や組み込み関数の定義部は、
ROMに入れたくなるから、
> 配列が使える状況であればどうとでもなる。
は、そんな簡単にポータブルな実装にはならない。
「どうにでもなる」と言えば、どうにでもなるんだが。
0146デフォルトの名無しさん
2008/05/26(月) 21:45:090147デフォルトの名無しさん
2008/05/26(月) 21:53:50お前口ばっかで全く作ったこともないだろ。
1ワードだから何だよ。それが仕事なら作るだろ。
むしろそんな環境でLispに出番があるのか疑問だが。
0148デフォルトの名無しさん
2008/05/26(月) 21:54:52まあそういう事。
0149デフォルトの名無しさん
2008/05/26(月) 22:12:361984年ごろのパソコンが128kぐらいだったのを考えると
最近の組み込みなんてメモリサイズが大きいという希ガス。
で、1kワードRAMって何に使うの?
0150デフォルトの名無しさん
2008/05/26(月) 22:19:18組み込み 以外 でも、と言ってる
doubleのようにポインタのサイズより大きいオブジェクトは
間接参照やメモリ割り当てで遅くなるだろ?
0151デフォルトの名無しさん
2008/05/26(月) 22:21:35普通のLispの処理系一般に当てはまる問題だが、そういう一般的な話がしたいの?
0152デフォルトの名無しさん
2008/05/27(火) 00:19:080153デフォルトの名無しさん
2008/05/27(火) 00:33:27>>140の「そういえば」はどこに掛かるんだよ。酔っ払いか?
で?間接参照で遅くなるから何すか?
0154デフォルトの名無しさん
2008/05/27(火) 05:10:09特定の二人だけであまりに必死な会話を展開してるときは
そう言いたくなることもある。たまに。
0155デフォルトの名無しさん
2008/05/27(火) 05:14:49元の書き込みも1Kワードのマシンじゃforthだって書いてるじゃん(っていうか他に選択肢あるのか1Kで)
0156デフォルトの名無しさん
2008/05/27(火) 07:22:55lispスレに何の御用ですか?
0157デフォルトの名無しさん
2008/05/27(火) 07:48:17単に頭が悪いキャラなのは勘弁して欲しいなぁ
0158デフォルトの名無しさん
2008/05/27(火) 07:51:530159デフォルトの名無しさん
2008/05/27(火) 08:30:20使った人いる?
0160デフォルトの名無しさん
2008/05/27(火) 12:07:40メモリ以上に食って終わらなくなるのですが。
(define add1
(lambda (n)
(+ n 1)))
(define A
(lambda (n m)
(cond
((zero? n) (add1 m))
((zero? m) (A (sub1 n) 1))
(else (A (sub1 n)
(A n (sub1 m)))))))
0161デフォルトの名無しさん
2008/05/27(火) 12:11:480163163
2008/05/27(火) 12:34:360164へだま ◆7JLFh7E/wI
2008/05/27(火) 12:34:56ttp://mathworld.wolfram.com/AckermannFunction.html
このへんの記事が御参考になればよいのですが
0165デフォルトの名無しさん
2008/05/27(火) 12:42:26どうもです。
0166デフォルトの名無しさん
2008/05/27(火) 13:48:490167デフォルトの名無しさん
2008/05/27(火) 16:17:250168デフォルトの名無しさん
2008/05/27(火) 17:46:00Pointer(Address Reg)のサイズが 16bits って 8BitsMPU とかだよね? メモリー空間が64Kの世界かぁ。うむむ。
0169デフォルトの名無しさん
2008/05/27(火) 18:35:29たまには8086も思い出してください(個人的には嫌いだがw)
0170デフォルトの名無しさん
2008/05/27(火) 19:02:480171デフォルトの名無しさん
2008/05/28(水) 07:53:43#!E:/Gauche/bin/gosh.exe
(display "Content-Type: text/plain;\n\nHello, Gauche!\n")
と書くとInternalServerErrorが出ます。
goshのパス自体はこれで正しいのですが、何かやり方を間違っている所があるでしょうか?
初心者質問ですいません。
0172デフォルトの名無しさん
2008/05/28(水) 08:05:14まずHTTPサーバのログを確認。
つぎにコマンドプロンプトで
C:\foo> E:\Gauche\bin\gosh.exe bar.cgi
とかやってみる。これで動くなら設定が悪い。
0173デフォルトの名無しさん
2008/05/28(水) 10:41:42サーバーのログ見たら
Premature end of script headers: mb.cgi
*** ERROR: cannot find file "./D:/ws/hp/scheme/mb.cgi" to load
との事。
プログラムのあるフォルダで、コマンドプロンプトで動作させたときはきちんと動きますが
gosh "プログラムの絶対パス"
とすると同じエラーが返るのでこれが原因のようです。
もうちょっと頑張らないと…
0174デフォルトの名無しさん
2008/05/28(水) 11:04:50goshの引数で「-l」付けたら行けました
ご助言ありがとうございます。
#!E:/Gauche/bin/gosh.exe -l
(display "Content-Type: text/plain;\n\nHello, Gauche!\n")
0175デフォルトの名無しさん
2008/05/28(水) 21:10:25ttp://cadr.g.hatena.ne.jp/g000001/?word=*%5BLisp%E3%83%9E%E3%82%B7%E3%83%B3%5D
0176デフォルトの名無しさん
2008/05/28(水) 21:16:53ttp://victor.se/bjorn/lispm.php
0177デフォルトの名無しさん
2008/05/28(水) 21:28:420178デフォルトの名無しさん
2008/05/28(水) 21:32:51ttp://www.bitsavers.org/pdf/ti/explorer/
0179デフォルトの名無しさん
2008/05/28(水) 21:39:310180デフォルトの名無しさん
2008/05/29(木) 00:27:160181デフォルトの名無しさん
2008/05/29(木) 12:32:08ICOTはKL1 UNIX版その他を公開したから、
まだ研究が続いているものもあるのにねえ
http://www.icot.or.jp/ARCHIVE/Museum/IFS/about-IFS-J.html
NTTは今や私企業だから難しいかね
0182デフォルトの名無しさん
2008/05/29(木) 18:39:36というか、正式に依頼するなり手順踏めば手に入るものだよ。
0183デフォルトの名無しさん
2008/05/29(木) 20:46:09case-Aは常に同じ状態からのcontinuation再開となるのに対し,
case-Bは前回の結果を反映したcontinuation再開となります.
continuationが生成されたときの状態をそのまま保存したものであり
continuationが呼び出されるとその状態が復元されて続きの評価が行われる
という理解からするとcase-Bの結果が理解できません.
前回のcontinuation呼び出しの影響はどこに記録されるのでしょうか.
0184183
2008/05/29(木) 20:46:54(define continuation #f)
(let loop ((counter 0))
(write counter)
(if (< counter 3)
(begin
(if (= counter 1)
(call-with-current-continuation
(lambda (k) (set! continuation k))))
(loop (+ counter 1))) ;;ここが違う
'finished)) ;==> 0123finished
(continuation #t) ;==> 23finished
(continuation #t) ;==> 23finished
(continuation #t) ;==> 23finished
0185183
2008/05/29(木) 20:47:30(define continuation #f)
(let loop ((counter 0))
(write counter)
(if (< counter 3)
(begin
(if (= counter 1)
(call-with-current-continuation
(lambda (k) (set! continuation k))))
(set! counter (+ counter 1)) ;;ここが違う
(loop counter)) ;;ここが違う
'finished)) ;==> 0123finished
0186183
2008/05/29(木) 20:49:13[case-Bの続き]
(continuation #t) ;==> 3finished
(continuation #t) ;==> 4finished
(continuation #t) ;==> 5finished
0187デフォルトの名無しさん
2008/05/29(木) 21:18:32case-Bの場合で説明すると、continuationはcounterが記録されている位置だけを覚えていて、その値を覚えているわけではない。
なのでset!をすると次回は前回にセットされた値が読み出されるのでそのようになる。
って感じでいいのかな?
0188デフォルトの名無しさん
2008/05/29(木) 21:23:58MLをちょろっと勉強して、Schemeの破壊的に変更する変数は
MLではセルになるんだと考えれば理解が早いと思う。
0189デフォルトの名無しさん
2008/05/29(木) 21:33:32ちゃんと帰ってきてくれよな!
ラムダの門が君を待ってるよ〜(w
0190デフォルトの名無しさん
2008/05/29(木) 21:35:21C言語を学んでスタックフレームを理解すれば早いという説もある。
0191デフォルトの名無しさん
2008/05/29(木) 21:56:00保存した状態(つまりクロージャ)をスタックしてバックトラックする例を勉強すればどこが違うか理解できるだろう。
非決定性とか論理プログラミングを探して読んでみると良いと思う。
0192183
2008/05/29(木) 22:27:39なるほど.言葉の使いかたが間違っているかもしれませんが,まとめると,
「変数の束縛関係はどこかにあるsymbol-tableに記録されているが,
『continuationは,生成時のsymbol-tableをdeep-copyしたものを保持するわけではなく
単にそのsymbol-tableへの参照を保持するだけである』」
と考えてよろしいでしょうか.
だからcontinuation生成後にそのsymbol-tableに変更が加えられると,
continuation呼び出し時には変更分が反映されている,と.
0193デフォルトの名無しさん
2008/05/29(木) 22:31:22symbol-tableって言い方は誤解を招くけど、大筋はそんなもんかな
0194デフォルトの名無しさん
2008/05/29(木) 22:40:150195デフォルトの名無しさん
2008/05/29(木) 23:11:27明日役に立つのはrubyやpythonだけど
数年後に役に立ってくれるんだろうか
0196デフォルトの名無しさん
2008/05/29(木) 23:19:58(define continuation #f)
(let loop ((counter 1))
(if (< counter 2)
(begin
(if (= counter 1)
(call-with-current-continuation
(lambda (k) (set! continuation k))))
(write counter) (newline)
(loop (+ counter 1)))
'finished)) ;==> 1finished
(continuation #t) ;==> 1finished
(continuation #t) ;==> 1finished
(continuation #t) ;==> 1finished
0197デフォルトの名無しさん
2008/05/29(木) 23:20:34(define continuation #f)
(let loop ((counter 1))
(if (< counter 2)
(begin
(if (= counter 1)
(call-with-current-continuation
(lambda (k) (set! continuation k))))
(write counter) (newline)
(set! counter (+ counter 1))
(loop counter))
'finished)) ;==> 1finished
(continuation #t) ;==> 2finished
(continuation #t) ;==> 3finished
(continuation #t) ;==> 4finished
0198デフォルトの名無しさん
2008/05/29(木) 23:21:15面白そうなのにもったいないよね。
0199183
2008/05/29(木) 23:22:21厳しいご指摘もないようですので>>192で考えてみます.
どうもありがとうございました.またよろしくお願いします.
0200デフォルトの名無しさん
2008/05/29(木) 23:23:34なぜ末尾コンテクストじゃなくても
末尾呼び出しされるんだろう。
普通の関数と同じ扱いにすれば
参照透明性も損なわれないような気がする。
深く考えてないけど。
0201デフォルトの名無しさん
2008/05/30(金) 00:05:48symbol-table → binding
0202デフォルトの名無しさん
2008/05/30(金) 00:06:59帰ってくるのかよ!
0203デフォルトの名無しさん
2008/05/30(金) 00:11:35帰還方法を(継続として)渡すような双方向継続フレームワークを作るのが良かろう
0204デフォルトの名無しさん
2008/05/30(金) 00:20:42「束縛関係(binding)を記録している所」なら「環境(environment)」なんじゃね?
0205デフォルトの名無しさん
2008/05/30(金) 00:26:38環境というとフラットな印象だなあ。(グローバルみたいな)
スタック状に積み重なってるイメージは束縛のほうかな。
0206デフォルトの名無しさん
2008/05/30(金) 00:32:47「環境(environment)」=「クロージャ」
0207デフォルトの名無しさん
2008/05/30(金) 00:50:22おいおい、大事なものが抜けてないか〜
それじゃ仕事になんないよ(w
0208デフォルトの名無しさん
2008/05/30(金) 06:46:31それは「環境」に対して持ってるイメージが狭すぎるよ。
SECDのEはenvironmentのEだぜ。
0209183
2008/05/30(金) 10:41:05語弊があるかもしれませんが,変数の束縛関係が登録されている場所のことを「symbol-table」ということにします.
symbol-table が何枚も重なって,scope 全体の階層構造を表現しているとします.
昨日お教えいただいた「continuation は,自分が生成されたときの symbol-table への『参照』を持っている」という理解だと,
今度は >>196 の挙動が理解できません.
(>>183 の「symbol-tableの『deep-copy』を持っている」という私の最初の理解だと,>>197 の挙動が理解できませんでした.)
ここで生成される continuation が参照しているのは,let がつくる「top-level よりも 1 レベル深い symbol-table」だと思います.
>>196 の場合,末尾再帰の際に (+ counter 1) が評価されて,その結果の 2 が新たな counter の束縛値としてこの symbol-table
に書き込まれ,その後に let の本体が評価されますよね?
そうすると,loop の引数として (+ counter 1) を渡す >>196 も,set! で直接 symbol-table に束縛関係を書き込む >>197 も,
どちらも同じ >>197 のような結果を示すはずだと思うのです.なぜ >>196 が counter の最初の束縛値 1 を覚えているのでしょうか.
>>196 と >>197 の違いはどこにあるのでしょう?まさにそれがこの 2 つのコードを書いてみた動機だったのですが…
(多分 >>196 の評価過程をどこか間違えて理解しているのだと思います)
0210デフォルトの名無しさん
2008/05/30(金) 11:54:43この例だと、 (loop (+ counter 1)) を評価するたびに、 counter の値が違う symbol-table が作られる。
だから、継続に戻ると、元の symbol-table がそのまま残ってる。
0211183
2008/05/30(金) 12:18:01実はそれも考えましたが,この場合そうあるべきではないと思うのです.
loop を呼び出すたびに新たな symbol-table を作るとなると,末尾再帰呼び出しの回数が
大きくなるにつれて symbol-table の枚数が増え続けることになり,それを表現する stack
がどんどん伸びてしまいませんか?
これは「末尾再帰処理」の「余計なメモリ消費を行わずに繰り返しを表現する」という掟に
反するように思うのですが…
これが末尾再帰でなく通常の関数呼び出しなら >>210 さんのおっしゃる挙動で理解できます.
0212デフォルトの名無しさん
2008/05/30(金) 12:33:04もしかしたら「末尾呼び出しはジャンプに最適化される」とあちこちに書いてあるから、loopの呼び出しがジャンプになるならcounterが上書きされると思ったのかもしれないけど・・・
schemeレベルからはそう見えることはないです。
ではどうやって末尾再帰呼び出しの保証をしているのかなのですが・・・時間が無いのでだれか書かない?
0213デフォルトの名無しさん
2008/05/30(金) 12:59:06普通に再帰呼び出ししてると考えたほうが判りやすいのではないかな。
0214デフォルトの名無しさん
2008/05/30(金) 13:08:16積まれた引数を移動させるコストが発生する。
コンパイラがフロー解析していたり、単純な呼び出しならば
直接不要になった変数を破壊する書き換えが行われる場合がある。
それと、コンパイルされれば局所変数は相対位置で参照されるので
通常は名前なんかはスタック上に保持していない。
つまりsymbol-tableという言い方はおかしい。
0215デフォルトの名無しさん
2008/05/30(金) 15:20:37スタックというと「ひとつしかない」「配列」を思い浮かべるかもしれないが、
概念的にはヒープ上のリストと同じように扱えるものと考えたほうがいい。
0216デフォルトの名無しさん
2008/05/30(金) 16:05:16>>215
がいいこと言った!
というわけで、誘導しようと思ったらリンクが無かったわ^^;
Three Implementation Models for Scheme
ttp://www.cs.indiana.edu/~dyb/pubs/3imp.pdf
久しぶりにラムダの門磨いときますね(w
0217デフォルトの名無しさん
2008/05/30(金) 21:19:30Schemeの識別子はC言語などと一緒で
式ではなく記憶領域の場所に束縛される。
末尾再帰の最適化に関しては
スタックフレームの参照で考えると
A→B→C ;;普通の関数呼び出しのスタックフレームの参照連鎖
A→ →C ;;末尾呼び出しの場合はAとCを直接つないじゃえ、どうせCから値を直接返そうがBが値を返そうがプログラマから見れば同じだし
B
A→C ;;Bはどのスタックフレームからも参照されてないのでGCに回収されました
ってな感じで定数空間で末尾再帰されてると考えてもいいかも。
実際の処理系はもっと効率よくやってるはずだけど。
0218デフォルトの名無しさん
2008/05/30(金) 23:15:06> それを表現する stack がどんどん伸びてしまいませんか?
末尾再帰の場合はそうせずに済むってことだよ。
0219デフォルトの名無しさん
2008/05/30(金) 23:17:44良い説明だと思う。
こういう風にきちんと考えないと、継続が絡んだときの挙動を説明できないんじゃないかな。
0220183
2008/05/30(金) 23:27:08末尾再帰呼び出しについて >>217 さんのご説明が私のイメージにいちばん近くわかりやすいです.
この例で,C の呼び出しは実際には A を呼び出しているわけで,>>214 さんのいわれるような
「末尾コンテキストでの呼び出し(C)は、実際には(Cの)スタックフレームに積まれた引数を(Aに)移動させる」
処理が起きるわけですよね.
問題は,この中に continuation が混在していることなのですが,この図に continuation の
スタックフレームへの参照を追加するとどのような図になるのでしょうか.
再帰呼び出しの中で,どのようにすれば continuation が「正しい」scope を持ち続けることが
できるのかということなのですが…
0221デフォルトの名無しさん
2008/05/31(土) 00:11:22だから再帰などで同じ手続きが呼ばれてもそれぞれの変数の束縛(アドレス)はユニーク。
λ式中の自由識別子はそのλ式がevalされ(て手続きが生成され)た時に可視な束縛(ポインタ)が参照される。
だから再帰などで同じ手続きがよばれても同一の場所(アドレス)を参照する。
call/ccが引数の手続きに渡す継続は
case-Aの場合は(lambda (x) (write counter) (newline) (loop (+ counter 1)))
case-Bの場合は(lambda (x) (write counter) (newline) (set! counter (+ counter 1)) (loop counter))
この中に現れている自由識別子(というか束縛識別子は参照されてないけど)は何度呼ばれても同一の場所を参照する。
case-Bの場合はset!でcounterが束縛されているメモリの値を書き換えてるから
書き換えられた値を参照している。
ここで(loop (+ counter 1))は手続き呼び出しだから(loop 3)等の値に評価されてから手続きに渡されている事に留意。
そして1回目のloopのcounterと2回目のloopのcounterは同一でない場所を参照してる。(スタックフレームの再利用などの最適化されていなければ)
0222デフォルトの名無しさん
2008/05/31(土) 00:15:27手続きと実体は一緒だから同じように考えればOK
0223デフォルトの名無しさん
2008/05/31(土) 00:16:190224204
2008/05/31(土) 00:35:20末尾再帰や継続を勉強する前にせめてschemeの評価モデルの勉強をすべきだと思うんだ
まず「環境フレームモデル」について勉強することをお勧めするよ
0225デフォルトの名無しさん
2008/05/31(土) 00:50:58そういう意味じゃ>>183にとってGauche本は良書じゃなかろうか?
0226デフォルトの名無しさん
2008/05/31(土) 01:37:50説明してみます。
C1はcounterが1の束縛、C2はcounterが2の束縛だとすると、
最初にnamed letに入ったときはスタックは
C1
ここでcontinuationをセーブしている。
loopを呼び出すと
C1->C2
の状態になる。
で、ifからfinishで抜けている。スタックは空。
"空"
(continuation #t)を評価すると、スタックは先にセーブした
C1
の状態になって(call/cc ...)の次の式から評価が開始される。
続く
0227デフォルトの名無しさん
2008/05/31(土) 01:38:23そこからloopが再び呼び出されると
C1->C2'
の状態となる。ここで先のC2とC2'になる。
さてC1がどこに記録されているかだけど、これはcontinuationにぶら下がる形でヒープに保管するのが簡単な実装方法。
ところでloopは末尾再帰呼び出しなので、C1->C2やC1->C2'になるところでC1を潰してC2やC2'で上書きしてしまいそうなのだが、
これは実装がC1が破壊できないことを知っているので行われない。
これはC1がヒープに保管されているかどうかで判定するのが簡単な実装方法になる。
(continuation #t)の#tはどこにいくのか?
C1->C2'の途中に#tを持った束縛ができないか心配になるけど、この#tは(call/cc ...)の帰り値となって、スタックから取り去られることになる。
う〜ん、どうだろうか?
0228デフォルトの名無しさん
2008/05/31(土) 01:42:53「の状態となる。ここで先のC2とC2'になる。」
は
「の状態となる。ここで先のC2とこのC2'は違う束縛になる。」
のつもり。m(_ _)m
0229183
2008/05/31(土) 01:52:17>>221 さんのご説明が具体的で核心をついた答そのものだと思います.
さらに >>226 - >> 228 さんのご説明は >>217 さんの例に則していて
わかりやすそうです.
少し時間がかかると思いますが処理をなぞって考えさせていただきます.
0230デフォルトの名無しさん
2008/05/31(土) 11:55:56(1) upward onlyの継続 (例外はこれで可能)
(2) 一回使ったらおしまいの継続 (コルーチンはこれで可能)
(3) 汎用的な継続
0231デフォルトの名無しさん
2008/05/31(土) 11:57:340232デフォルトの名無しさん
2008/05/31(土) 12:15:11(1) ひとつしかないスタックを破壊的に変更しながら使う
(2) いくつかのスタックを破壊的に変更しながら使う
(3-a) スタックを退避したりリストアしたり
(3-b) immutableパターン
0233183
2008/05/31(土) 12:52:01基本的な規則は
・closure が呼び出されれば(たとえそれが末尾再帰呼び出しであっても),
新たな束縛環境が作られ,その環境に視点が切り替えられていく.
・continuation には,自分が生成されたときの束縛環境への参照が保持されている.
・通常処理を続けている間は,末尾再帰呼び出しに伴い次々と生成されて
切り替えられる束縛環境をもとに評価が進められるのだが,
ひとたび continuation が呼び出されると,その continuation 上に保持されていた
束縛環境に視点が切り替えられる.
であり,これらに従って評価を繰り返していけば case-A と case-B の挙動の違いを
説明できるように思います.
みなさんのご説明以上の内容ではありませんが,最初のルールを充分にわかっていなかった
(つまり,末尾再帰呼び出しの場合,同じ束縛環境のまま束縛関係を上書きしてしまうと考えていた)
ことが混乱の原因であったように思います.
まだ理解が不充分だと思いますが,少しだけわかりかけてきた気がします.
0234デフォルトの名無しさん
2008/05/31(土) 14:41:090235デフォルトの名無しさん
2008/05/31(土) 14:51:28本気で面白いと思って書き込んだのでないなら少し反省してもらおうか。
0236デフォルトの名無しさん
2008/05/31(土) 15:45:470237デフォルトの名無しさん
2008/05/31(土) 15:49:470238デフォルトの名無しさん
2008/05/31(土) 18:10:23もうしばらく静かにしておいてやれYO!
0239デフォルトの名無しさん
2008/05/31(土) 21:55:26(lambda (a lat)
(cond
((null? lat) #f)
((eq? a (car lat)) #t)
(else (member? a (cdr lat))))))
(member? 'sardines '(Italian sardines spaghetti parsley))
0240デフォルトの名無しさん
2008/05/31(土) 21:56:04(lambda (set1 set2)
(letrec
((I (lambda (set)
(cond
((null? set) '())
((member? (car set) set2)
(cons (car set)
(I (cdr set))))
(else (I (cdr set)))))))
(I set1))))
(intersect '(tomatoes and macaroni) '(macaroni and cheese))
0241デフォルトの名無しさん
2008/05/31(土) 21:57:19; (1) upward onlyの継続 (例外はこれで可能)
(define intersectall
(lambda (lset)
(let/cc hop
(letrec
((A (lambda (lset)
(cond
((null? (car lset))
(hop '()))
((null? (cdr lset))
(car lset))
(else
(intersect (car lset)
(A (cdr lset))))))))
(cond
((null? lset) `())
(else (A lset)))))))
(intersectall '((tomatoes and macaroni) (macaroni and cheese) (tomatoes and cheese)))
0242デフォルトの名無しさん
2008/05/31(土) 22:52:40(lambda (a lat)
(let/cc skip
(letrec
((R (lambda (lat)
(cond
((null? lat) '())
((eq? (car lat) a)
(skip (R (cdr lat))))
(else (cons (car lat) (R (cdr lat))))))))
(R lat)))))
(rember-upto-last
'cookies
'(cookies chocolate mints caramel delight ginger snaps sesserts chocolate mousse
vanilla ice cream German chocolate cake more cookies gingerbreadman chocolate chip brownies))
0243デフォルトの名無しさん
2008/06/01(日) 00:18:03>>241-242ではlet/ccと書いてある。(Seasoned Schemerからの例)
0244デフォルトの名無しさん
2008/06/01(日) 00:22:49「う〜ん、それならこれで十分なんじゃな〜い」ってきっと言われる・・・
(define rember-upto-last
(lambda (a lat)
(let loop ((ans lat) (lst lat))
(cond ((null? lst) ans)
((eq? (car lst) a) (loop (cdr lst) (cdr lst)))
(else (loop ans (cdr lst)))))))
(define intersectall
(lambda (lset)
(fold intersect (car lset) (cdr lset))))
なんか簡潔で説得力のある一級継続の使用例は無いものだろうか・・・
0245デフォルトの名無しさん
2008/06/01(日) 00:55:50継続の動作の仕組みを調べる材料に使うなら>>239-242は十分な例だと思う。
継続を理解することよりも何かに例えることに力点があるうちは理解できないだろう。
0246デフォルトの名無しさん
2008/06/01(日) 01:28:21(lambda (goto)
(letrec ((start
(lambda ()
(print "start")
(goto next)))
(froz
(lambda ()
(print "froz")
(goto last)))
(next
(lambda ()
(print "next")
(goto froz)))
(last
(lambda ()
(print "last")
(+ 3 4))))
start))))
0247デフォルトの名無しさん
2008/06/01(日) 01:29:020248デフォルトの名無しさん
2008/06/01(日) 01:29:09(call/cc (lambda (bar) bar))))
(yang ((lambda (foo) (write-char #\*) foo)
(call/cc (lambda (bar) bar)))))
(yin yang))
0249デフォルトの名無しさん
2008/06/01(日) 01:29:330250デフォルトの名無しさん
2008/06/01(日) 01:30:21そのレベルでやってるやつには不要。
0251デフォルトの名無しさん
2008/06/01(日) 01:33:52クレクレうるせーんだよ。氏ね。
0252デフォルトの名無しさん
2008/06/01(日) 01:50:090253デフォルトの名無しさん
2008/06/01(日) 01:51:23「そのレベル」でいいんジャマイカ、と
0254デフォルトの名無しさん
2008/06/01(日) 01:54:47foldで書き直せますって言う暇があったら好例を出すべきだったと思うね。
0255デフォルトの名無しさん
2008/06/01(日) 01:57:29おまえも馬鹿らしいなw
0256デフォルトの名無しさん
2008/06/01(日) 02:04:310257デフォルトの名無しさん
2008/06/01(日) 02:11:52./ ;ヽ 新憲法で表現の自由規制、裁判官の国民審査権破棄
l _,,,,,,,,_,;;;;i
l l''|~___;;、_y__ lミ;l ネット規制法で検閲、人権擁護法案で報道規制、
゙l;| | `'",;_,i`'"|;i |
,r''i ヽ, '~rーj`c=/ ダウンロード違法、単純所持禁止、..etcetc
,/ ヽ ヽ`ー"/:: `ヽ
/ ゙ヽ  ̄、::::: ゙l, 情報源を潰して日本を中国化だ!フゥハハハーハァー
|;/"⌒ヽ, \ ヽ: _l_ ri ri
l l ヽr‐─ヽ_|_⊂////;`ゞ--―─-r| | / |
゙l゙l, l,|`゙゙゙''―ll___l,,l,|,iノ二二二二│`""""""""""""|二;;二二;;二二二i≡二三三l
| ヽ ヽ _|_ _ "l ̄ ̄ ̄ ̄ ̄ ̄ |二;;二二;;二=''''''''''' ̄ノ
/"ヽ 'j_/ヽヽ, ̄ ,,,/"''''''''''''⊃r‐l'二二二T ̄ ̄ ̄ [i゙''''''''''''''''"゙゙゙ ̄`"
/ ヽ ー──''''''""(;;) `゙,j" | | |
_,,,,,,,,,ヽ、 ,,,,,r-'''''ーー'''| | | |
''" ヽ,,___,,,r‐''''''二__ |__| | |
\'''" / ノ | |
0258デフォルトの名無しさん
2008/06/01(日) 02:13:43ああいえばこういう。まじ視ね。
0259デフォルトの名無しさん
2008/06/01(日) 02:14:330260デフォルトの名無しさん
2008/06/01(日) 02:41:530261デフォルトの名無しさん
2008/06/01(日) 02:47:450262デフォルトの名無しさん
2008/06/01(日) 02:51:16定番のコルーチンとバックトラックがちゃんとのってるぞ。
0263デフォルトの名無しさん
2008/06/01(日) 03:53:30動作を理解しても「こんなのいらね」で終わることもあるからな。良い例が欲しいな。
0264デフォルトの名無しさん
2008/06/01(日) 04:16:010265デフォルトの名無しさん
2008/06/01(日) 07:28:43(define-syntax amb
(syntax-rules ()
((_ x ...)
(let/cc yield
(let/cc fallthrough
(push! stack fallthrough)
(yield x))
...
((pop! stack))))))
0266デフォルトの名無しさん
2008/06/01(日) 09:39:35そんな動きもしない中途半端な例より過去スレ嫁。
不思議の国のアリスをやってた連中がambを使ってたハズ。
0267デフォルトの名無しさん
2008/06/01(日) 10:51:03push!とpop!の説明しないのかよ?
0268デフォルトの名無しさん
2008/06/01(日) 10:53:39(syntax-rules ()
((_) (fail))
((_ a) a)
((_ a b ...)
(let ((fail0 fail))
(call/cc
(lambda (cc)
(set! fail
(lambda ()
(set! fail fail0)
(cc (amb b ...))))
(cc a)))))))
(define call/cc call-with-current-continuation)
(define fail #f)
(define (require pred)
(or pred (amb)))
(call/cc
(lambda (cc)
(set! fail
(lambda ()
(cc 'no-choise)))))
0269デフォルトの名無しさん
2008/06/01(日) 11:22:040270デフォルトの名無しさん
2008/06/01(日) 11:49:40(define fail #f)
(call/cc
(lambda (cc)
(set! fail
(lambda ()
(cc 'no-choise)))))
(fail) ; => no-choise
0271デフォルトの名無しさん
2008/06/01(日) 12:02:19(amb 1 2 3 4 5) ; => 1
(fail) ; => 2
(fail) ; => 3
(fail) ; => 4
(fail) ; => 5
(fail) ; => no-choise
0272デフォルトの名無しさん
2008/06/01(日) 12:07:54うほっ、これいいね!
出典があるなら教えて〜
0273デフォルトの名無しさん
2008/06/01(日) 12:17:57それ前スレにも出てた。有名なのかも。
0274デフォルトの名無しさん
2008/06/01(日) 12:41:12おそらく出典はGuy Steele御大です。
ttp://lib.store.yahoo.net/lib/paulgraham/cint.lisp
0275272
2008/06/01(日) 12:41:450276デフォルトの名無しさん
2008/06/01(日) 12:54:41#d a include
#a <stdio.h>
#a <string.h>
#a <ctype.h>
#d p char*
#d P ,(p)
#d T(E) !strcmp(E,"()")
#d U return
#d W while
#d X sbrk(199)
#d z atof
#d e isspace
#d D A(_)
#d E S(C(_))
#d B(y) p y(_)p _;{
#d G(y,V) B(y)p i;U sprintf(i=X,"%lf",z(E)V z(S(C(D)))),i;}p sbrk(),*S(),*j(),*O,*H;K,Y,M=14;double z();Q(_)p _;{int V=0;W(e(*_))_++;H=_;W(V|!(e
(*H)|*H==')'||(*H=='('&&H-_)))V+=(*H=='(')-(*H== ')'),H++;U H-_;}B(C)U _++,Y=Q(_),_=strncpy(X,_,Y),_[Y]=0,_;}B(A)_++,_+=Q(_);W(e(*_))_++;U O=X,*O='(',strcpy(
O+1,_),O;}B(Z)U _;}B(c)U C(E);}B(q)U A(E);}B(t)p i=E;U H=S(C (D)),sprintf(O=X,T(H)?"(%s)":"(%s %s",i,H+1),O;}B(F)U S(C(A(T(E)?D:_)));}L(i,s)p
i,*s;{U isdigit(*i)?z(i)!=z(s):strcmp(i,s);}B(b)U L(E,S(C(D)))?"()":"t";}B(R)U E;}B(o)U z(E)<z(S(C(D)))?"t":"()";}G(f,+)G(g,-)G(h,*)p r[4][2]={"function" P R,
"quote"P C,"lambda"P Z,"defun"P j};B(j)U r[M][1]=D,*r[M++]=C(_);}p not[99][2]={"if"P F,"equal"P b,"<"P o,"+"P f,"-"P g,"*"P h,"car"P c,"cdr"P q,
"cons"P t,"t","t"};B(S)int Li,s;p u;if(isdigit(*_)|T(_))U _;for(Y=M;Y--;)if(!strcmp(_,*r[Y]))U r[Y][1];u=E,_=D;if(*u-'(')U(*((p(*)())u))(_);s=Li=M;W(!T(_))r[M][1]=E,*r[M++]
="",_=D;O=C(u);W(!T(O))*r[Li++]=C(O),O=A(O);U O=S(C(A(u))),M=s,O;}main(){H=O=X,Y=0;W(Y|!e(K=getchar()))K==EOF?exit(0):0,Y+=(K=='(')-(K==')'),*H++=K;*H=0,puts(S(O))
,main();{printf("XLISP 4.0\n");}}
0277デフォルトの名無しさん
2008/06/01(日) 13:04:34letrecをループに使うのは良くみかけるけどね。
(define (count-chars)
(letrec ((loop (lambda (ch count)
(if (eof-object? ch)
count
(loop (read-char) (+ count 1))))))
(loop (read-char) 0)))
0278デフォルトの名無しさん
2008/06/02(月) 20:30:36相互再帰じゃない場合はnamed letの方が見やすいですね。
0279デフォルトの名無しさん
2008/06/02(月) 21:02:33こんなとこで言ってないで国際会議の場でGuy Steeleに意見しろよ。
0280デフォルトの名無しさん
2008/06/02(月) 22:18:390281デフォルトの名無しさん
2008/06/02(月) 22:29:130282デフォルトの名無しさん
2008/06/02(月) 23:06:440283デフォルトの名無しさん
2008/06/02(月) 23:22:310284デフォルトの名無しさん
2008/06/03(火) 00:23:360285デフォルトの名無しさん
2008/06/03(火) 00:57:55顔真っ赤にして見苦しいよw
0286デフォルトの名無しさん
2008/06/03(火) 01:03:13Steele って教科書書いた事あるの?
0287デフォルトの名無しさん
2008/06/03(火) 01:19:35Cの本、Common Lispの本は?Javaのもあるし、もう1冊The High Performance Fortran Handbookもあるけど。
あと、本じゃないけどジャーゴンファイル。
PDFで結構いろいろなマニュアルも見つかる。
このスレでは "The History of Scheme" が有名かな。
絶対に外せないのがコレかな
ttp://dspace.mit.edu/bitstream/1721.1/5794/2/AIM-349.pdf
0288デフォルトの名無しさん
2008/06/03(火) 01:35:16理論的なペーパーならここにあるのじゃダメかな。
http://research.sun.com/projects/plrg/Publications/index.html
0289デフォルトの名無しさん
2008/06/03(火) 01:50:15�d。だめってことはないよ。こちらの勝手な希望なのでw
ttp://research.sun.com/projects/plrg/Publications/linuxMagazine.pdf
こんな感じで200〜400ページぐらいの分量があると全貌が見えるからいいかなと。
Guy Steeleはマニュアル書くと面白い例を出してくれるから期待したいな。
Cの本なんてすごく良かったのに和訳が絶版になって残念だなぁと思う。
0290デフォルトの名無しさん
2008/06/03(火) 02:55:58まぁ不問にしてやろうw
0291デフォルトの名無しさん
2008/06/03(火) 05:11:110292デフォルトの名無しさん
2008/06/03(火) 09:08:32ま、勢いで書き残しちゃった自分の痛いレスに触れて欲しくない>>285が、正論のフリして終結を促したものの、
自意識が邪魔してつい余計な「反撃」をしちゃって、終わらせることにも第三者のフリにも失敗、というとこでしょうかw
0293デフォルトの名無しさん
2008/06/03(火) 10:23:26ない。
0294デフォルトの名無しさん
2008/06/03(火) 10:24:150295デフォルトの名無しさん
2008/06/03(火) 18:30:300296デフォルトの名無しさん
2008/06/03(火) 20:31:19ttp://www.iro.umontreal.ca/~boucherd/Lalr/documentation/lalr.html
ttp://www.informatik.uni-freiburg.de/proglang/software/essence/
ttp://www.cs.cmu.edu/afs/cs/project/ai-repository/ai/lang/scheme/code/parsing/taurus/0.html
0297デフォルトの名無しさん
2008/06/03(火) 20:35:32おまえ等クダスレ逝って喧嘩しろ。邪魔。
0298デフォルトの名無しさん
2008/06/03(火) 20:40:48ttp://www.cs.indiana.edu/scheme-repository/code.lang.html
0299デフォルトの名無しさん
2008/06/03(火) 20:50:11エッセンスが好き。
0300デフォルトの名無しさん
2008/06/03(火) 21:03:09ttp://codepad.org/bnZP9J3Y
0301デフォルトの名無しさん
2008/06/03(火) 21:07:21そんなこと無さ気に書いてあるけどさw
0302デフォルトの名無しさん
2008/06/03(火) 21:09:05激しく�d。凄いね。
0303デフォルトの名無しさん
2008/06/03(火) 21:41:37使うの簡単だよ。
開発は大変だったろうけど。
汎用のパーザの部分計算でパーザを生成するから。
0304デフォルトの名無しさん
2008/06/03(火) 21:41:58なんじゃそりゃ!
(define (equ x) (* 2 (^ x 4)))
という式の微分を求めてるらしいけど。普通の記号処理と違うのに
(* 8 (^ x 3))
と同じ式がちゃんと求まってるw
0305デフォルトの名無しさん
2008/06/03(火) 22:14:37ttp://www.genetic-programming.org/gplittlelisp.html
0306デフォルトの名無しさん
2008/06/03(火) 22:17:130307デフォルトの名無しさん
2008/06/03(火) 22:32:33作られたessenceはProgram Generatorなんだから、できたスキームはプログラムなわけ。
でもスキーム用のpggというProgram Generator Generatorを使うと・・・
0308デフォルトの名無しさん
2008/06/03(火) 22:55:01本当にそう思ってる人は、
(ごく一部の、目的の為に衝動を抑えるという人類なら大抵できることができないクズを除いて)
そういう喧嘩腰の追っ払い方を試みません。バレバレですw
0309デフォルトの名無しさん
2008/06/03(火) 22:56:11その再帰の不動点プログラムはいったいなんなんだ。
0310デフォルトの名無しさん
2008/06/03(火) 23:05:100311デフォルトの名無しさん
2008/06/03(火) 23:10:05Schemeなんじゃないかな。
0312デフォルトの名無しさん
2008/06/03(火) 23:26:010313デフォルトの名無しさん
2008/06/04(水) 00:08:36本当にそう思っている人も居るからそろそろ察してね。
0314デフォルトの名無しさん
2008/06/04(水) 17:58:16不動点として処理系を求めることなんてできるのかな?
>>310
世代を増やしてやれば一様収束に近いかな?
世代数より、使える要素の数に対する候補数や木構造の複雑さの許容範囲の方が
解に対して大きく影響を与えるようだよ。
その辺のパラメータを上手に与えないとGPが正しい解を返してくれない。
理論的なことはよくわからないんだけど。
0315デフォルトの名無しさん
2008/06/04(水) 20:28:22GPは未だに魔法みたいに見える
Yコンビネータとambは解説読むと目から鱗だった(ガッテンボタンいっぱい押す感じ)
0316デフォルトの名無しさん
2008/06/04(水) 20:56:57∩ヘ〜
0317デフォルトの名無しさん
2008/06/04(水) 21:07:13理屈抜きにw
0318デフォルトの名無しさん
2008/06/04(水) 21:32:08この例だと3番目で0.001以下なので正しいと考える。
伊庭研HPにもそう書いてあるw
0319デフォルトの名無しさん
2008/06/04(水) 21:42:20ttp://codepad.org/1fI1ZtGU
0320デフォルトの名無しさん
2008/06/05(木) 02:17:010322デフォルトの名無しさん
2008/06/05(木) 08:19:19表示的意味論では、表示関数は不動点。
0323デフォルトの名無しさん
2008/06/05(木) 09:58:560324デフォルトの名無しさん
2008/06/05(木) 15:47:07ものまね鳥やSICPやいろいろ読んだらありがたみがわかるようになるの?
0325デフォルトの名無しさん
2008/06/05(木) 16:51:54近くの本屋だとsicpとsimply schemeしか置いてねぇ・・・
0326デフォルトの名無しさん
2008/06/05(木) 16:54:50それだけ置いてありゃ立派なもんだよ
0327デフォルトの名無しさん
2008/06/05(木) 18:06:39都会はええのう。うちの近所じゃエクセル本しかないw
0328デフォルトの名無しさん
2008/06/05(木) 18:23:27シリーズ3冊読んで初めて意味がわかる。
微積とかの数学を知らない人向けのSICPだったのかと。
だから数学が得意な大学生は最初からSICPでいいと思う。
CSを専攻しようか迷ってるならシリーズ3冊を読んだ後ものまね鳥を読んでみると自分の適性が判断できるよ。
ありがたみっていう意味をどう使ってるかによるけど、CSとはどういうものかを知るという意味ではいい本。
何が言いたいのかわかるというのは、CSとはどんなことがらに興味の対象をもっている分野かを理解すること。
それがわからなくてもプログラムは作れる。
けど、バグが入りこまないような理論的裏づけとか、論理プログラミングが欲しいときがそのうちクルと思う。
そのときが来る前の先行投資と思えば安いもんだと思うよ。
悩んで考える時間は若いときにしか持ち得ないからガンガレ。
0329デフォルトの名無しさん
2008/06/05(木) 20:12:01schemeは無名関数内で再帰呼び出しって出来ないんですか?
lambdaの中でそのlambdaを呼び出すみたいな。
javascriptだと
(function(x){return (x)?x+arguments.callee(x-1):0; })(10);
とかやって使うやつなんですけど…
高階演算のとこで使いたいんですが、調べてもうまく見つからなかったです。
0330デフォルトの名無しさん
2008/06/05(木) 20:22:55(((lambda (X)
((lambda (procedure)
(X (lambda (arg) ((procedure procedure) arg))))
(lambda (procedure)
(X (lambda (arg) ((procedure procedure) arg))))))
(lambda (func-arg)
(lambda (n)
(if (zero? n)
1
(* n (func-arg (- n 1)))))))
5)
Yコンビネータの雛形が内蔵されている階乗関数になってます。
0331デフォルトの名無しさん
2008/06/05(木) 20:23:000332デフォルトの名無しさん
2008/06/05(木) 20:29:38((lambda (procedure)
(X (lambda (arg) ((procedure procedure) arg))))
(lambda (procedure)
(X (lambda (arg) ((procedure procedure) arg))))))
(lambda (func-arg)
(lambda (l)
(if (null? l)
'no-list
(if (null? (cdr l))
(car l)
(max (car l) (func-arg (cdr l))))))))
'(4 5 6 3 4 8 6 2))
0334デフォルトの名無しさん
2008/06/05(木) 20:34:32(lambda (X)
((lambda (procedure)
(X (lambda (arg) ((procedure procedure) arg))))
(lambda (procedure)
(X (lambda (arg) ((procedure procedure) arg)))))))
0335デフォルトの名無しさん
2008/06/05(木) 20:35:29(define F*
(lambda (func-arg)
(lambda (n)
(if (zero? n)
1
(* n (func-arg (- n 1)))))))
((Y F*) 5)
0336デフォルトの名無しさん
2008/06/05(木) 20:36:15(define M*
(lambda (func-arg)
(lambda (l)
(if (null? l)
'no-list
(if (null? (cdr l))
(car l)
(max (car l) (func-arg (cdr l))))))))
((Y M*) '(4 5 6 3 4 8 6 2))
0337329
2008/06/05(木) 20:42:03>>334
>>335
>>336
皆さんありがとうございます。なんかすみません。
どれも微妙に難しいコードですが、がんばって理解します。
0338デフォルトの名無しさん
2008/06/06(金) 02:15:18丁寧なレスありがとうございます。
multirember&coとかアッカーマン関数とか、totalとpartialがどうしたとか、
これらを導出する事で何を言いたかったのかが今ひとつピンときませんでした。
まあ、でも一応Seasonedまでは読もうかと思っています。
0339デフォルトの名無しさん
2008/06/06(金) 06:25:04> 微積とかの数学を知らない人向けのSICPだったのかと。
> だから数学が得意な大学生は最初からSICPでいいと思う。
これは嘘。目的が全然違う。
0340デフォルトの名無しさん
2008/06/06(金) 18:21:20どんな本ですか?
0341デフォルトの名無しさん
2008/06/06(金) 20:34:58----
1
(,,゚∇゚) !!
0342デフォルトの名無しさん
2008/06/06(金) 21:23:17(syntax-rules ()
((swap a b) (let ((tmp b))
(set! b a)
(set! a tmp)))))
(define-syntax display-line
(syntax-rules ()
((display-line x)
(begin
(display x)
(newline)))))
(define tmp 5)
(define other 6)
(swap tmp other)
(display-line tmp)
(display-line other)
0343デフォルトの名無しさん
2008/06/06(金) 21:35:26(syntax-rules ()
((rotate a) (void))
((rotate a b c ...) (begin
(swap a b)
(rotate b c ...)))))
(define x 1)
(define y 2)
(define z 3)
(define w 4)
(rotate x y z w)
(display-line x)
(display-line y)
(display-line z)
(display-line w)
0344デフォルトの名無しさん
2008/06/06(金) 21:37:26(syntax-rules ()
((rotate2 a c ...)
(shift-to (c ... a) (a c ...)))))
(define-syntax shift-to
(syntax-rules ()
((shift-to (from0 from ...) (to0 to ...))
(let ((tmp from0))
(set! to from) ...
(set! to0 tmp)) )))
(rotate2 x y z w)
0345デフォルトの名無しさん
2008/06/06(金) 23:00:40(date->string (current-date) "~Y/~m/~d(~a) ~H:~M:~S")
0346デフォルトの名無しさん
2008/06/07(土) 02:08:30>>342-345
0347デフォルトの名無しさん
2008/06/07(土) 12:50:40学校の課題で困った
点(x,y) が 傾き a 、y切片が b である 直線 の 上部にあるか、 下部にあるかを 判断する updown? 定義せよ。
ただし、
上部にあるとき #t
下部にあるとき #f
を値として返すように せよ
0348デフォルトの名無しさん
2008/06/07(土) 12:56:500350デフォルトの名無しさん
2008/06/07(土) 13:05:58ほらよ。そのまま提出しろよ
(define (updown? a b)
"直線上にあったら何を返せばいいんだよこんなクソ問題だすやつは死ね \
もちろん単位なんていらん")
0352デフォルトの名無しさん
2008/06/07(土) 13:18:150353デフォルトの名無しさん
2008/06/07(土) 13:25:09直線上を考慮しないなんてありえない。一次関数の場合、端点が
常に極値になるのだから、直線上かどうかを調べるのは最も重要なことだ。
そんな教師はそちらから願い下げなさい。
0354デフォルトの名無しさん
2008/06/07(土) 13:44:580355デフォルトの名無しさん
2008/06/07(土) 14:21:14既知のxを使って算出できる一次関数の値と対象yの値を比べれば良いってアホでもわかりそうなものだが。
0356デフォルトの名無しさん
2008/06/07(土) 14:23:560357デフォルトの名無しさん
2008/06/07(土) 14:25:29最近は大学に入れるんだなあ。日本って本当に滅亡にむかってるのだなあ・・しみじみ。
0358デフォルトの名無しさん
2008/06/07(土) 14:31:060359デフォルトの名無しさん
2008/06/07(土) 14:35:05それは、地図の上と下のテイギを決めるようなもんだw
0360デフォルトの名無しさん
2008/06/07(土) 14:37:27一定方向に重力のある環境で、重力場の向かう方向、即ち物体が落ちる方向を下(した)、
その対蹠で物体が登る方向を上(うえ)という。
出典: フリー百科事典『ウィキペディア(Wikipedia)』
0361デフォルトの名無しさん
2008/06/07(土) 14:40:43中学校の総合の時間だったりしてw
>>351
直線の式にxの値を代入してyの値を比較すればわかるだろ
0362デフォルトの名無しさん
2008/06/07(土) 14:41:470363デフォルトの名無しさん
2008/06/07(土) 14:44:27class Point
attr :x, :y
def initialize(x, y)
@x, @y = x, y
end
def updown?(a, b)
(@y > a * @x + b) ? "#t" : "#f"
end
end
a, b = 1, 5
p = Point.new(1, 5)
puts p.updown?(a, b)
0364デフォルトの名無しさん
2008/06/07(土) 14:47:300365デフォルトの名無しさん
2008/06/07(土) 14:52:26ちょっと見ないうちにLISPも変わったな
0366デフォルトの名無しさん
2008/06/07(土) 14:52:440367デフォルトの名無しさん
2008/06/07(土) 14:59:39(display "こうですかわかりません")
0368デフォルトの名無しさん
2008/06/07(土) 16:30:010369デフォルトの名無しさん
2008/06/07(土) 17:53:13釣りだよ。久々にRuby厨降臨か。
0371デフォルトの名無しさん
2008/06/07(土) 18:43:090372デフォルトの名無しさん
2008/06/07(土) 18:45:040373デフォルトの名無しさん
2008/06/07(土) 18:59:280374デフォルトの名無しさん
2008/06/07(土) 20:01:04でも、Schemeで答え書いちゃったら>370の勉強にならんからな。つまらんし。
>>368
最近は継承の問題もあって、@使う人少ないよself.xとするのが主流
>>371
endぐらいなんだよ。お前なあ、fortran9xなんかend do/end if/end program
なんだぜ。それに比べりゃたかが三文字だし、
明示的にブロックの終わりを指定できてうれしいじゃん。
0375デフォルトの名無しさん
2008/06/07(土) 20:02:53>明示的にブロックの終わりを指定できてうれしいじゃん
GuidoLispに対する挑発行為ですねわかります
0376デフォルトの名無しさん
2008/06/07(土) 20:07:11あの syntax ならむしろ end class とかのほうが良かった。
なんかアンバランスな感じなんだよ。
0377デフォルトの名無しさん
2008/06/07(土) 20:09:09君は数式読み上げるときに「カッコ閉じる」って言って快感を得る人かな?
0378デフォルトの名無しさん
2008/06/07(土) 20:10:32なくてもわかるけどさw
0379デフォルトの名無しさん
2008/06/07(土) 20:11:55〜
ssalc
とか
それはそうとSchemeのbeginはなんとかしてほしい
0380デフォルトの名無しさん
2008/06/07(土) 20:16:220381デフォルトの名無しさん
2008/06/07(土) 20:19:01Wirthキター
ってModula-*もないとこはないよな。> BEGIN
0382デフォルトの名無しさん
2008/06/07(土) 20:20:200383デフォルトの名無しさん
2008/06/07(土) 20:25:36Paul Graham乙
0384デフォルトの名無しさん
2008/06/07(土) 20:29:09>君は数式読み上げるときに「カッコ閉じる」って言って快感を得る人かな?
ハァ? 普通言うだろ。閉じカッコの位置が違ったら意味が変わっちゃうこと
もあるし。演算子優先順位の存在しないLisperはこれだから無頓着で困る。
0385デフォルトの名無しさん
2008/06/07(土) 20:30:27書き手が気にする必要はない・・・・ってなんかどっかで似たような話を
聞いたことがあるようなないような。
0386デフォルトの名無しさん
2008/06/07(土) 20:31:430387デフォルトの名無しさん
2008/06/07(土) 20:33:240388デフォルトの名無しさん
2008/06/07(土) 20:35:240389デフォルトの名無しさん
2008/06/07(土) 20:51:26> 演算子優先順位の存在しないLisperはこれだから無頓着で困る。
かなりハズしたねw
)ないと困るのはLispでも一緒
0390デフォルトの名無しさん
2008/06/07(土) 21:17:070391デフォルトの名無しさん
2008/06/07(土) 21:19:230392デフォルトの名無しさん
2008/06/07(土) 21:23:130393デフォルトの名無しさん
2008/06/07(土) 21:31:23prog0 = begi0?
0394デフォルトの名無しさん
2008/06/07(土) 22:16:360395デフォルトの名無しさん
2008/06/07(土) 22:43:440396デフォルトの名無しさん
2008/06/07(土) 22:51:060397デフォルトの名無しさん
2008/06/07(土) 22:52:140398デフォルトの名無しさん
2008/06/07(土) 22:52:14学校に1人はこっかと読ませる先生がいてだな
0399デフォルトの名無しさん
2008/06/07(土) 22:57:33if ....
fi
case ....
esac
0400デフォルトの名無しさん
2008/06/07(土) 23:17:51( : かっ
) : っこ
( + 1 2 )
かっ プラ いち に っこ
0401デフォルトの名無しさん
2008/06/07(土) 23:30:58Haskellの$みたいなのならそれでもいいけど
全部一気に閉じない場合は?
0402デフォルトの名無しさん
2008/06/08(日) 00:39:25書籍にもあるから結構メジャーなんだと思ってるが。
0403デフォルトの名無しさん
2008/06/08(日) 04:32:00Dirac先生まで来た!
0404デフォルトの名無しさん
2008/06/08(日) 05:23:100405デフォルトの名無しさん
2008/06/08(日) 11:41:420406デフォルトの名無しさん
2008/06/08(日) 13:04:47(define M
(lambda (f)
(lambda (ls)
(cond
((null? ls) '())
(else (cons (f (car ls)) ((M f) (cdr ls))))))))
(define (add1x) (+ 1 x))
((M add1) '(1 2 3)) ;=> '(2 3 4)
0407デフォルトの名無しさん
2008/06/08(日) 13:16:120408デフォルトの名無しさん
2008/06/08(日) 13:19:46さすがに海外にはnerapと呼ぶ猛者はいないか。アーカードとかレッドラムみたいな。
0409デフォルトの名無しさん
2008/06/08(日) 14:07:48人生の敗北者
0410デフォルトの名無しさん
2008/06/08(日) 15:26:300411デフォルトの名無しさん
2008/06/08(日) 17:32:490412デフォルトの名無しさん
2008/06/08(日) 17:35:110413デフォルトの名無しさん
2008/06/09(月) 01:02:50あ、出典わかって納得w
0414デフォルトの名無しさん
2008/06/09(月) 03:00:010415デフォルトの名無しさん
2008/06/09(月) 07:00:060416デフォルトの名無しさん
2008/06/09(月) 22:34:40誰か助けてー\(*_*)/
0417デフォルトの名無しさん
2008/06/09(月) 22:41:560418デフォルトの名無しさん
2008/06/09(月) 22:57:530419デフォルトの名無しさん
2008/06/09(月) 23:09:27再帰ではなく、単なる手続き呼び出しだ、と思えば良い。
たまたま自分自身を呼んでいるだけ。
0420デフォルトの名無しさん
2008/06/09(月) 23:12:260421デフォルトの名無しさん
2008/06/09(月) 23:12:46他言語で再帰を使った経験は?
0422デフォルトの名無しさん
2008/06/09(月) 23:47:57(ローカル)変数の寿命とスコープって聞いてスッと頭に入ってくる?
いや、COBOLer とかの、ローカル変数って概念がない人がいたりするので。
0423デフォルトの名無しさん
2008/06/09(月) 23:52:45もうちょっとがんばってみようと思います
0424デフォルトの名無しさん
2008/06/10(火) 07:07:260425デフォルトの名無しさん
2008/06/10(火) 19:59:03lambdaもちゃんと動作しないという認識であってますか?
0426デフォルトの名無しさん
2008/06/10(火) 20:01:320427デフォルトの名無しさん
2008/06/10(火) 20:06:56こんな感じで計算してくれない
gosh>(define test (lambda (a b) (*a b)))
gosh>test 1 5
1
5
0428デフォルトの名無しさん
2008/06/10(火) 20:20:12(test 1 5)
0429デフォルトの名無しさん
2008/06/10(火) 20:24:490430デフォルトの名無しさん
2008/06/10(火) 20:35:320431デフォルトの名無しさん
2008/06/10(火) 20:35:440432デフォルトの名無しさん
2008/06/10(火) 21:27:09test 1 5
=>
#<procedure:test>
1
5
0433デフォルトの名無しさん
2008/06/10(火) 21:27:490434デフォルトの名無しさん
2008/06/10(火) 21:36:34(define test (lambda (a b) (*a b)))
(test 1 5)
=>
reference to undefined identifier: *a
となってしまうでしょう。2段構えの手の込んだネタw
0435427
2008/06/10(火) 23:05:550436デフォルトの名無しさん
2008/06/10(火) 23:17:47天然キャラ乙。
0437デフォルトの名無しさん
2008/06/10(火) 23:45:380438427
2008/06/10(火) 23:50:19#<undef>
gosh> (print "こんにちは")
*** READ-ERROR: Read error at "(stdin)":line 2: EOF encountered in a string lite
ral: "ツつアツ・
Stack Trace:
_______________________________________
gosh> *** ERROR: unbound variable: ツソツ
Stack Trace:
_______________________________________
gosh> *** READ-ERROR: Read error at "(stdin)":line 2: extra close parenthesis
Stack Trace:
_______________________________________
gosh>
0439デフォルトの名無しさん
2008/06/10(火) 23:52:37> gosh> (print "hello")
> #<undef>
> gosh>
ちょっと待て
0440デフォルトの名無しさん
2008/06/11(水) 00:07:521〜3行目はこうだったw
gosh> (print "hello")
hello
#<undef>
0441デフォルトの名無しさん
2008/06/11(水) 00:42:260442デフォルトの名無しさん
2008/06/11(水) 00:50:310443デフォルトの名無しさん
2008/06/11(水) 00:56:14Gauche scheme interpreter, version 0.8.13 [utf-8]
入力したエンコードとは!?
コマンドプロンプトにもエンコードとか指定できるんですか
ちなみにテキストファイルにコード書いてShift_JISで保存・実行しても文字化けしました
0444デフォルトの名無しさん
2008/06/11(水) 01:25:28>Gauche scheme interpreter, version 0.8.13 [utf-8]
>ちなみにテキストファイルにコード書いてShift_JISで保存・実行しても文字化けしました
>>[utf-8]
0445デフォルトの名無しさん
2008/06/11(水) 01:55:19UTF-8で保存してみたけどやっぱりダメでした
D:\>gosh test.scm
縺薙s縺ォ縺。縺ッ
あとコマンドプロンプトでそのままコード書いてもやっぱり文字化けですから
これは不具合というか実験中ということで未対応なんでしょうね
0446デフォルトの名無しさん
2008/06/11(水) 01:57:390447デフォルトの名無しさん
2008/06/11(水) 02:07:370448デフォルトの名無しさん
2008/06/11(水) 02:27:03どのWindowsを使ってるかは知らないが、コマンドプロンプトで、
UTF-8でエンコードされた日本語が、正常に表示されると思った根拠は?
0449デフォルトの名無しさん
2008/06/11(水) 02:48:12コマンドプロンプトに、UTF-8でエンコードされた「こんにちは」を出力すると、
そう表示されるな。
(use gauche.charconv)
(print (ces-convert "こんにちは" 'utf-8 'sjis))
お前、ネイティブエンコーディングって何か理解してないだろ?
0450デフォルトの名無しさん
2008/06/11(水) 03:29:34449さんのコードをUTF-8で保存し、実行すると正しく表示されました
Shift_JISで保存し、実行すると文字化けしました
コマンドプロンプトは基本Shift_JISってことですね
(ちなみにVistaもXPも同じ結果になるぽ)
ネイティブエンコーディングってググってもよくわからないですけど、
言語自体の基本となる文字コードのことでしょうか?
Gaucheの場合、UTF-8ですよね
コマンドプロンプトで直接コードを入力するとShift_JISのコードになってしまう
そのコードをGaucheがUTF-8で解釈して(この時点で文字化け)、
得た結果をさらにShift_JISとして出力されるから・・・・
わけわからないことになりますが・・・
0451デフォルトの名無しさん
2008/06/11(水) 03:33:430452デフォルトの名無しさん
2008/06/11(水) 03:56:00理解したみたいなので、詳しくは書かないけど、
言語自体というか、処理系が内部で使う文字コードのこと。
Gaucheの場合、EUC-JPやUTF-8、ShiftJISなどから選べる。
それで、お前さんの使ってるGaucheはUTF-8でコンパイルされてる。
確かに、Windowsのコマンドプロンプトから使うには不便だろうな。
configureに--enable-multibyte=sjisを指定してコンパイルし直すか、
Emacs経由で使った方がいいと思うぞ。
ttp://practical-scheme.net/wiliki/wiliki.cgi?Gauche%3aGauchebox
0453デフォルトの名無しさん
2008/06/11(水) 08:43:32UTF-8でビルドした犯人は俺だ。
でもShift_JISでビルドしたものを配布すると他国の人が困るんじゃないかな。
それともGauche-mingw-0.8.13-sjis.exe とかを作る?
0454デフォルトの名無しさん
2008/06/11(水) 08:44:57毒を出しすぎ。
0455UTF‐8はXML標準…でも日本語「だけ」苦手?(ТΤ
2008/06/11(水) 10:18:00「直感的には」わかりにくかったけれど、
「印欧語話者の生成文法で言う言語本能って
だいたいこんな感じなんじゃないか?」と思った。
(英語で隠れてるが、ドイツ語は剥き出し?)
→この「発想パターン」は何度でも「来る」。
私は参照(接続/冠詞)型主語言語話者でなくて
近傍(焦点‐集合操作)型主語言語(日本語)話者w
集合操作による構文は経路‐直線的間接参照端点:
「静的・直線的な論理」:印欧語族の構文法とは違う。
(ドジスンの指摘したとおり論理対象空間は本来動的で、
各所で前提が違う方が普通だから、直線化は不可能。)
=英語的言語感覚でなら「直感的に使える優秀な言語」。
英語(印欧語)センスを鍛えようw ゎぁぃ モレオワタ(AA略)
0456デフォルトの名無しさん
2008/06/11(水) 11:30:34図形、地図、表、レゴブロック、そういったもの達のほうにずっと近い。
だから>>455を読んで、日本語の話者だから戸惑うのではなく、
言語に触れるモードで触れるから戸惑うのではないか、みたいなことを感じた。
0457デフォルトの名無しさん
2008/06/11(水) 11:52:23プログラマの意図が分かるように書きたいときは、言語っぽくないと困る
0458デフォルトの名無しさん
2008/06/11(水) 12:09:57日本語もまともに書けないのはよくわかった。
0459デフォルトの名無しさん
2008/06/11(水) 12:50:18自分の読解力のなさを棚にあげるのはやめようぜ
0460デフォルトの名無しさん
2008/06/11(水) 12:56:30そんじゃ、印欧語話者の間でPy(ピー)が人気なのは何で?素朴な疑問〜
0461デフォルトの名無しさん
2008/06/11(水) 13:03:570462デフォルトの名無しさん
2008/06/11(水) 13:04:09ほう、なら455を日本語で説明してくれんか?
3行目から出てくる括弧の使い方から。
特攻の拓みたいに特殊な言語かと思ったよ。
0463デフォルトの名無しさん
2008/06/11(水) 13:04:370464デフォルトの名無しさん
2008/06/11(水) 13:14:22→ 直感的には判りにくいけれど、
「印欧語話者の生成文法で言う言語本能ってだいたいこんな感じなんじゃないか?」と思った。
→ 印欧語話者の生成文法で言う「言語本能」って、大体こんな感じなんじゃないか?と思った。
0465デフォルトの名無しさん
2008/06/11(水) 13:54:50Windowsのことはよく知らないんだけど、入出力コードはカレントロケールに合わせる
みたいなことって難しいの?
0466デフォルトの名無しさん
2008/06/11(水) 13:56:52俺も>>455が何を言いたいのか理解できなかった。
読解力無いのかなあ。
0467デフォルトの名無しさん
2008/06/11(水) 14:05:445行目以降もまるで判らんので、その調子で翻訳お願いしますね。>459
こんな物を読解する能力なら不要だと確信してるけど、
>>456でいきなり会話が成立した(らしい)事が、本当に不思議でしょうがない。
0468デフォルトの名無しさん
2008/06/11(水) 14:08:50GEBとかメタマジックゲーム読んで悦に入ってそう
0469デフォルトの名無しさん
2008/06/11(水) 14:23:470470デフォルトの名無しさん
2008/06/11(水) 14:24:44>>461
「国際的にも」「日本では」
国際的なのか、日本だけなのか、はっきりしる!
…みたいな日本語の乱れについての話題なのかな?今は。
外国人が一生懸命コミュニケーションしようとする試み
なのかもしれないけど、漢字ひらがな並べれば良い、って物じゃないんです。
半端に学ばれたままだと相手を不愉快にさせますよ。
0471デフォルトの名無しさん
2008/06/11(水) 14:32:23字は読めないけど日本のマンガには詳しい、みたいな。
0472デフォルトの名無しさん
2008/06/11(水) 14:43:03受け答えは期待出来ないと思う
0473デフォルトの名無しさん
2008/06/11(水) 15:34:47このへんに問題点が書かれている。
http://practical-scheme.net/wiliki/wiliki.cgi?Gauche%3aWindows%2fVC%2b%2b%3alog%3aold_2007#H-1ctgw0n
これはVC++の話だけどMinGWも同様と思われる。
0474デフォルトの名無しさん
2008/06/11(水) 15:37:14俺も理解できないんだが、
>>456が回答してるんだから
理解できる文章なんだろ。
俺たちが読解力不足ってだけで。
と思っただけ。
0475デフォルトの名無しさん
2008/06/11(水) 15:40:110476デフォルトの名無しさん
2008/06/11(水) 16:06:49言語学用語なのかな?
あるいはLispを齧ったばかりの455さんが戯れに組んだELIZAじゃないだろうなw
0477デフォルトの名無しさん
2008/06/11(水) 16:08:450478デフォルトの名無しさん
2008/06/11(水) 16:19:09MS-Windows使わない人なんでハズしている可能性あるが…
この端末エミュレータで解決できんかね?
実行するコマンドの文字コード指定できるみたいだが。
http://ja.poderosa.org/
Win32のコンソールAPIは最低限の依存で済ませているみたい。
Gaucheもそうだろうから、利用できるんじゃないか。
0479デフォルトの名無しさん
2008/06/11(水) 17:02:49Lispが生き残ってるのはEmacsのおかげ
実用には耐えないが一部ハッカーの趣味で使われている
など否定的な意見のみが見られてイマイチ本気になれません
Lispで作られたアプリケーションを教えていただけないでしょうか
0480デフォルトの名無しさん
2008/06/11(水) 17:05:390481デフォルトの名無しさん
2008/06/11(水) 17:08:280482デフォルトの名無しさん
2008/06/11(水) 17:29:130483デフォルトの名無しさん
2008/06/11(水) 17:30:39http://pc11.2ch.net/test/read.cgi/tech/1201402366/860
860 名前:入ってしまえば天国なんだね…。[sage] 投稿日:2008/06/11(水) 11:01:38
LISPに最初から挫折しそうになって、あちこち見ています。
使用者例が少なすぎて発想パターンを断言できないけど、
思考‐発想タイミングから言えば基本的に敷居「だけ」が
高い言語のようだし、初心者を甘やかしても良さそう。
ところで、この言語で言えば印欧語族のロシア語みたいな
性格を見て今、ぐぐってみたんだが…ちょw大当たりww
これは…すごいのはキャラが立ってるLISPだなwww
これが、印欧語族の中では英語的なC言語系だと…
ぐぐってみた…ごめん、もう何も言う事ないwwww
(英語は「敬語」を始め、高度習得が困難です。)
対照的すぐる…(もうちょいがんばれば、あるいは…?
0484デフォルトの名無しさん
2008/06/11(水) 17:30:42無理して本気になる必要ないよ。
好きなことだけ本気でやればいい。
仕事なら話は別だけどね。
0485デフォルトの名無しさん
2008/06/11(水) 17:33:54おいおい、弁解するのはかまわないけど、
勝手に「俺たち」で括るのはやめてくれよ。
お前みたいな言う事がコロコロ変わる幼稚な奴と
一緒にされたら気分悪いだろ。
0486デフォルトの名無しさん
2008/06/11(水) 17:36:150487デフォルトの名無しさん
2008/06/11(水) 18:04:32これはひどいww
0488デフォルトの名無しさん
2008/06/11(水) 18:41:12必死すぎw
0489デフォルトの名無しさん
2008/06/11(水) 18:57:30必死だから何だ?
マジで気持ち悪いからな。お前も含めて。
書き逃げばっかりしてないで意見があるなら書けよ。
0490デフォルトの名無しさん
2008/06/11(水) 19:32:58#!C:/Programme/PLT/mzscheme -r
(require (lib "cgi.ss" "net"))
(display "content-type: text/html") (newline)
(newline)
(display "<HTML>")(newline)
(display "<HEAD><TITLE>cgi-script's response</TITLE></HEAD>")(newline)
(display "<BODY>")(newline)
(display "Hello, I'm Mr. ")
(display (extract-binding/single 'surname (get-bindings)))
(display ". <BR>")(newline)
(display "Just call me ")(display (extract-binding/single "firstname" (get-bindings)))
(display ". <BR>")(newline)
(display "</BODY>")(newline)
(display "</HTML>")(newline)
0491デフォルトの名無しさん
2008/06/11(水) 20:55:250492デフォルトの名無しさん
2008/06/11(水) 22:51:480493デフォルトの名無しさん
2008/06/12(木) 01:55:43入門書読んでて再帰の便利さはなんとなく伝わったけど・・・
やっぱ上級者になると普通に使えるんですよね
俺ってやっぱりダメな子・・・
| |/(-_-)\|
| | ∩ ∩ |
|  ̄ ̄ ̄ ̄ ̄
:::, ―――、
::::/./^^^^^^'vl
:::::::| | / \ ||
:::::::(sl rェ , rェ |') ウツダ
:::::゙ゝ、 - ノ
:::::/ l  ̄ ̄lヽ
:::::|-|/l⌒l⌒l-|
:::::\二、_)二ノ _____________
:::::||| |:| |
/`ー(⌒)(⌒)
/;;;;;;;;;;;;;;;; ̄;;;;; ̄
/
/
0494デフォルトの名無しさん
2008/06/12(木) 02:10:18昔むかし、Pascalの授業の宿題で再帰を使わないと事実上解けない問題を
「再帰呼び出しと言うものを全く知らずに」何とか解こうと悪戦苦闘した
俺よりはマシw。
0495デフォルトの名無しさん
2008/06/12(木) 02:14:54再帰呼び出しを説明している部分がほとんど無かった。
今なら考えられない教科書だと思う。
0496デフォルトの名無しさん
2008/06/12(木) 02:19:250497デフォルトの名無しさん
2008/06/12(木) 02:22:450498デフォルトの名無しさん
2008/06/12(木) 02:23:14それを記憶に焼き付けさせたのか
0499デフォルトの名無しさん
2008/06/12(木) 02:32:13見かけ上、同じ名前の変数や関数でもシンタックス(戻り番地など)と
共にスタック上に別もの扱いで次々と積まれて行く事が分かって
ようやく納得が行ったよ。
そこに気づくまでは訳が分からなかった。
0500デフォルトの名無しさん
2008/06/12(木) 02:33:08http://www.tohofuhai.com/ 豆腐ゲームコンテスト
http://kirara111.sakura.ne.jp/ 星屑きらら杯
http://3punge.com/ 3分ゲーコンテスト(今休止中)
0501デフォルトの名無しさん
2008/06/12(木) 02:55:49昔pascalとくれば東大の学生だったんだな。
0502デフォルトの名無しさん
2008/06/12(木) 03:30:00なんか環境自体が、うまく動いていないような気がするのだが・・・
0503デフォルトの名無しさん
2008/06/12(木) 03:48:300504デフォルトの名無しさん
2008/06/12(木) 04:16:06>>494の思い出話に出てくる「問題」は、あくまで宿題なわけで。
たとえば身も蓋も無い例をいえば、「ただし、ループを使ってはいけない」と書かれた「問題」は、
再帰で解けてもループでは解けないよ。
0505デフォルトの名無しさん
2008/06/12(木) 08:09:22Pascalの機能として知らなかったのなら話はわかるが、
再帰の概念がわからなかったっていうのは・・・
高校の数学をさぼってたと考えられる。
0506デフォルトの名無しさん
2008/06/12(木) 09:30:12「再帰を使用せよ」と指定されてないかぎり、なんでもif/gotoで書き直せる
はずなんだが。
0507デフォルトの名無しさん
2008/06/12(木) 09:49:540508デフォルトの名無しさん
2008/06/12(木) 09:59:14Schemerはgotoを嫌っているわけではないと思います
0509デフォルトの名無しさん
2008/06/12(木) 10:26:120510デフォルトの名無しさん
2008/06/12(木) 10:31:17配列をスタックと看做してループすれば再帰と等価。
たぶん。
無限の記憶域の場合は等価かどうかはわからない。
0511デフォルトの名無しさん
2008/06/12(木) 10:44:030512デフォルトの名無しさん
2008/06/12(木) 11:21:09>配列をスタックと看做してループすれば再帰と等価
それじゃ関数の呼び出し部分を自分で作ってるのと同じじゃないか?
0513デフォルトの名無しさん
2008/06/12(木) 11:35:210514デフォルトの名無しさん
2008/06/12(木) 12:01:04そう。
端的に言えば再帰を使わずに仮想機械を組む。
その中で仮想言語で再帰的プログラムを組む。
表層言語には再帰は現れず、
データ(仮想言語)に再帰が現れるだけ。
CPUは再帰的ではなく反復的に計算するけど
再帰計算ができるでしょ?
それをソフトウェアでするだけのこと。
再帰的なデータも許さないとなれば
再帰的アルゴリズムが表現できず
チューリング完全でなくなる。
0515デフォルトの名無しさん
2008/06/12(木) 12:01:43>>510
無限記憶領域でも等価です。
詳しくは計算理論の入門書で。
0516デフォルトの名無しさん
2008/06/12(木) 13:17:31上級者になると、ていうより基礎中の基礎。
ドラゴンボールで言えば舞空術。
囲碁で言えばシチョウ。
でもあのポール・グレアムでさえ
プログラムを習いたての頃は反復アルゴリズムしか知らず
再帰を使いたいなどと考えたことはなかったし
(Ansi Common Lisp)
19歳の時には
「たぶんLispを学ぶべきなんだろう。しかしLispはあまりに異質に見える。」
(Lispがそんなにすごいなら ---If Lisp Is So Great---)
などと考えてたんだから
頑張れ!
0517デフォルトの名無しさん
2008/06/12(木) 13:17:52あたりまえじゃないか。もちろん逆も真。
0518デフォルトの名無しさん
2008/06/12(木) 13:30:10Drosteココア
http://en.wikipedia.org/wiki/Image:Droste.jpg
メリーミルク
http://mognavi.jp/image/food/00/01/51/4902705021471.jpg
0519デフォルトの名無しさん
2008/06/12(木) 13:34:59再帰を見て、わざわざこんなことしなくても・・・と思ってしまう問題が多い。
たまに再帰があって良かったなと思う程度。
僕は、きっとLispに向いてない。
ちなみに、ほとんどLispはできません。
0520デフォルトの名無しさん
2008/06/12(木) 13:51:53この質問に的確に答えてくれる人がいたら、
みんなの(僕の)ためになるんじゃないかと思って。
たとえば、再帰を使うめっちゃ初歩的な関数lengthがあるよね
(defun length (lst)
(if (null lst)
0
(+ 1 (length (cdr lst)))))
再帰がわからない人って、読むときにlengthって関数の
意味が知りたいのに(わかってないのに)、lengthを使われても
わかるわけないじゃんってことじゃない?
0521デフォルトの名無しさん
2008/06/12(木) 13:55:28以下、それを引用しているページから引用。
初めのうちは再帰は理解するのが難しいと思う人が多い。
難しいと思ってしまうのは、主に関数に対して誤ったメタファ(比喩)をあてはめていることによる。
人々は関数をマシンの一種ととらえがちである。
原料がパラメータで届き、ほかの関数に下請けに出して処理し、最後に完成品を組み立てて、返り値として出荷する。
関数に対してこのメタファをもっていると、再帰は不可能ということになる。
マシンがどうやって作業を自分自身に下請けに出すのか?
動作中のマシンにはそんな余裕などないじゃないかと思ってしまうことになる。
関数は進行しつつあるプロセスであると見る方が、メタファとしては適当であろう。
再帰はプロセスの中では自然なものである。日常生活でも再帰的なプロセスをよく見る。
たとえば、ヨーロッパ史における人口変化に関心をもっている歴史家を考えてみよう。
資料を調べるプロセスは以下のようなものだろう。
1. 1 つの資料を手に入れる
2. 人口変化に関する情報を探す
3. その資料がほかの役立ちそうな資料に言及していたら、ほかの資料を調べる
このプロセスは理解しやすいものだが、第 3 ステップにより同じプロセスが何度か適用されることがあるので、
再帰的なプロセスになっている。
0522デフォルトの名無しさん
2008/06/12(木) 14:00:20なるほど、そういう風に悩むのか。
まず、lengthの中のlengthが使われるのはnullでないときだけ、
つまり () に対する length の値は length を使わずに 0 と決まっている。
で、それ以外については length を使うわけだが、だんだん短くなっていつかは 0 が返る。
という具合にステップバイステップで考えていくと判りやすいんじゃないかな。
0523デフォルトの名無しさん
2008/06/12(木) 14:02:50グダグダ言ってないで手も動かせ
そう言っていた数学の先生がいたとかいないとか
The Little Schemerなんかもそのクチか
0524デフォルトの名無しさん
2008/06/12(木) 14:05:570525デフォルトの名無しさん
2008/06/12(木) 14:20:38自分は数列、漸化式が得意で好きだったから、
再帰は何も悩む所がなかった。
実装手法もPコードですぐに理解できた。(東大ではありません>>501)
浮動点による意味づけを知った時には、
漸化式みたいでわくわくした。
0526デフォルトの名無しさん
2008/06/12(木) 14:43:07名文をありがとう。
>>522
う〜ん、自分流に噛み砕くと、
(1)停止することを確認
(2)cdr部分を取って、空リストになるまでは1足し続ける(lengthの場合)
ってことですかね。
>>525
うらやましい。
0527デフォルトの名無しさん
2008/06/12(木) 15:00:29部分問題毎に適切な処理、(1, length)
部分問題の解を統合。(+)
部分問題の収束地点の設定。(null, 0)
分割統治法の一番極端な形、一要素とそれ以外に分ける。
後は下請け(再帰的関数呼出し)に任せる
0528デフォルトの名無しさん
2008/06/12(木) 16:27:08LISt Processorなのにパターンマッチが標準で無いってどういうことよ
0529デフォルトの名無しさん
2008/06/12(木) 16:28:49簡単に作れるからでは?
0530デフォルトの名無しさん
2008/06/12(木) 16:31:19簡単に作れるものほど言語が準備すべきだと俺は思う。
そうでないと人によってそれぞれの実装ができてしまって
言語の「中に」バベルの塔ができちゃうからね(実際Lispはそうなっちゃってるのでは?)
0531デフォルトの名無しさん
2008/06/12(木) 16:35:42汎用のパターンマッチを使うよりも効率的な専用マッチャーが簡単に書けるから、
必要性が低いのだ。正規表現があまり使われないのも、だいたい同じ理由だ。
0532デフォルトの名無しさん
2008/06/12(木) 16:40:440533デフォルトの名無しさん
2008/06/12(木) 16:43:070534デフォルトの名無しさん
2008/06/12(木) 16:44:27君の考える「パターンマッチ」の具体的な仕様と使用例を示してくれると、
より有意義な議論ができると思う。
0535デフォルトの名無しさん
2008/06/12(木) 17:51:19大抵は分岐の内容に応じてリストを分解するから一度に処理するのは適切な抽象化なはず
下にリストの内容を1だったら2、2だったら5、それ以外だったらそのままにして変換する関数を
書いてみたがどうみてもパターンマッチ版の方がわかりやすい(どうやってパターンマッチを実装するのかは
しらないけど。あとmap使えというのは禁句)
みんなのLispプログラムもみなおしてみたらパターンマッチを使った方がスッキリする部分が多くあるのでは?
このスレにもパターンマッチを「ふわふわしたおまけ」としかみなしてない人が結構多いと思うから
俺のレスがパターンマッチを使うきっかけになってくれれば幸いだ。
(defun (hoge lst)
(cond ((eq (car lst) 1)
(cons 2 (hoge (cdr lst))))
((eq (car lst) 2)
(cons 5 (hoge (cdr lst))))
((and (not (null? lst)) (list? lst))
(cons (car lst) (hoge (cdr lst))))
(else
nil)))
(defun (hoge lst)
(pm lst
((| 1 xr)
(cons 2 (hoge xr)))
((| 2 xr)
(cons 5 (hoge xr)))
((| x xr)
(cons x (hoge xr)))
(else
nil)))
0536デフォルトの名無しさん
2008/06/12(木) 17:59:53後者が簡潔だが、前者が判りやすい。おそらく効率は前者が勝る。
「ふわふわしたおまけ」とは思わないけど、言語の中に別の言語を導入するような
気持ち悪さは感じる。
まあ好きな人は使えば良いのでは?という程度かなあ。
0537デフォルトの名無しさん
2008/06/12(木) 18:20:59CL?Scheme?
0538デフォルトの名無しさん
2008/06/12(木) 18:27:260539デフォルトの名無しさん
2008/06/12(木) 20:20:34可読性とかは知らんけど
0540デフォルトの名無しさん
2008/06/12(木) 20:22:110541デフォルトの名無しさん
2008/06/12(木) 20:25:280542デフォルトの名無しさん
2008/06/12(木) 20:28:51Listだけどnilじゃないのを一発で判別する関数ってないんかね
0543デフォルトの名無しさん
2008/06/12(木) 21:05:06pair?
0544デフォルトの名無しさん
2008/06/12(木) 21:41:28http://www.bk1.jp/product/02997001
0545デフォルトの名無しさん
2008/06/12(木) 21:47:48原著よりも安いのか。
園城さんって、LispUser.netの人ですね。
0546デフォルトの名無しさん
2008/06/12(木) 21:54:10「List」だけどnilじゃない
0547デフォルトの名無しさん
2008/06/12(木) 22:37:44いろいろな人が考えたけど、
S式とうまくマッチするのがないってのが現状。
これだけ時間がかかって見つからないからないんだと思う。
define-syntaxは一部カバーしていると思うが。
0548デフォルトの名無しさん
2008/06/12(木) 22:57:140549デフォルトの名無しさん
2008/06/12(木) 23:32:04昔から、
(match '(a b . c) '(1 2 3 4 5)) =>((a 1) (b 2) (c (3 4 5)))
(match-let (a b . c) '(1 2 3 4 5) (list a b c)) =>(1 2 (3 4 5))
みたいなのや、prologのunification辺りはほとんどの人間が
自分の物を持ってると思うけどな。
こういうのをマクロにしてパターンを定数で取れば特殊化もできる。
今は組み込みにするのが流行だろうけど、
LISP系ならパターンマッチはライブラリで自然に実装できる範囲だから、
あえて入れなかったのでは。
0550デフォルトの名無しさん
2008/06/12(木) 23:39:31nilは「List」だけど。
おまいのListの定義がおかしいだけ。
素人増えましたな。
0551デフォルトの名無しさん
2008/06/12(木) 23:46:00(define (non-nil-list? x)
(and (not (null? x))
(list? x)))
が組み込みであるか?てことでしょ。
これはSchemeのコードだけど。
コンスとリストを混同してるのでは?
0552デフォルトの名無しさん
2008/06/12(木) 23:55:31↓
conspだけでいいのでは
↓
よくない
↓
?←今このへん
0553デフォルトの名無しさん
2008/06/12(木) 23:56:480554デフォルトの名無しさん
2008/06/13(金) 00:04:150555デフォルトの名無しさん
2008/06/13(金) 00:07:370556デフォルトの名無しさん
2008/06/13(金) 00:25:34一度まじめにどっちかで矯正した方がいいよ。
0557デフォルトの名無しさん
2008/06/13(金) 00:34:250558デフォルトの名無しさん
2008/06/13(金) 02:00:34MITとかUCBあたり??
0559デフォルトの名無しさん
2008/06/13(金) 02:02:260560デフォルトの名無しさん
2008/06/13(金) 02:07:300561デフォルトの名無しさん
2008/06/13(金) 02:30:21これから独学でLisp習おうと思ってる。
今までプログラミング言語を真っ当に習ったことはなくUNIXのBシェルスクリプトが
ちょっと使えるくらい。
こんな自分が、あとから矯正の必要がないように正しく学ぶためにはどうすればいいですか?
0562デフォルトの名無しさん
2008/06/13(金) 02:35:00訳書は見てないけど >>544 なんて良いんじゃないかな。
実用的な例題で勉強できるから飽きないと思うよ。
0563デフォルトの名無しさん
2008/06/13(金) 02:37:43わたしゃ独学でCLを学んでたけど、
定番の本だけはきっちり抑えておくとそこから、書き方を学ぶことができるよ。
もちろん、本に載ってなくって、知っておいたほうがよい方法やスキルというのも
あるけど、それは実際に勉強会などを通じて人とのコミュニケーションをとっていく
事からだと思うな。
別に俺様言語でもいいけどさ。矯正は必要な場合はあるけど、実際に回りにschemer
がいるかといえば別の問題があるからね。その点は指摘してる>>556というのは
恵まれた環境を持っているといえるね。最近はハブサイトもできつつあるから、
独学者にとってもよい時代がくると思うよ。shiroさんのサイトみたいに人が集まってるとこ
ろは自分から積極的に恵まれた環境を作るきっかけにはなるよ。
0564デフォルトの名無しさん
2008/06/13(金) 02:40:26オンラインのみで流れているスタイルに対してのよいドキュメントは
先日g000001さんたちがやっていたNorvig and Pitman 1993 (和訳あり)をよんで
みればいい。
0565デフォルトの名無しさん
2008/06/13(金) 02:48:07これね。これはcommon lispの師匠に進められた文章でもあります。テンプレに含めて
もいいと思う。
0566デフォルトの名無しさん
2008/06/13(金) 02:51:18ktkr
0567デフォルトの名無しさん
2008/06/13(金) 07:33:49thx!
0568デフォルトの名無しさん
2008/06/13(金) 07:37:36その文章はとてもいいよね。
でもおれdeftype使ったプログラムあんまり見たことないんだけど気のせい?
0569デフォルトの名無しさん
2008/06/13(金) 09:50:06> でもおれdeftype使ったプログラムあんまり見たことないんだけど気のせい?
たしかにみたことがない。 あまりないのはしかたがないかも。
typecaseで場合分けすることや型宣言前提だろうし。
0570デフォルトの名無しさん
2008/06/13(金) 13:55:21だから使ったことない。> deftype
0571デフォルトの名無しさん
2008/06/13(金) 14:24:51微妙にわかるような、わからないような…。
でも、棲み分けだよね。
0572デフォルトの名無しさん
2008/06/13(金) 17:00:48この文章は俺もよく参考にさせてもらいました。ちなみに原文(英語)はこちら。
http://www.cs.umd.edu/~nau/cmsc421/norvig-lisp-style.pdf
0574デフォルトの名無しさん
2008/06/13(金) 23:57:480575デフォルトの名無しさん
2008/06/14(土) 01:09:21(list? '(1 . 2)) ;=> #f
(list? '()) ;=> #t
(define (listp x)
(and (not (null? x))
(pair? x)))
(listp '(1 . 2)) ;=> #t
(listp '()) ;=> #f
0576デフォルトの名無しさん
2008/06/14(土) 01:14:50(listp '(1 2)) ;=> #t
0577デフォルトの名無しさん
2008/06/14(土) 05:38:16最初からおさらいしたら?
0578デフォルトの名無しさん
2008/06/14(土) 11:07:37(list? '()) ;=> #t
(list? '(1 2)) ;=> #t
(define (listp x)
(and (not (null? x))
(pair? x)))
(listp '(1 . 2)) ;=> #t
(listp '()) ;=> #f
(listp '(1 2)) ;=> #t
(define (non-nil-list? x)
(and (not (null? x))
(list? x)))
(non-nil-list? '(1 . 2)) ;=> #f
(non-nil-list? '()) ;=> #f
(non-nil-list? '(1 2)) ;=> #t
0579デフォルトの名無しさん
2008/06/14(土) 11:20:00(not (non-nil-list? x)))
(nil-list? '(1 . 2)) ;=> #f
(nil-list? '()) ;=> #f
(nil-list? '(1 2)) ;=> #t
0580デフォルトの名無しさん
2008/06/14(土) 11:21:54(nil-list? '(1 . 2)) ;=> #t
(nil-list? '()) ;=> #t t
(nil-list? '(1 2)) ;=> #f
0581デフォルトの名無しさん
2008/06/14(土) 12:11:140582デフォルトの名無しさん
2008/06/14(土) 12:24:120583デフォルトの名無しさん
2008/06/14(土) 12:58:53いちいち無意味なもん貼るな。
自由帳はこちら。>>8
0584デフォルトの名無しさん
2008/06/14(土) 13:06:37初心者に向かって「いちいち」とか書き込んでるオマエの方が「いちいち」ウザイw
0585デフォルトの名無しさん
2008/06/14(土) 13:07:380586デフォルトの名無しさん
2008/06/14(土) 13:21:110587デフォルトの名無しさん
2008/06/14(土) 14:49:14その気になれば作れるようになるよ。:-)
0588デフォルトの名無しさん
2008/06/14(土) 16:10:43http://codepad.org/FhFcRNhU
こうですか?わかりません!
http://codepad.org/DOhmrD4x
0589デフォルトの名無しさん
2008/06/14(土) 16:53:50http://codepad.org/DsQGNTC2
0590デフォルトの名無しさん
2008/06/14(土) 19:20:05おお
PLTの拡張かと思ったがR6RSに書いてあった。thx
0591デフォルトの名無しさん
2008/06/14(土) 19:33:58http://news24.2ch.net/test/read.cgi/bizplus/1213353215/
ttp://pc.watch.impress.co.jp/docs/2008/0611/ibm.htm
このシステムで使われてるシナリオ記述言語Qの説明を見ると、Dr.Scheme版が有る。
ttp://www.ai.soc.i.kyoto-u.ac.jp/Q/system_j.htm
0592デフォルトの名無しさん
2008/06/14(土) 21:34:240593デフォルトの名無しさん
2008/06/14(土) 23:12:54ver372までset-cdr!が使える。
pre399ぐらいでは使えなくなってた。ver4.0は400に相当してるはずで使えないと思う。
正直、不便になった。
0594デフォルトの名無しさん
2008/06/14(土) 23:29:460595デフォルトの名無しさん
2008/06/15(日) 02:10:36スレ違い、または既出だったら申し訳ないです。
用件を言うと、Gaucheのオブジェクトシステムで
スロットに対するアクセス制御は困難でしょうか?
(アクセス制御: C++, Java等にある private / public 的な機構)
現在、「プログラミングGauche」17章のオブジェクトシステムのあたりを読んでます。
自分は、Java->Ruby->(Haskell)->Scheme
とやってきたので、どうもJava的なOOの発想があるようです。
せっかくオブジェクトシステムがあるのだから、
活用しようと思っているのですが、スロットのアクセス制御が無いと不安に思います。
method内だけ参照や変更を許すようなclassを定義したいなぁと思ったのが事の発端です。
「Gauche:スロットアクセス」で検索して出てくるページが参考になったのですが、
マクロとメタオブジェクトプロトコルを駆使してました。
やはり総称関数という機構を取り入れている以上、
単純にスロットをカプセル化はできないですかね?
長文すみませんでした。
0596デフォルトの名無しさん
2008/06/15(日) 02:13:54とりあえず、その辺を管理する(指定する)仕掛けがいるわなあ。
0597デフォルトの名無しさん
2008/06/15(日) 02:14:380598デフォルトの名無しさん
2008/06/15(日) 02:18:57アクセスコントロールはないです。
0599デフォルトの名無しさん
2008/06/15(日) 03:10:07シャア 『脚は着いていない』
整備兵 『あんなの飾りです。偉い人にはそれが分からんのですよ!』
0600デフォルトの名無しさん
2008/06/15(日) 03:29:04wilikiの連中は、既存のシステムしか使わずに実行時に何かやろうとしてる。
おかしな事になるのは当然。こんなのと付き合う必要はない。
>>595を含め大抵の奴はCLOSモドキなんて望んでない。
javaやC++でコンパイル後に何の情報が残るか考えれば判るはず。
さあ、やるんだ。
0601デフォルトの名無しさん
2008/06/15(日) 03:35:07元ネタってガンダムなの!?
0602デフォルトの名無しさん
2008/06/15(日) 03:47:35こうして、アプリケーションと同じ数だけのフレームワークが発明されるのであった。w
(批判ではない。むしろこのあたりがLispの良さであろう。)
0603デフォルトの名無しさん
2008/06/15(日) 04:07:38これも数十年経ってもメジャーになれない理由の一つなのかな?
0604デフォルトの名無しさん
2008/06/15(日) 04:15:060605デフォルトの名無しさん
2008/06/15(日) 05:03:15CLOS系は「そういうもの(アクセス制御は気にしない)」だと思うのが吉。
文化の違い。
隠蔽したいなら、クロージャベースのオブジェクトシステムの方がいいんじゃないかな。
0606デフォルトの名無しさん
2008/06/15(日) 07:10:05CLOSって、Java/C++系とは文化が違いすぎて、private/public/protectの区別がなくても
さほど問題がないよ。この辺は>>605さんの意見とかぶるね。
あの系統のオブジェクトシステムを作るなら、別に作成したほうがいいけど、できればCLOS
の方を利用するように頭の発想を切り替えたほうがいいよ。CLOSのほうが柔軟な制御が
できるのでね。
0607デフォルトの名無しさん
2008/06/15(日) 08:00:04それを隠蔽する必要があるとは思えない。
0608デフォルトの名無しさん
2008/06/15(日) 08:16:270609デフォルトの名無しさん
2008/06/15(日) 11:02:11別の標準オブジェクトシステムのカーネルになるための
基本オブジェクトシステムとして考案されたが、
いつの間にか標準のオブジェクトシステムの座に着いている。
なんだ使ってみればCLOSのままでええやんってところか。
0610デフォルトの名無しさん
2008/06/15(日) 11:06:400611デフォルトの名無しさん
2008/06/15(日) 11:27:16この辺の事情はbit別冊のCLOS本に書いてある。
たしか井田さんがMLでの議論をまとめてる。
既存のCommonLoopsかFlovorsのどちらの流儀にするか揉めているところに、
汎用のカーネルを考案できないかとの提案があった。
0612デフォルトの名無しさん
2008/06/15(日) 11:30:26そうですね。是非、そちらの方も活用させて頂きます。
scheme系は、まだ初めてから日が浅いこともあり、
気が引けてました。
>>600
私の不勉強で、どのようにJavaなどと同じ機構を実現するか分かりませんでした。
出直します。ただ、できるだけ独自の機構は避けたいと考えてました。
>>605-607
クロージャベースのオブジェクトシステムだと内部状態は隠蔽できますね。
ただ、CLOSとの相性・一貫性に不安があり、できればGaucheに標準的にある
オブジェクトシステムだけで解決しようと思ってました.
皆さんのおっしゃるように、発想を切り替えてみようと思います。
>>596-608
最後に。皆さん、レスありがとうございました。とても参考になりました。
CLOSと、Java/C++系とは異なる発想でプログラムを設計するという事ですね。
CLOSを実際にもっと使用して、その発想の違いを考えていきたいと思います。
0613デフォルトの名無しさん
2008/06/15(日) 11:47:01http://practical-scheme.net/trans/being-popular-j.html
を読んで妄想した事。
Lispにシステムハッキング機能を追加したら、インスタントLispマシンの出来上がり!!
Lisp Override your Operating System...
0614デフォルトの名無しさん
2008/06/15(日) 13:03:12つmovitz
0615デフォルトの名無しさん
2008/06/15(日) 13:51:43LanguageをSwindleに設定したらset-cdr!が使えました。
0616デフォルトの名無しさん
2008/06/15(日) 16:13:16ver4.0ってR6RSに対応したんだっけ?
0617デフォルトの名無しさん
2008/06/15(日) 16:47:57set-cdr! 説得だああああ!
0618デフォルトの名無しさん
2008/06/15(日) 16:54:30617の座布団全部とれ!
0619デフォルトの名無しさん
2008/06/15(日) 17:34:39ほぼR6RSを満たすSchemeや、独自のPLT Schemeなど複数の言語が選べる。
そして、異なる言語で書かれたモジュールをインポートできる。
0620デフォルトの名無しさん
2008/06/15(日) 17:41:42>ほぼR6RSを満たすSchemeや
まだR6RSに対応できてないの?言語選択はR5RSのままだし。
0621デフォルトの名無しさん
2008/06/15(日) 18:12:48言語選択は一番上の ``Module'' を選ぶ。
ソース (DrSchemeのウィンドウの上半分) の最初の行に
#!r6rs
次の行に
(import (rnrs))
それ以降の行に定義を書いて
Runのボタンを押す。
0622デフォルトの名無しさん
2008/06/15(日) 19:12:340623デフォルトの名無しさん
2008/06/15(日) 19:48:020624デフォルトの名無しさん
2008/06/15(日) 19:59:04http://www.r6rs.org/final/r6rs.pdf
Revised6 Report on the Algorithmic Language Scheme ― Standard Libraries
http://www.r6rs.org/final/r6rs-lib.pdf
Revised6 Report on the Algorithmic Language Scheme ― Non-Normative Appendices
http://www.r6rs.org/final/r6rs-app.pdf
Revised6 Report on the Algorithmic Language Scheme ― Rationale
http://www.r6rs.org/final/r6rs-rationale.pdf
基本的には上2つがユーザーに重要な情報。
#次のテンプレに入れてください。
0625デフォルトの名無しさん
2008/06/15(日) 20:05:05R6RSってR5RSとかと比べてどうなんでしょうか。
まだ出たばかりで実装は少ないと思いますが、
今後、多くの処理系で実装が進むのか、
また、ユーザとしてもR6RSへの移行を意識しておくべきなのか、
そういったことです。
ちょっと漠然とした質問でうまくまとめられなくてすみません。
0626デフォルトの名無しさん
2008/06/15(日) 20:10:00(import (rnrs))
↓↑
(import (rnrs (6)))
どっち?
0627デフォルトの名無しさん
2008/06/15(日) 20:14:27補足
特殊トークン #!r6rs はソースがR6RS準拠であることを示す。コメント扱い。
0628デフォルトの名無しさん
2008/06/15(日) 20:19:160629デフォルトの名無しさん
2008/06/15(日) 20:25:350630デフォルトの名無しさん
2008/06/15(日) 20:44:36R6RS決定時からPLT Scheme、Chez Scheme、Scheme48は近いうちにR6RSを採用すると言われていました。
今回、PLT Schemeが出してきたので、先行していたScheme48に続いて2つ目の実装かな。
Chez Scheme v7.4は部分的にR6RSのプリミティブが使えるようになってますが「will soon support R6RS standard.」となってるので、
次のアップデートで完全対応だと思います。
自分も含めたユーザーは実装が出揃って、ある程度比較記事などを見たうえで行動してもいいと思います。
今後、色々な問題点が表面化するでしょうから。
うまくいけばR6RS対応の色々な処理系に対するポータビリティは高くなる「ハズ」ですがw
0631デフォルトの名無しさん
2008/06/15(日) 21:19:15Join us now and share the software;
You'll be free, hackers, you'll be free.
って超音痴で歌うのか!
0632デフォルトの名無しさん
2008/06/15(日) 21:20:100633デフォルトの名無しさん
2008/06/15(日) 21:22:200634デフォルトの名無しさん
2008/06/15(日) 21:32:05一度聴いた事あるです orz
0635デフォルトの名無しさん
2008/06/15(日) 21:43:46>Join us now and share the software;
>You'll be free, hackers, you'll be free.
これか…… http://jp.youtube.com/watch?v=9sJUDx7iEJw&NR=1
0636デフォルトの名無しさん
2008/06/15(日) 22:09:42(import
(rnrs)
(prefix (scheme base) scheme:))
0637デフォルトの名無しさん
2008/06/16(月) 19:19:10http://sourceforge.net/project/showfiles.php?group_id=25227&package_id=275266&release_id=607291
0638デフォルトの名無しさん
2008/06/16(月) 19:20:020639デフォルトの名無しさん
2008/06/16(月) 20:56:24なぜか実行ファイル作成機能が壊れてしまうので
ソースを追ってみたのですが
とても不思議な現象に遭遇しました。
実行ファイルを指すファイルディスクリプタから
readで読み込む部分の前に
読み込み先メモリが一度は少なくとも4000バイト間隔で先頭から末尾までアクセスされてないと
EFAULTが起こります。
読み込み先メモリに4000バイト間隔で1バイトの読み込みOR書き込みを行ってから
readすれば正常に動作します。
なぜでしょう?
ちなみに4000バイト・EFAULTというのはi386プロセッサの場合で
armプロセッサの場合はそれぞれ3999バイト・EACCESになります。
0640デフォルトの名無しさん
2008/06/16(月) 22:57:20まぁとりあえずスレ鯛みておちつけ
0641デフォルトの名無しさん
2008/06/16(月) 23:13:550642デフォルトの名無しさん
2008/06/16(月) 23:16:410643デフォルトの名無しさん
2008/06/16(月) 23:22:38http://pc11.2ch.net/test/read.cgi/tech/1201402366/
0644デフォルトの名無しさん
2008/06/16(月) 23:29:250645デフォルトの名無しさん
2008/06/16(月) 23:36:41>ただし、それにコメントができる人はほとんどいなさそう。
あら、そう。
0646デフォルトの名無しさん
2008/06/16(月) 23:39:10氏ね
0647デフォルトの名無しさん
2008/06/16(月) 23:40:370648デフォルトの名無しさん
2008/06/16(月) 23:42:010649デフォルトの名無しさん
2008/06/16(月) 23:44:430650デフォルトの名無しさん
2008/06/16(月) 23:57:290651デフォルトの名無しさん
2008/06/16(月) 23:58:43>readで読み込む部分の前に
>読み込み先メモリが一度は少なくとも4000バイト間隔で先頭から末尾までアクセスされてないと
>EFAULTが起こります。
部分の前に
一度は少なくとも
はどういう意味でしょうか? 文章を読みこなせません。
0652デフォルトの名無しさん
2008/06/17(火) 00:18:00本当なら OpenBSD のバグなので、そちら方面で報告すべし。
0653デフォルトの名無しさん
2008/06/17(火) 01:37:10第一、そんなことも知らないと見下されてるわけか。バカにされたもんだな。
そういうことを聞いてるんじゃないってことがなぜ伝わらないのか。
情報があるなら教えて欲しい、それだけだ。
0654デフォルトの名無しさん
2008/06/17(火) 01:54:56最初の3行は不要
なぜ馬鹿にされたのか、なぜ伝わらなかったのかを考えたほうがいい
0655デフォルトの名無しさん
2008/06/17(火) 01:55:270656デフォルトの名無しさん
2008/06/17(火) 03:20:29でもこんなんなる
(car (scheme:list 1 2 3))
mcar: expects argument of type <mutable-pair>; given (1 2 3)
(scheme:car (list 1 2 3))
car: expects argument of type <pair>; given {1 2 3}
0657デフォルトの名無しさん
2008/06/17(火) 04:18:35> なぜ馬鹿にされたのか、なぜ伝わらなかったのか
運悪くこのスレに馬鹿が集まっていたからですね。
0658デフォルトの名無しさん
2008/06/17(火) 11:12:400659デフォルトの名無しさん
2008/06/17(火) 13:56:49list と pair では型が違うと言ってるみたいだね。
0660デフォルトの名無しさん
2008/06/17(火) 14:12:29とか
(car (list 1 2 3))
なら動くんだろ?
0661デフォルトの名無しさん
2008/06/17(火) 15:33:580662639
2008/06/17(火) 17:55:27READ(&old_fsubr_tab,sizeof(fsubr_tab));
READ(&old_pseudofun_tab,sizeof(pseudofun_tab));
READ(&symbol_tab,sizeof(symbol_tab));
というコードがあるのですが、
3つ目のREADマクロ中のread(2)が失敗し、
i386ならEFAULTが、armならEACCESがerrnoにセットされます。
ところが3つ目のREADマクロの前に
{
int i;
for ( i = 0 ; i < sizeof(symbol_tab) ; i += 4000 /* i386の場合。armの場合は3999 */ )
((char *) &symbol_tab)[ i ] = '!'; /* '!'という値には意味はありません */
}
というコードを挿入すればread(2)は失敗しません。
i386なら4001以上、armなら4000以上のiの増分ではread(2)が失敗します。
symbol_tabというのはマクロで、実体はsymbol_tab_dataを指していますが
old_fsubr_tabとold_pseudofun_tabはbssセクションに置かれているのに対し
symbol_tab_dataはdataセクションに置かれているという違いがあります。
0663デフォルトの名無しさん
2008/06/17(火) 18:07:22運の悪い馬鹿は自己申告しなくて良し。
0664デフォルトの名無しさん
2008/06/17(火) 18:13:29お前という馬鹿がここにいるのは>>657-658の運のせいではないですよ^^
0665デフォルトの名無しさん
2008/06/17(火) 18:23:09常駐乙
0666デフォルトの名無しさん
2008/06/17(火) 18:46:400667デフォルトの名無しさん
2008/06/17(火) 19:11:460668デフォルトの名無しさん
2008/06/17(火) 19:28:430669デフォルトの名無しさん
2008/06/17(火) 19:31:29そこまで追ったのなら、馬鹿はほっといて、短い(CLISPに依存しない)再現プログラムを
作ってOpenBSDの人たちへ報告するのが良いと思う。
0670デフォルトの名無しさん
2008/06/17(火) 20:47:23その情報、ちゃんとOpenBSDの中の人たちに連絡したら感謝されると思うよ。
0671デフォルトの名無しさん
2008/06/17(火) 23:31:58ネタかと思ったけど、R6RSに慣れるまで大変ですねw
PLT Scheme 4.0 では、ペアはimmutable(変更不可)になりました。
mutable(変更可能)なペアは別のデータ型として提供されてるようです。
たぶん>>656, >>660で言ってることがそれだと思います。
手持ちのプログラムを食わせてみたら同様の文句を言われましたw
当面、372のままで行きます orz
0672デフォルトの名無しさん
2008/06/17(火) 23:40:500673デフォルトの名無しさん
2008/06/17(火) 23:50:100674デフォルトの名無しさん
2008/06/17(火) 23:56:590675デフォルトの名無しさん
2008/06/18(水) 00:37:18これ、PLTのどっかに「どうなるかわかんないけど、取り合えずやってみるぽ」って感じの文章なかったっけ?
PLTさんお願いです、今回だけで止めてください m(_ _)m
0676デフォルトの名無しさん
2008/06/18(水) 01:47:56GPU対応とかconcurrent対応ぐらいしか思いつかない。う〜む。
0677デフォルトの名無しさん
2008/06/18(水) 02:00:52(define cons mcons)
(define set-car! set-mcar!)
(define set-cdr! set-mcdr!)
0678デフォルトの名無しさん
2008/06/18(水) 02:15:13そんなに破壊的操作してるもんかね。
0679デフォルトの名無しさん
2008/06/18(水) 03:27:38Streamを使えば破壊的操作を使うから多いと思う。
0680デフォルトの名無しさん
2008/06/18(水) 07:39:44(define cons mcons)
が
define-values: cannot change constant identifier: cons
な
エラーになります orz
0681デフォルトの名無しさん
2008/06/18(水) 08:02:56マクロは?
0682デフォルトの名無しさん
2008/06/18(水) 08:21:59MzSchemeなら問題ないです
0683デフォルトの名無しさん
2008/06/18(水) 10:03:53これ?
http://blog.plt-scheme.org/2007/11/getting-rid-of-set-car-and-set-cdr.html
0684デフォルトの名無しさん
2008/06/18(水) 12:35:55それだ!サンクス
で、結局やることになっちゃったんだな。4.0でこうなったってことは...
そりゃ自分で書いたコードなら直すのも簡単だけどね orz
0685デフォルトの名無しさん
2008/06/18(水) 14:26:10set-mcar!: name is not defined, not a parameter, and not a primitive name
使えない orz
0686デフォルトの名無しさん
2008/06/18(水) 15:29:02これで一応動く(PrettyBigモードとか)。SICPの学習には不便しないだろう。
(ただしR6RSとは共存出来ない。)
(define-syntax cons
(syntax-rules ()
((_ a b) (mcons a b))))
(define-syntax set-car!
(syntax-rules ()
((_ a b) (set-mcar! a b))))
(define-syntax set-cdr!
(syntax-rules ()
((_ a b) (set-mcdr! a b))))
0687デフォルトの名無しさん
2008/06/18(水) 15:55:29;http://pre.plt-scheme.org/plt/doc/reference/mpairs.html
(require scheme/mpair)
(define-syntax cons
(syntax-rules ()
((_ a b) (mcons a b))))
(define-syntax set-car!
(syntax-rules ()
((_ a b) (set-mcar! a b))))
(define-syntax set-cdr!
(syntax-rules ()
((_ a b) (set-mcdr! a b))))
(define-syntax list
(syntax-rules ()
((_ a ...) (mlist a ...))))
(define Qoo (list 3 4))
(set-car! Qoo '(5 6))
(set-cdr! Qoo '(7 8))
(display Qoo) ; => {(5 6) . (7 8)}
0688デフォルトの名無しさん
2008/06/18(水) 16:07:21サンクス!
でも、こんどは
(map cons lst1 lst2)
が大破しました... "orz"
それなりの混乱が予想されるのにこうなったって事は何か良い見返りがあるはずだよね...
「隊長!comp.lang.schemeのアナウンスからPLT方面に潜入して偵察を試みてみます。自分が帰ってこないときは英語が解読できなくて玉砕したと思ってください orz」
0689デフォルトの名無しさん
2008/06/18(水) 16:10:45(mlist? Qoo) ; => #t
(display Qoo) ; => () なぜか{}にはならない。
0690デフォルトの名無しさん
2008/06/18(水) 16:13:11http://pre.plt-scheme.org/plt/doc/reference/mpairs.html
ココの関数はマクロで修正しないとダメポ。
mmapが orz
0691688
2008/06/18(水) 16:24:41驚くことにcomp.lang.schemeのアナウンスにはそれらしい情報は例のBLOGにしかありませんでした。
さらに驚くことにBLOGに対するコメントは好意的なものばかりのようです。
もしかして、自分はバカなのでしょうか "orz"
0692デフォルトの名無しさん
2008/06/18(水) 16:31:12cons
せぇっと!
car
りば〜すぅ!
せっとくだー!
eq?
みたいな。
0693デフォルトの名無しさん
2008/06/18(水) 16:33:42(syntax-rules ()
((_ a b ...) (mmap a b ...))))
(map display (list 1 2 3 4 5)) ; => 12345{#<void> #<void> #<void> #<void> #<void>}
あれ?うまくいかない?
0694デフォルトの名無しさん
2008/06/18(水) 16:36:22(syntax-rules ()
((_ a b ...) (mmap a b ...))))
(map (lambda (x)(* x x)) (list 1 2 3 4)) ; => {1 4 9 16}
大丈夫らしい。
0695デフォルトの名無しさん
2008/06/18(水) 16:39:330696デフォルトの名無しさん
2008/06/18(水) 16:40:560697デフォルトの名無しさん
2008/06/18(水) 16:45:050698デフォルトの名無しさん
2008/06/18(水) 16:49:23BLOGにはimmutableなpairでないと
(define l (list 1 2 3 4 5))
(map (lambda (x) (set-cdr! (cddr l) 5)) l)
が変になるって書いてあるから試してみました。
Gauche(R5RS)
(#<undef> #<undef> #<undef>)
たしかにちょっと変。
Petite Chez(R5RS)
(#<void> #<void> #<void> #<void> #<void>)
たしかにちょっと変。
Guile(R5RS)
(#<unspecified> #<unspecified> #<unspecified>)
たしかにちょっと変。
0699698
2008/06/18(水) 16:50:09Ikarus(R6RS)
Unhandled exception
Condition components:
1. &assertion
2. &who: map
3. &message: "list was altered"
Larceny(R6RS)
Error: car: 5 is not a pair.
Ypsilon(R6RS)
error in car: expected pair, but got 5
immutableなpairってやつはR6RSで必要になったから導入したわけじゃないのでしょうか?
自分はちょっと混乱しています "orz"
0700デフォルトの名無しさん
2008/06/18(水) 16:54:50�d。俺が馬鹿だったw
0701デフォルトの名無しさん
2008/06/18(水) 16:57:250702デフォルトの名無しさん
2008/06/18(水) 17:00:020703デフォルトの名無しさん
2008/06/18(水) 17:02:15それはmapの安全性の問題では?
0704デフォルトの名無しさん
2008/06/18(水) 17:05:25gosh> (map (lambda (x) x) '(1 2 3 . 5))
(1 2 3)
と整合。set-cdr!の結果が#<undef>
Guile 1.8.3は、
> standard input:1:1: In procedure map in expression (map (lambda # x) (quote #)):
> standard input:1:1: Wrong type argument in position 2: (1 2 3 . 5)
> ABORT: (wrong-type-arg)
でエラー。
0705デフォルトの名無しさん
2008/06/18(水) 17:10:32(define (map f x)
(cond ((not (pair x)) (error "not pair"))
((null? x) ())
(#t (cons (f (car x)) (map f (cdr x))))))
の最初のチェックが不要になることが静的に分かるケースがあるわけですね。
0706デフォルトの名無しさん
2008/06/18(水) 17:13:16(syntax-rules ()
((_ a) (mcar a))))
(define-syntax cdr
(syntax-rules ()
((_ a) (mcdr a))))
0707デフォルトの名無しさん
2008/06/18(水) 17:19:18昔の教科書を一字一句変えずに動かしたいという理由が判らん。
0708デフォルトの名無しさん
2008/06/18(水) 17:40:54(syntax-rules ()
((_ a ) (mpair? a ))))
0709デフォルトの名無しさん
2008/06/18(水) 17:48:02バカと呼んでもらってかまいません...
やはりv372への「戦略的な撤退」でしょうか "orz"
0710デフォルトの名無しさん
2008/06/18(水) 17:58:150711デフォルトの名無しさん
2008/06/18(水) 18:02:27そうだよね。勉強が目的なのにそれ以外にエネルギー使うの無駄が多すぎる。
読み終わってから試行錯誤したほうがいいんじゃない?
0712デフォルトの名無しさん
2008/06/18(水) 18:31:53近々R6RS準拠になる予定だし
0713デフォルトの名無しさん
2008/06/18(水) 18:32:070714デフォルトの名無しさん
2008/06/18(水) 18:35:24なわけないw
0715デフォルトの名無しさん
2008/06/18(水) 18:36:15SICPはR5RSやR6RSってわけじゃないんだ。
DrScheme v372以前のPrettyBig modeが一番そのままで書けると思う。
他の処理系だとbegin使えとか言われる表記が満載>SICP
0716デフォルトの名無しさん
2008/06/18(水) 18:37:160717デフォルトの名無しさん
2008/06/18(水) 18:38:07みなさんご親切にありがとうございます m(_ _)m
どうやら「メジャーバージョンアップ!」しかも「R6RSに触れられる!」とあって舞い上がってしまったようです...
でも、今の自分はDrSchemeのマクロステッパーなしでは生きられません "orz"
耐え難きを耐え、しばらくの間4.0は封印しておきます><
0718デフォルトの名無しさん
2008/06/18(水) 18:38:18最近のMITはMzSchemeらしいけど
0719デフォルトの名無しさん
2008/06/18(水) 18:42:44つまりDrSchemeのMzSchemeモードと中身は同じ。
0720デフォルトの名無しさん
2008/06/18(水) 18:43:01ありがとうございます。MIT-Scheme使ってみたいんですが...
以前試した時はバイナリーが動かなくて、ビルドもできなくてあきらめてました (orz)
カーネルも新しくなったからもう一回挑戦してみようかと思います><b
0721デフォルトの名無しさん
2008/06/18(水) 20:15:240722デフォルトの名無しさん
2008/06/18(水) 20:46:580723デフォルトの名無しさん
2008/06/18(水) 23:37:58質問なんだけど、トップレベルってなんか特別なの?
(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が無限ループになるのが理解できないの...
0724デフォルトの名無しさん
2008/06/18(水) 23:45:37継続はトップレベルをまたげない処理系が多い。(実装依存)
そういう意味ではトップレベルは特別。
0725デフォルトの名無しさん
2008/06/18(水) 23:50:50そーなのかーありがとー
実装依存か 処理系もかかないかんかったね がうちぇです もう一度いいます がうちぇです
0726デフォルトの名無しさん
2008/06/18(水) 23:51:51(progn
(loop for i in '(>>657 >>658 >>663 >>664 >>665 >>666 >>667 >>668) do
(unintern i))
(gc)
'Done)
0727デフォルトの名無しさん
2008/06/19(木) 00:13:30セロ弾きの「ごーしゅ」じゃなかった?
0728デフォルトの名無しさん
2008/06/19(木) 00:19:17の方がなんとなく小気味良い気がして
0729デフォルトの名無しさん
2008/06/19(木) 00:19:590730デフォルトの名無しさん
2008/06/19(木) 00:25:260731デフォルトの名無しさん
2008/06/19(木) 00:28:04のほうがかわいいことは確か。
0732デフォルトの名無しさん
2008/06/19(木) 00:40:36DScheme v372 では両方ともhogefugamogaが返ってきた。一応、報告のみ。
理由は説明できないw
0733デフォルトの名無しさん
2008/06/19(木) 00:50:00R6RSでは明確に決まってなかったっけ?
0735デフォルトの名無しさん
2008/06/19(木) 09:55:33(display (call/cc (lambda (c) (set! cc c) (cc 'hoge))))
(display 'fuga)
(cc 'moga)
においてcall/ccが返し、ccに記憶される継続は
(lambda (x)
(print (display x))
(loop (print (eval (read) (interactive-environment)))))
と看做せるから無限ループに陥らない。
他方、
(let ()
(display (call/cc (lmabda (c) (set! cc c) (cc 'hoge))))
(display 'fuga)
(cc 'moga))
においてcall/ccが返し、ccに記憶される継続は
(lambda (x)
(display x)
(display 'fuga)
(cc 'moga))
と看做せるから無限ループに陥る。
(ccの末尾再帰呼出し)
beginをR5RS巻末のように合成構文として実装すると後者になるが
原始構文として規格通りに実装すると前者となる。
0736デフォルトの名無しさん
2008/06/19(木) 10:47:48ありがとう。
つまりbegin構文を、Gaucheは合成構文として実装してるけど、
DrSchemeは原始構文として実装してるということみたいですね。
0737デフォルトの名無しさん
2008/06/19(木) 13:21:59質問です。原始構文として実装してるということは、ifやletのような特殊形式ということなんでしょうか。
初心者なので特殊形式を知ったばかりですが、SICPにnew-ifという例があったのと似てると思いました。
0738デフォルトの名無しさん
2008/06/19(木) 14:26:32R5RSの「原始構文」って何よ?
0739デフォルトの名無しさん
2008/06/19(木) 14:37:01letやcondなどは導出構文という事になってます。
(但しbeginやdefine-syntax、let-syntaxはマクロでは導出できない)
Common Lispでは特殊形式とマクロという区別がありましたが
Schemeでは両方構文として扱われます。
どうもbeginはトップレベルでは「beginがない式と同等に扱われる」のは表面上であり、継続は
(lambda (x)
(begin (display x)
(display 'fuga)
(cc 'moga)))) ;; beginは冗長
として扱う処理系が多いようですね。
原始構文という言葉はプリミティブ式のうち構文であるものを指すつもりで使いました。
0740723
2008/06/19(木) 22:01:45ふおおなんか説明してくれてありがとうなんだけど何言ってるかわっかんねw
>beginのボディを形成する連続する式、定義、構文定義に等しい。
って、つまりbeginで囲ってないのと同じ意味になるぜよってこと?
0741デフォルトの名無しさん
2008/06/19(木) 22:09:48つまりR5RSの定義ではbeginのトップレベルにおいてDrSchemeのような挙動が期待されてる。
Gaucheを含めた他の処理系の挙動はR5RSとしてはおかしい。R6RS対応だからというわけでもないし。
これは>>724で言ってた処理系の実装依存の問題というより、うまく実装できていない処理系が多いということだと思う。
0742デフォルトの名無しさん
2008/06/19(木) 22:15:45トップレベルのbeginはローカルスコープを作りませんよ〜くらいの意味にも取れますから
無限ループになってもR5RSに反するとは言い切れませんね。
R5RSは細かく呼んでいくと解釈の分かれる部分が多々ありますし。
0743デフォルトの名無しさん
2008/06/19(木) 22:17:17呼んでいく→読んでいく
0744デフォルトの名無しさん
2008/06/19(木) 22:20:12Gaucheのバグだと思うなぁ
0745デフォルトの名無しさん
2008/06/19(木) 22:31:28どちらも規格に反しない、という事だと思います。
0746デフォルトの名無しさん
2008/06/19(木) 22:44:070747デフォルトの名無しさん
2008/06/19(木) 22:49:58だけど、バグが無いものを作るべきだと思うよ。
0748デフォルトの名無しさん
2008/06/20(金) 03:08:58CならハッカーのたのしみやShort Coding等の本があるのに情報不足でしょ?
0749デフォルトの名無しさん
2008/06/20(金) 03:39:100750デフォルトの名無しさん
2008/06/20(金) 07:10:41とりあえずインスコしてやってみてもうまく出来ないし公式サイトにもWindowsでexe作る方法書いてないっぽいし困ってしまったよ!
教えて!エロい人!
0751デフォルトの名無しさん
2008/06/20(金) 09:20:26(define ++ append)
ってしたけどこれはshort codingに入りますか
0752デフォルトの名無しさん
2008/06/20(金) 09:38:420753デフォルトの名無しさん
2008/06/20(金) 11:40:49mingwとmsysをまずインストールしましょう。
そしてchickenのwindows用binaryをCドライブ直下に解凍しましょう。
msys.batを起動しましょう。
export PATH=/c/chicken/bin:$PATHと打ち込んでPATHを設定しましょう。
作られる実行ファイルはlibchicken.dll等に依存するのでPATHを設定しないと起動しません。
vi foo.scmと打ち込んでSchemeソースを作成しましょう。
csc foo.scmと打ち込んでコンパイルしましょう。
./foo.exeと打ち込んで実行しましょう。
ttp://www.mingw.org/
ttp://nchc.dl.sourceforge.net/sourceforge/mingw/MinGW-5.1.4.exe
ttp://nchc.dl.sourceforge.net/sourceforge/mingw/MSYS-1.0.10.exe
0754デフォルトの名無しさん
2008/06/20(金) 12:43:26> 原始構文という言葉はプリミティブ式のうち構文であるものを指すつもりで使いました。
かなり細部に渡る話をしているので、言葉は厳密に使った方がいいと思います。
特に今ではR6RSがあるので、何を指していっているのか分からなくなります。
R6RSには"primitive syntax"(9)というのがあって、
> Schemeのプリミティヴ構文はif、quote、lambda、define、set!であり、
とは違うものです。R5RSには"primitive syntax"という用語は出てきません。
またこれら(if, quote, ...)を使ったformは、R6RSの"primitive syntax"(9)の一部である
primitive expression types(9.1)にも含まれません。
R5RSでは含まれていた(4.1)のですけれど。
0755デフォルトの名無しさん
2008/06/20(金) 13:14:410756デフォルトの名無しさん
2008/06/20(金) 13:33:570757デフォルトの名無しさん
2008/06/20(金) 13:34:34また意味論もリスト上で定義されていません。
0758デフォルトの名無しさん
2008/06/20(金) 13:37:42(茶々すまん)
0759デフォルトの名無しさん
2008/06/20(金) 13:45:19意味論上はともかく。
0760デフォルトの名無しさん
2008/06/20(金) 13:51:32実装を書き直す人は腐るほどいるが
0761デフォルトの名無しさん
2008/06/20(金) 14:02:24仕様もR6RSでやったところ。
0762デフォルトの名無しさん
2008/06/20(金) 14:02:460763デフォルトの名無しさん
2008/06/20(金) 16:11:45(f a b)が(f . (a b))と同じとは文法には書いてない。
印字表現が似ているだけなのでは?
そもそも「構文上リストとして定義」とはどういう意味なのでしょうか?
0764デフォルトの名無しさん
2008/06/20(金) 16:21:32<quotation> --> '<datum> | (quote <datum>)
<assignment> --> (set! <variable> <expression>)
<conditional> --> (if <test> <consequent> <alternate>)
<definition> --> (define <variable> <expression>)
| (define (<variable> <def formals>) <body>)
| (begin <definition>*)
0765デフォルトの名無しさん
2008/06/20(金) 16:23:380766デフォルトの名無しさん
2008/06/20(金) 16:36:42んなことない。トップレベルでの継続がどこまでの範囲を補足するかの
規定がR5RSには無いんだから、どっちの解釈もあり。
Gauche系の解釈でもトップレベルbeginをletに展開しているわけじゃない
(letに展開したらdefineがうまくいかない)。
コンパイルと実行の単位の問題で、継続の捕捉範囲が変わってるだけ。
0767デフォルトの名無しさん
2008/06/20(金) 16:59:38コンスセルがそうであるように。
0768デフォルトの名無しさん
2008/06/20(金) 17:15:07これは「構文上リストとして定義」ではないです。
これが「構文上リストとして定義」なら、
他の言語に良くある<式> --> ( <式> ) までそうなってしまいます。
そもそも「構文上リストとして定義」という概念はないと思います。
リストには、シグネチャや意味が付いてまわりますから。
0769デフォルトの名無しさん
2008/06/20(金) 17:18:32> ;A
> (display (call/cc (lambda (c) (set! cc c) (cc 'hoge))))
> (display 'fuga)
> (cc 'moga)
(call/cc (lambda (c) (set! cc c) (cc 'hoge)))
(display 'fuga)
(cc 'moga)
だとどうでしょう?
0770デフォルトの名無しさん
2008/06/20(金) 17:28:28| <abbreviation>
<datum> --> <simple datum> | <compound datum>
<simple datum> --> <boolean> | <number>
| <character> | <string> | <symbol>
<symbol> --> <identifier>
<identifier> --> <initial> <subsequent>*
| <peculiar identifier>
<initial> --> <letter> | <special initial>
<letter> --> a | b | c | ... | z
<special initial> --> ! | $ | % | & | * | / | : | < | =
| > | ? | ^ | _ | ~
<subsequent> --> <initial> | <digit>
| <special subsequent>
<digit> --> 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
<special subsequent> --> + | - | . | @
<peculiar identifier> --> + | - | ...
と辿れば一応リスト。(構文キーワードも識別子だから)
他の言語に良くある<式> --> ( <式> ) はSchemeには存在しない。
うーん、苦しいw
0771デフォルトの名無しさん
2008/06/20(金) 18:39:07USでは$599 (アカデミックユーザ)からとはかかれてたが。
0772デフォルトの名無しさん
2008/06/20(金) 22:06:43>>753
指定されたパスが見つかりません。(←MSYS.bat上だと文字化けしてる
*** Shell command terminated with exit status 1: /chicken/bin/chicken test.scm -output-file test.c -quiet
って言われてしまうお…
やった
OS WinVista Ultimate
MinGW 5.1.4は元から入れてあった
MSYS 1.0.10インスコ(インスコ途中にMinGWの場所指定しろって言われたからした
PATHをchicken/binな場所に通した
msys.bat実行した csc test.scm とかしてみたら上記エラー
/(MSYSインスコ場所直下)にchickenフォルダ移してみたりとかもやってみたけどダメだったぜ…
よくわかんねーけど
ttp://alohakun.blog7.fc2.com/blog-entry-912.html
とかみるとoファイルが吐かれるらしいけど、何もファイル吐かれてない… .cも吐かれてない
ボスケテ
0773デフォルトの名無しさん
2008/06/20(金) 23:06:26パス指定がどっかで決め打ちになってる予感。
0774デフォルトの名無しさん
2008/06/20(金) 23:23:54c:\chicken\bin>csc -dynamic test.scm
ってやってみるとgccがないって怒られるけど、.cファイルは作られる。
おそらくオプション指定の問題。
0775デフォルトの名無しさん
2008/06/21(土) 00:18:400776デフォルトの名無しさん
2008/06/21(土) 00:20:480777デフォルトの名無しさん
2008/06/21(土) 00:25:430778デフォルトの名無しさん
2008/06/21(土) 00:31:58chickenディレクトリがc:\にない場合に出る模様。
c:\chickenになってますか?
0779デフォルトの名無しさん
2008/06/21(土) 09:50:28コマンドプロンプトからそれやってみると同じエラーが出る罠
>>775
今やってみたらコマンドプロンプトだと出来るけどMSYSでやってみたら起動しなかった
エラーもなんも表示されない不思議な状態になった もちろん何か入力してもなんもなし
>>778
d:\Scheme\chicken\binに置いていてお PATHの設定でそっち指定してたけど
chickenをC直下において
>>753の通りにパス設定したらエラーが変わったお
'gcc' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
*** Shell command terminated with exit status 1: gcc test.c -o test.o -c -fno-strict-aliasing -DHAVE_CHICKEN_CONFIG_H -Os -I /chicken/include
で、とりあえずcファイルはできた
で、エラーに従って
export PATH=/c/MinGW/bin:$PATH とかしてみたら
Info: resolvingうんたら〜ってメッセージが5個くらい出たけどtest.exeが出来ました!
ついでにobjdump -p test.exeしてみたら
DLL Name: libchicken.dll
DLL Name: KERNEL32.dll
DLL Name: msvcrt.dll
だってさ MinGW周りのDLLはいらないっぽいのが不思議だ…
というわけでした!みんなありがと!愛してるぜ!
0780デフォルトの名無しさん
2008/06/21(土) 15:25:18MinGWって、C++のスレッド関係で独自ランタイム必要とするだけで、
CならMSのCランタイムだけで大丈夫じゃなかったっけ?
0781デフォルトの名無しさん
2008/06/22(日) 00:05:58http://en.wikipedia.org/wiki/Call-with-current-continuation
>>268-271と似てる〜
0782デフォルトの名無しさん
2008/06/22(日) 02:46:40生存期間の話じゃないよ。継続の「底」をどこに取るかって話。
R5RSのトップレベルの実行はREPLの実行と区別されていない。全ての
トップレベルフォームが見えてる状態で一気に実行するところを
継続の起点と見るか、REPLにおいてトップレベルフォームひとつひとつ
を実行するところを継続の起点と見るか、って違い。
R6RSではREPLそのものが無くなって、トップレベルの意味は明確化された。
0783デフォルトの名無しさん
2008/06/22(日) 09:31:570784デフォルトの名無しさん
2008/06/22(日) 09:39:130785デフォルトの名無しさん
2008/06/22(日) 10:04:020786デフォルトの名無しさん
2008/06/22(日) 10:08:030787デフォルトの名無しさん
2008/06/22(日) 11:12:560788デフォルトの名無しさん
2008/06/22(日) 12:45:05pegとかも入ってるんだけど…。
0789デフォルトの名無しさん
2008/06/22(日) 15:26:09;The Read-Eval-Print Loop
(define (driver-loop)
(begin
(let ((input (read))) ; read
(let ((output (eval input))) ; eval
(display output))) ; print
(driver-loop))) ; loop
0790デフォルトの名無しさん
2008/06/22(日) 15:45:57http://practical-scheme.net/wiliki/wiliki.cgi?Gauche%3aGauchebox#H-1vw6gwn
基本的にGaucheのCVS HEAD(今はSubversion trunk)をビルドするので、
その時点の最新版が入る。リリース版の0.8.13より新しい。
0791デフォルトの名無しさん
2008/06/22(日) 15:51:15x)
(define (driver-loop)
(begin
(let ((input (read)))
(let ((output (eval input)))
(display output)(newline)))
(driver-loop)))
(driver-loop)
0792デフォルトの名無しさん
2008/06/22(日) 16:23:43Lispではよくあることだが、式と値を混同しているね
0793デフォルトの名無しさん
2008/06/22(日) 21:53:32それではevalのお手本をどうぞ。
0794デフォルトの名無しさん
2008/06/22(日) 22:01:24> (define (eval x)
> x)
これマジレスなのw
0795デフォルトの名無しさん
2008/06/22(日) 22:08:340796デフォルトの名無しさん
2008/06/22(日) 22:14:490797デフォルトの名無しさん
2008/06/22(日) 22:25:150798デフォルトの名無しさん
2008/06/22(日) 22:49:16(define (driver-loop)
(begin
(let ((input (read)))
(let ((output (eval input)))
(display output)(newline)))
(driver-loop)))
(driver-loop)
でもevalのお手本、観てみたいな。
0799デフォルトの名無しさん
2008/06/22(日) 22:51:28| ノ\ ヽ |
/ ●゛ ● | |
| ∪ ( _●_) ミ j
彡、 |∪| | J
/ ∩ノ ⊃ ヽ
( \ / _ノ | |
.\ “ /__| |
\ /___ /
0800デフォルトの名無しさん
2008/06/22(日) 22:59:060801デフォルトの名無しさん
2008/06/22(日) 23:04:05それ
(define (eval x)
(lambda (x) x))
という意味?
(+ 2 2)
=>
#<procedure>
になると思うよ。ちょっとマズイ気がする。
0802デフォルトの名無しさん
2008/06/22(日) 23:32:420803デフォルトの名無しさん
2008/06/23(月) 01:01:45「修辞疑問文」
要点を強調するために発せられる修辞疑問文では、答は期待されていない。
多くの場合、答は疑問文自体に含まれるか明白だからである。
前提的疑問文は、答えうるものが何であれ、その人が断定しようと望んでいること以上の情報を含んでしまうだろうから、
ジョークとして用いられたり、相手を困らせるために用いられたりする場合がある。
例)
批判してる奴ってなんでそんなにエバルんだろう?
修辞疑問のお手本ですか
0804デフォルトの名無しさん
2008/06/23(月) 01:03:200805デフォルトの名無しさん
2008/06/23(月) 06:53:390806デフォルトの名無しさん
2008/06/23(月) 06:57:39この例の会話ヘンだよ。
>例)
>批判してる奴ってなんでそんなにエバルんだろう? <=答えを期待してない
>修辞疑問のお手本ですか <=なぜか答えてるw
0807デフォルトの名無しさん
2008/06/23(月) 13:54:340808デフォルトの名無しさん
2008/06/23(月) 15:39:59みっともないなぁ。
0809デフォルトの名無しさん
2008/06/23(月) 17:57:260810デフォルトの名無しさん
2008/06/23(月) 20:23:03WiLiKiはだいたい見てるつもりだったけど気づいてなかった。
peg使ってみたかったけどコンパイルめんどいからリリース待ちだったので、
不意に動くバイナリが手に入って嬉しい。
ところでGaucheはもう完全にSubversionに移行してんの?
0811デフォルトの名無しさん
2008/06/23(月) 20:44:01evalのお手本、誰か書いてよ。簡単そうに言ったんだら。
マジ、期待したのに。
0812デフォルトの名無しさん
2008/06/23(月) 21:30:250813デフォルトの名無しさん
2008/06/23(月) 21:31:12eval[caar[c];a]->eval[cadar[a];a];
T->evcon[cdr[c];a]]
0814デフォルトの名無しさん
2008/06/23(月) 21:32:21null[fn]->NIL;
atom[fn]->[get[fn;EXPR]->apply[expr;args;a];
0815デフォルトの名無しさん
2008/06/23(月) 21:34:460816デフォルトの名無しさん
2008/06/23(月) 21:41:340817デフォルトの名無しさん
2008/06/23(月) 21:45:590818デフォルトの名無しさん
2008/06/23(月) 21:55:40S式とM式を使うLispはLispではないの?
0819デフォルトの名無しさん
2008/06/23(月) 21:59:150820デフォルトの名無しさん
2008/06/23(月) 22:00:20足りないんだよね。丸写しするとアウトかな?
0821デフォルトの名無しさん
2008/06/23(月) 22:03:030822デフォルトの名無しさん
2008/06/23(月) 22:08:30すごい燃料を投下する奴もいたもんだ(w
どうなったのかな?
0823デフォルトの名無しさん
2008/06/23(月) 22:15:38Schemeに翻訳キボンヌ
0824デフォルトの名無しさん
2008/06/23(月) 22:46:270825デフォルトの名無しさん
2008/06/24(火) 07:52:08古い話だよ。R6RSで解決。
0827デフォルトの名無しさん
2008/06/24(火) 10:08:520828デフォルトの名無しさん
2008/06/24(火) 12:00:23「S式で」どころか「意味が定義されてない」Lispが多い。
だから「S式で意味が定義されてない」とLispでないなら、
多くのLispはLispではない。
0829デフォルトの名無しさん
2008/06/24(火) 12:06:200830デフォルトの名無しさん
2008/06/24(火) 16:23:550831デフォルトの名無しさん
2008/06/24(火) 17:39:15だけどどの程度ホスト処理系の機能を使う事が要求されているんですか?
特別式は使っていいんですか?
(define (my-eval e env)
(cond ((self-evaluate? e) e)
((symbol? e)
(let ((x (assq e env)))
(if x
(car x)
'UNBOUND)))
((and (pair? e)
(eq? (car e) 'if)
(pair? (cdr e))
(pair? (cddr e))
(pair? (cdddr e))
(null? (cddddr e)))
(if (my-eval (cadr e) env)
(my-eval (caddr e) env)
(my-eval (cadddr e) env)))
... ))
みたいな程度でいいんですか?
0832デフォルトの名無しさん
2008/06/24(火) 17:39:50(car x) -> (cdr x)
0833デフォルトの名無しさん
2008/06/24(火) 18:56:51もともと>>782の説明に使うevalが求められていたから、その違いを表面化させることが出来るならホスト処理系の機能を使う事が許されていると思う。
0834デフォルトの名無しさん
2008/06/25(水) 00:38:52>>831
期待してるよ。
0835デフォルトの名無しさん
2008/06/25(水) 00:46:25というかSICPの課題させようとしてるだろ?
大学の宿題か?
0836デフォルトの名無しさん
2008/06/25(水) 00:52:07話しそらすの上手だね。
>>723から始まったbeginのトップレベルの継続の違いを再現してみせる2種類のevalが本題。
別に宿題とか云う次元の話じゃない。逃げたきゃ逃げれば?どうせ匿名だし。
0837デフォルトの名無しさん
2008/06/25(水) 00:54:570838デフォルトの名無しさん
2008/06/25(水) 02:29:22M式書き写してLISP 1.5のウンチクたれてる誰かさんより。
0839デフォルトの名無しさん
2008/06/25(水) 03:21:490840デフォルトの名無しさん
2008/06/25(水) 04:35:41結局、処理系のソースでも読んで君自身で作るしかないだろうな。
違いを再現するためにevalを作れという事は、
つまり「継続を含んだeval」が必要で、
そのevalと同位の継続もファーストクラスとして必要になる。
そうでないと組み込みbeginと構文唐beginの違いは多分理解できない。
ここの住人は冷めてるから、いくら喚き散らしても
そこまで面倒な事をこの流れでやるわけがない。
ちなみに継続はSICPの範囲外だ。
がんばれ。
0841デフォルトの名無しさん
2008/06/25(水) 05:53:13(define (eval exp env cont)
(cond ((number exp?) (cont exp))
((symbol? exp) (eval-var exp env cont))
// ry
(else (eval-list exp env (lambda (l) (apply (car l) (cdr l) cont))))))
0842デフォルトの名無しさん
2008/06/25(水) 06:04:330843デフォルトの名無しさん
2008/06/25(水) 07:44:150844デフォルトの名無しさん
2008/06/25(水) 08:41:26(define cc #f)
(display (call/cc (lambda (c) (set! cc c) (cc 'hoge))))
(display 'fuga)
(cc 'moga))
が無限ループにならない実装はtop-levelのbeginだけ特別にスプライスして
(eval '(define cc #f) (interaction-environment))
(eval '(display (call/cc (lambda (c) (set! cc c) (cc 'hoge)))) (interaction-environment))
(eval '(display 'fuga) (interaction-environment))
(eval '(cc 'moga) (interaction-environment))
とやっているからで、これはevalの実装というよりマクロの展開方法の違いと言える。
ちなみにR5RSは一塊でevalしてもスプライスしてevalしてもどっちでもよかったと思うけど。
0845デフォルトの名無しさん
2008/06/25(水) 14:34:35>ちなみにR5RSは一塊でevalしてもスプライスしてevalしてもどっちでもよかったと思うけど。
これDrSchemeとか他の処理系を確認して書いた?
0846デフォルトの名無しさん
2008/06/25(水) 14:38:39>ちなみに継続はSICPの範囲外だ。
Seasoned Schemerには継続が出てくる。
0847デフォルトの名無しさん
2008/06/25(水) 15:09:03「beginで囲んでも囲まなくても意味が変わらない」
と解釈するならスプライスするべきです。
意味が変わるというなら、どう変わるのか明確にするべきです。
0848デフォルトの名無しさん
2008/06/25(水) 15:22:20「処理系確認する」ってやり方で判定すると、
「どっちでもいい」個所がどんどん増えるだけだと思うが?
0849デフォルトの名無しさん
2008/06/25(水) 16:10:38のように考えた人が作ったのでDrSchemeはあのように動作しているらしい。
それはここを見れば解るよ。
http://www.cs.brown.edu/pipermail/plt-scheme/2006-August/014277.html
明確な根拠が書かれていれば嬉しかったのだが・・・残念
0850デフォルトの名無しさん
2008/06/25(水) 16:27:08かなり上のほうでGaucheとDrSchemeを比較してたから。
確認して書いてるなら話がつながるだろ?
0851デフォルトの名無しさん
2008/06/25(水) 16:42:05> R5RSの5.1節を
At the top level of a program (begin <form[1]> ...) is equivalent to
the sequence of expressions, definitions, and syntax definitions
that form the body of the begin.
0852デフォルトの名無しさん
2008/06/25(水) 17:27:47>is equivalent to
この文をどう解釈するか。
ひとつめは
>「beginで囲んでも囲まなくても意味が変わらない」
という立場だ。
もうひとつは
>意味が変わるというなら、どう変わるのか明確にするべきです。
という立場だ。Gaucheの挙動はこっちだった。
ここまでの流れ:
Gaucheの挙動ってエラーじゃねえの?=>エラーじゃねえよ!=>ならeval書いて説明してみろよ=>evalなんて簡単。=>さっさと書け、ゴラァ!
=>ほら書いてやったぞ=>それじゃ意味が明確になってねえぞ、ゴラァ!(今このへん)
0853デフォルトの名無しさん
2008/06/25(水) 17:33:04> ならeval書いて説明してみろよ
この馬鹿発言は無視すべき
0854デフォルトの名無しさん
2008/06/25(水) 18:39:070855デフォルトの名無しさん
2008/06/25(水) 18:45:43=>バグじゃねえよ!
=>R5RSではトップレベルの実行はREPLの実行と区別されていないよ、R6RSではREPLが廃止されたけどね
=>REPLってなーに?
=>Read Eval Print Loop
=>(define (eval e) e)
=>S式の評価なのに値呼びpgr
=>ならてめーが手本を見せてみろよ
=>(マッカーシーの論文の丸写し)
=>自分の手で書けねーのかよ
=>evalなんて簡単。
=>さっさと書け、ゴラァ!
=>ほら書いてやったぞ(<=今このへん)
じゃない?
継続の底を説明する為にevalを書くって話は832で初めて出てきたような
0856デフォルトの名無しさん
2008/06/25(水) 18:49:290857デフォルトの名無しさん
2008/06/25(水) 18:55:32"\n"で改行しなくて驚いた。
0858デフォルトの名無しさん
2008/06/25(水) 19:15:04(define (^-^)(print '許してやんなよ。))
0859デフォルトの名無しさん
2008/06/25(水) 19:16:26これってアンチのネタだったのか・・・
0860デフォルトの名無しさん
2008/06/25(水) 19:17:52(define (・x・) (print 'Bカップ))
0861デフォルトの名無しさん
2008/06/25(水) 19:18:530862デフォルトの名無しさん
2008/06/25(水) 19:30:21おまえらちょっとeval書け
0863デフォルトの名無しさん
2008/06/25(水) 20:31:120864デフォルトの名無しさん
2008/06/26(木) 02:02:39> (^-^)
許してやんなよ。
> (・x・)
Bカップ
エラー吐くかと思ったらw
0865デフォルトの名無しさん
2008/06/26(木) 02:24:42(fold or #f '(#f #f #t))
怒られる なんで?
0866デフォルトの名無しさん
2008/06/26(木) 02:32:46(fold (lambda (x y) (or x y)) #f '(#f #f #t))
0867デフォルトの名無しさん
2008/06/26(木) 03:00:35ちょっと明日R5RSとにらめっこしながら考えてみるわ
不便だなぁな気がする…
0868デフォルトの名無しさん
2008/06/26(木) 03:41:290869デフォルトの名無しさん
2008/06/26(木) 07:21:11>S式の評価なのに値呼びpgr
値呼びは間違いではないし、pgrなんて誰も言ってないよ。
式を評価するタイミングを理解できない人が多いのは
S式の見た目が単純すぎることと、評価の仕組みがわりと複雑なことのギャップが
驚き最小の原則に反しているんじゃないかな。
0870デフォルトの名無しさん
2008/06/26(木) 07:59:08Rubyより怖い
0871デフォルトの名無しさん
2008/06/26(木) 08:10:33大丈夫だよ。馬鹿は論理的に叩かれるけど、馬鹿じゃなければ叩かれない。
書いてみれば?
0872デフォルトの名無しさん
2008/06/26(木) 08:24:07orが普通の関数だと、
ショートカットにならなくて、
それはそれで不便。
Schemeの特殊形式は
数が少ないから覚えられる。
覚えよう。
0873デフォルトの名無しさん
2008/06/26(木) 08:39:110874デフォルトの名無しさん
2008/06/26(木) 08:52:370875デフォルトの名無しさん
2008/06/26(木) 09:13:10別にネタや燃料の投下になってもいいじゃん!
0876デフォルトの名無しさん
2008/06/26(木) 12:41:57にんげんだもの
0877デフォルトの名無しさん
2008/06/26(木) 16:18:00http://pc11.2ch.net/test/read.cgi/tech/1209441159/
0878デフォルトの名無しさん
2008/06/26(木) 16:20:400879デフォルトの名無しさん
2008/06/26(木) 19:58:10ほとんど名指しされてるw
0880デフォルトの名無しさん
2008/06/27(金) 06:31:040881デフォルトの名無しさん
2008/06/27(金) 06:44:49あれはあれで特殊。
RubyとGaucheとMosh、みんな違ってみんないい
0882デフォルトの名無しさん
2008/06/27(金) 06:50:140883デフォルトの名無しさん
2008/06/27(金) 08:34:34I cannot understand your words.
"It is k in Japanese"
What meaning is it?
Please write in English.
0884デフォルトの名無しさん
2008/06/27(金) 11:02:250885デフォルトの名無しさん
2008/06/27(金) 13:07:52偶然だぞ
何言いたいかと申しますと「ジャパニーズでおk」という日本語では、外人さんに伝わるものも伝わらないだろう、と言いたいわけです
日本語でやり取りしてるサイトなのだから外国人なぞ居ない、日本人しか居ないのだ、と思い込んでいませんか?
日本人がYoutubeを使っているように、外国人も2chを使っている可能性があるのではないのですか? 何故その可能性を排除しますか?
母国語ではない言語を使うことに苦労しながらも、それでも私達とコミュニケーションをとろうとしている(のかもしれない)人物に対して
「ジャパニーズでおk」という物言いをするのは良いことなのですか?
コミュニケーションをとろうと努力している(のかもしれない)相手に対して、随分失礼な態度ではないのでしょうか
それとも、そんな振舞いをするのが日本人なのですか? 相手にけして通じない言葉を使って悦に入る。それが日本人の性格なのですか?
プログラミング言語のほとんどは日本以外の国で作られたものですから、日本人はその習得や理解に多少なりとも苦労しているはずです
ドキュメントの大多数は英語文献で公開され、英語が不得意な日本人であれば読むのも一苦労でしょう
そのような苦痛をこの板に集う人々は自ら日々感じていながら、何故相手に通じない日本語を使うのですか?
0886デフォルトの名無しさん
2008/06/27(金) 13:09:55>>881が日本人なら、私こそが失礼なことを言っています…
0887デフォルトの名無しさん
2008/06/27(金) 13:28:062chはある意味、かなり高度な日本語(スラング的な意味で)が要求されるから
もっと慣れてから書き込むべきです。
このBBSで長文を書き込むことと、必死になることは推奨されていません。
そしておそらく881は日本人です
0888デフォルトの名無しさん
2008/06/27(金) 14:00:400889デフォルトの名無しさん
2008/06/27(金) 14:35:560890デフォルトの名無しさん
2008/06/27(金) 15:24:25おまえの興味なんて興味無いよw
0891デフォルトの名無しさん
2008/06/27(金) 15:25:16おまえの興味なんて興味無いよw
以下再帰的なので略
0892デフォルトの名無しさん
2008/06/27(金) 15:30:140893デフォルトの名無しさん
2008/06/27(金) 16:54:30Yコンビネータ乙
0894デフォルトの名無しさん
2008/06/27(金) 18:08:390895デフォルトの名無しさん
2008/06/27(金) 18:15:23894 名前:デフォルトの名無しさん[sage] 投稿日:2008/06/27(金) 18:08:39
不動点ですが何か?
0896デフォルトの名無しさん
2008/06/27(金) 18:18:32895 名前:デフォルトの名無しさん[sage] 投稿日:2008/06/27(金) 18:15:23
>>894
894 名前:デフォルトの名無しさん[sage] 投稿日:2008/06/27(金) 18:08:39
不動点ですが何か?
0897デフォルトの名無しさん
2008/06/27(金) 18:19:16896 名前:デフォルトの名無しさん[sage] 投稿日:2008/06/27(金) 18:18:32
>>895
895 名前:デフォルトの名無しさん[sage] 投稿日:2008/06/27(金) 18:15:23
>>894
894 名前:デフォルトの名無しさん[sage] 投稿日:2008/06/27(金) 18:08:39
不動点ですが何か?
0898デフォルトの名無しさん
2008/06/27(金) 18:35:050899デフォルトの名無しさん
2008/06/27(金) 19:05:200900デフォルトの名無しさん
2008/06/27(金) 19:15:210901デフォルトの名無しさん
2008/06/27(金) 19:18:550902デフォルトの名無しさん
2008/06/27(金) 19:26:110903デフォルトの名無しさん
2008/06/27(金) 19:48:48つぎはcall/ccをかませよ。
0904デフォルトの名無しさん
2008/06/27(金) 20:46:10http://www.ibm.com/developerworks/jp/linux/library/l-prog3/
要するにmapの拡張だと思うんだけどmapの拡張を柔軟にするって意味では
lispのmacroも同じ?
pythonの内胞リストと同じマクロって作れないの?
0905デフォルトの名無しさん
2008/06/27(金) 21:11:58(use srfi-42)
0906デフォルトの名無しさん
2008/06/27(金) 21:13:460907デフォルトの名無しさん
2008/06/27(金) 21:55:32実用的なのは >>905 が書いてるsrfi-42だが、マクロでの実現法を
知りたいならここにあるlist-ofが参考になる。15行で内包表記を実現。
http://practical-scheme.net/wiliki/wiliki.cgi?Scheme%3a%e3%83%9e%e3%82%af%e3%83%ad%e3%81%ae%e5%8a%b9%e7%94%a8#H-b9epxs
0908デフォルトの名無しさん
2008/06/27(金) 21:57:150909デフォルトの名無しさん
2008/06/27(金) 22:05:000910デフォルトの名無しさん
2008/06/27(金) 22:17:560911デフォルトの名無しさん
2008/06/27(金) 22:47:39みなさんはLispを使って何をしていますか?
ばかな質問だったら無視してください。
0912デフォルトの名無しさん
2008/06/27(金) 22:48:570913デフォルトの名無しさん
2008/06/27(金) 22:54:47すごっ、どんな分野なんですか?
0914デフォルトの名無しさん
2008/06/27(金) 22:58:310915デフォルトの名無しさん
2008/06/27(金) 22:59:50設定ファイルのインタプリタとか
シェルみたいにインタラクティブに何か操作する言語を作るとか
0916デフォルトの名無しさん
2008/06/27(金) 23:03:09CG系の目的で使ってるひといませんか?
0917デフォルトの名無しさん
2008/06/27(金) 23:03:42よほどのこと、というのは、
・効率などをシビアに要求されて、他の言語でないとその要求を満たせない場合
・他の言語を使えばおそろしく簡単に(たとえばライブラリを呼ぶだけ)済む場合
・(顧客の指示など)社会的な理由でLispを使うことが許されない場合
0918デフォルトの名無しさん
2008/06/27(金) 23:04:32レンダリング系は難しいかもしれないけど、モデリング系ではかなり使われてると思う
0919デフォルトの名無しさん
2008/06/27(金) 23:08:45昔々Symbolicsというマシンがあってだなあ・・・
いや年寄りの独り言だ、忘れてくれ・・・ orz
0920デフォルトの名無しさん
2008/06/27(金) 23:10:04昔話禁止しようぜ
0921デフォルトの名無しさん
2008/06/27(金) 23:11:070922デフォルトの名無しさん
2008/06/27(金) 23:16:24例えばここ見てみるといいよ。
ttp://www.franz.com/success/customer_apps/animation_graphics/
0923デフォルトの名無しさん
2008/06/27(金) 23:45:50>>911
あなたは両手を使って何をしていますか?
(もし手の不自由な方だったら申し訳ありません。意味を汲み取ってください。)
0924デフォルトの名無しさん
2008/06/27(金) 23:51:55> あなたは両手を使って何をしていますか?
自慰
0925デフォルトの名無しさん
2008/06/27(金) 23:56:14片手でやれ
0926デフォルトの名無しさん
2008/06/28(土) 01:19:54すみません、意味を汲み取れませんでした。
今はタイピングしてますね。
0927デフォルトの名無しさん
2008/06/28(土) 01:32:39なんか予想外の方向に展開してますが
日常生活の動作の多くに(無意識に)両手を使うように
コンピュータを使う動作の多くに(無意識に、とまではまだ私はいきませんが)Lispを使うのです。
などと書きましたが未だに3分の1くらいはBシェルスクリプトにしてしまいます:-P
0928デフォルトの名無しさん
2008/06/28(土) 02:42:440929デフォルトの名無しさん
2008/06/28(土) 03:09:440930デフォルトの名無しさん
2008/06/28(土) 03:23:06グレアムおじさん
0931デフォルトの名無しさん
2008/06/28(土) 10:53:38ちょっと違うかもしれないけどこういうのもあるよ
http://www.pawfal.org/fluxus/
0932デフォルトの名無しさん
2008/06/29(日) 14:58:24gimpのscript-fu?
0933デフォルトの名無しさん
2008/07/03(木) 16:00:43pythonのメタ制御をlispでしたい
しかし理想の環境はいまだできず
0934デフォルトの名無しさん
2008/07/03(木) 17:32:420935デフォルトの名無しさん
2008/07/03(木) 17:36:230936デフォルトの名無しさん
2008/07/03(木) 17:43:540937デフォルトの名無しさん
2008/07/03(木) 17:57:20最新規格R6RS*に準拠する実装です。インタープリタの特性を活かしてスピーディーで
インタラクティブなアプリケーション/ユーザーライブラリーの開発を可能にします。また
マルチコアCPU用に最適化したMostly Concurrent Garbage Collectionを実装することに
より、極めて短いGC停止時間と並列実行によるパフォーマンスの向上を達成しています。
ttp://www.littlewingpinball.net/mediawiki-ja/index.php/Ypsilon_Scheme_System
この会社のピンボールゲームとはMacでトリスタンやって以来の付き合いなわけだが、こう
いう方向に来るとは思わなかった。
0938デフォルトの名無しさん
2008/07/03(木) 18:00:59OCaml上でも可。(OCSみたいなヤツ)
0939デフォルトの名無しさん
2008/07/03(木) 18:59:37逆を作った方がいいだろうな。jpythonやiron pythonみたいにcl pythonかsbcl pythonでも
考えてみたいい。
0940デフォルトの名無しさん
2008/07/03(木) 19:05:16CLが動く環境よりも多いんですよ
それにPythonやOCamlは処理系が統一されてるし
0941デフォルトの名無しさん
2008/07/03(木) 19:27:05> 逆を作った方がいいだろうな。
> 考えてみたいい。
意味不明
0942デフォルトの名無しさん
2008/07/03(木) 19:56:15せめてJavaがいいな
schemeではありそうだけど
0943デフォルトの名無しさん
2008/07/03(木) 20:01:56宗教上の理由かな
0944デフォルトの名無しさん
2008/07/03(木) 20:04:53・仮想環境にopenSUSE 10.3/11.0 i386版をインストール
・ディレクトリ /virtual/(xreaのあなたのID)/ を作る。
・そのディレクトリの下に bin lib share ディレクトリを作る。
・gaucheのソースを本家からダウンロード&展開
・gauche-0.8.xxディレクトリに移動
・./configure --prefix=/virtual/(xreaのあなたのID)/
・make
・make install
・/virtual/(xreaのあなたのID)/に移動
・ tar cjvf gauche.tar.bz2 bin lib share
・ gauche.tar.bz2 を xrea に持っていく。
・ sshでxreaにつなぐ
・ そこで tar xjvf gauche.tar.bz2 とする。
おしまい。openSUSEにはyastからautomake autoconf など開発系のパッケージを入れること。
0945デフォルトの名無しさん
2008/07/03(木) 20:08:09しまった、誤爆です。でもここでもいいか。
0946デフォルトの名無しさん
2008/07/03(木) 20:08:10たぶん性能が悪くて使い物にならないと思うけど。
どうせやるなら Java VM か .NET CLR 上が面白いだろうね。
0947デフォルトの名無しさん
2008/07/03(木) 20:19:03C/C++ではGUIの仕様の統一が図れないしi386やLinux/Winのみをターゲットにしている事も多い。
JAVAは純正はポータブルじゃないしクローンは(よくなったとはいえ)まだ不完全。
PythonやOCamlは派生処理系はあるもののメインに概ね統一されてるしポータビリティもいいしGUIもある。
という理由です。
FiclやLuaみたいにANSI-Cが必要十分条件なCL or Schemeがあればそれが一番いいんですが。
(といってもGUIの問題が残るけど)
0948デフォルトの名無しさん
2008/07/03(木) 20:25:100949デフォルトの名無しさん
2008/07/03(木) 20:25:510950デフォルトの名無しさん
2008/07/03(木) 20:32:05その末裔のECLはBoehmGCをportしたらビルドできましたけど
0951デフォルトの名無しさん
2008/07/03(木) 20:35:570952デフォルトの名無しさん
2008/07/03(木) 20:39:54JavaVMにおけるKAWAとかSISCみたく
PythonVM上で直接実行されるようにすれば
CLispくらいにはなりませんかね?
0953デフォルトの名無しさん
2008/07/03(木) 20:54:24ocamlやpython,rubyのGUIって標準はtcl/tkちゃうん?
clはltkが一応あるよ。
0954デフォルトの名無しさん
2008/07/03(木) 22:03:04PythonやLuaの実装言語はCなんだから、
CでGUIを統一できないとか移植性がないとか言うのはおかしいでしょ
0955デフォルトの名無しさん
2008/07/03(木) 22:42:58その上で動くもののポータビリティが保たれることを利用して
SchemeやCLよりも低レベルでポータビリティを実現して欲しいんです。
いろいろな処理系を移植するのは骨が折れるので。
LuaにGUIがあるのかどうかは知りませんが
必要十分条件が明白な言語の代表として名前をあげました。
POSIXでXlibとgccがあればフル機能は無理でも標準機能はビルドできる、くらいの条件があって欲しいです。
0956デフォルトの名無しさん
2008/07/03(木) 22:47:32性能が出なくて労力の割に面白くないから、誰も作らないんじゃないかと想像できる。
だが、やってみなくちゃ判らないぞ。>>955の偉業に期待だ。
0957デフォルトの名無しさん
2008/07/03(木) 23:06:28ansiなscheme or CLにTcl/Tkをポートする方が楽そう。
0958デフォルトの名無しさん
2008/07/03(木) 23:30:130959デフォルトの名無しさん
2008/07/04(金) 00:08:49LuaにGUIはないが、君の言う通り「Luaよりも低レベルで」ポータビリティを実現できる
Cで書ける部分を無理にLuaで書くことはない
0960デフォルトの名無しさん
2008/07/04(金) 00:30:30Python上で実装してポータビリティを上げるって
衝撃の馬鹿理由だな。
0961デフォルトの名無しさん
2008/07/04(金) 00:49:27性能重視は競争が激しいし供給過剰だし
0962デフォルトの名無しさん
2008/07/04(金) 01:03:140963デフォルトの名無しさん
2008/07/04(金) 01:15:090964デフォルトの名無しさん
2008/07/04(金) 04:50:03日本じゃ人気がないから
0965デフォルトの名無しさん
2008/07/04(金) 07:10:54時々lispとの微妙な違いに悲しくなるけど、確かにlisperとしても許容できる、
良い言語だわ。ほぼどこでも動くし、ライブラリも沢山。
そのうち趣味でもpythonばかりになるかも。
0966デフォルトの名無しさん
2008/07/04(金) 08:39:270967デフォルトの名無しさん
2008/07/04(金) 09:28:25matlabに慣れてるからpython.numpyが使いやすい
しかしちょっと高度なこともしてみたい
全部lispでやったほうがいいのだろうか
0968デフォルトの名無しさん
2008/07/04(金) 09:28:57pyffi
0969デフォルトの名無しさん
2008/07/04(金) 09:57:24あまり融合度が高くないが、
http://clisp.cons.org/impnotes/matlab.html
matlabじゃないが、
http://nlisp.info/
0970デフォルトの名無しさん
2008/07/04(金) 13:08:280971デフォルトの名無しさん
2008/07/04(金) 13:09:160972デフォルトの名無しさん
2008/07/04(金) 14:30:260973デフォルトの名無しさん
2008/07/04(金) 16:42:13ピンボールよりメタボールの方が面白そうだなあ
0974デフォルトの名無しさん
2008/07/04(金) 22:21:520975デフォルトの名無しさん
2008/07/04(金) 22:32:26微妙な違いがあったり、symbolに相当するものが無かったり、PythonってLispのようで
Lispでないって感じだよね。
0976デフォルトの名無しさん
2008/07/06(日) 17:33:24x86_64に対応してないって書いてたわ。残念。
0977デフォルトの名無しさん
2008/07/07(月) 21:52:16継続不完全でもJavaとのリンク強ならKawa
0978デフォルトの名無しさん
2008/07/08(火) 18:34:570979デフォルトの名無しさん
2008/07/10(木) 12:45:3832bitでコンパイルすればいいじゃん。
0980デフォルトの名無しさん
2008/07/12(土) 14:42:03久し振りにSchemeと戯れてます。
本の謝辞にこのスレの名が出ていたのでやってきました。
Gaucheってかなりユーザー多いですか?
0981デフォルトの名無しさん
2008/07/12(土) 18:26:53このスレの最初のものをコピーしたばかりなので、最新版にアップデート
しなきゃいけない所の訂正をお願いします。
(たとえば、テンプレには話題のイプシロンについてはかかれていない。)
また、ID:guest PASSWORD:cl です。インストールログなどの公開場所
としてもご利用ください。
0982デフォルトの名無しさん
2008/07/13(日) 00:27:130983デフォルトの名無しさん
2008/07/13(日) 00:32:34Lisp Scheme Part23
http://pc11.2ch.net/test/read.cgi/tech/1215875388/
0984デフォルトの名無しさん
2008/07/13(日) 00:40:16おつ
0985デフォルトの名無しさん
2008/07/13(日) 00:41:54規格に準拠かどうかはともかく
0986デフォルトの名無しさん
2008/07/13(日) 00:44:53あ、それをテンプレに入れるの忘れてた。('A`)
すみません。次々スレ立てる方はテンプレにお願いします。
0987デフォルトの名無しさん
2008/07/13(日) 00:58:51そろそろ競争原理が働いてすごいのが出てきてもいいと思うんだ
0988デフォルトの名無しさん
2008/07/13(日) 10:24:100989デフォルトの名無しさん
2008/07/13(日) 19:43:510990デフォルトの名無しさん
2008/07/13(日) 20:05:010991デフォルトの名無しさん
2008/07/14(月) 19:34:430992デフォルトの名無しさん
2008/07/14(月) 19:46:52Common Scheme
0993デフォルトの名無しさん
2008/07/14(月) 23:15:030994デフォルトの名無しさん
2008/07/15(火) 01:01:16ガイ・くろ
0995デフォルトの名無しさん
2008/07/15(火) 01:23:33あとは競馬でソトって騎手が内側から上がってきて、実況が「内からソト! 内からソト!」とか
0996デフォルトの名無しさん
2008/07/15(火) 19:01:470997デフォルトの名無しさん
2008/07/15(火) 19:32:270998デフォルトの名無しさん
2008/07/15(火) 19:33:030999デフォルトの名無しさん
2008/07/15(火) 19:33:391000デフォルトの名無しさん
2008/07/15(火) 19:34:5110011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。