tspl抜けてんぞ
Yコンビネータだけじゃなく他の色々なコンビネータがつかえると想像してミレ。 プログラミングの幅が広がると気がつかんか?
なんと副作用がないのだがSeasoned Schemerを読まないとご利益は理解できない件。
前スレ
>>997 ありがとうございます。
てんこもりですね。損した気分。
>>999 Y-combinator再考してみます。
>>14 実は昨日届いたんです。ウヒヒ。
パズルとかゲームとか得意ではないんですが
読んで見ます。それにしても小さい本ですね。
Seasoned Schemer⇒To Mock a Mockingbird この順序で読むべし。間を空けるとSeasonedを読むのが辛くなる。
>>15 コンビネータというからには何かを結びつけて使うんですよね、きっと。
何かの計算結果同士を結びつける。C++のbindみたいな。
>>16 8章までの知識があれば読めるみたいなこと書いてあったんで
難しい9,10章飛ばして突入したら、Y-combinatorが出てきたもんで
慌てて戻った次第です。
>>18 なるほど、そうですか。Seasonedは11章から始まってるので
二冊で一冊みたいなもんですね。確かにLittleの内容を前提
としてるので忘れないうちに行ってみます。
To Mock a Mockingbird はP73から読み始める。M(Mockingbirdというコンビネータ)がいきなり登場。 こいつがとても重要。P96の "Bluebird and Mockingbird" で最初の秘密が明らかになる。 P128からの "A Gallery of Sage Birds" ではいろいろなYコンビネータ(この本ではΘ)が登場する。 P193から不動点定理とYコンビネータの関係の説明がある。ここからいよいよコンビネータが明かされ始める。 これ以上はネタばれなのでやめておく。お楽しみに。
>コンビネータというからには何かを結びつけて使うんですよね、きっと。 そうなのじゃ。結びつきこそが鳥達の住む森を生み出しておる。 集積回路のコンピュータ然り、DNAコンピュータ然り、なのじゃ。 そして、人と人の結びつきもまた然りじゃのう。 君はまだまだ若いから、この意味がわかるかのう?
>>21 大変参考になります。
コンビネータという単語が出てこないので?と思ってました。
>>22 右脳が試されてる気が。。
C++のほうが仕様は膨大なのに簡単
に思える今日この頃。
>そうなのじゃ。結びつきこそが鳥達の住む森を生み出しておる。 P167のMaster Forestじゃ。 >右脳が試されてる気が。。 読み終わった頃には左脳が試されてると確信する。 そしてプログラムの存在をコンピュータの画面以外でも感じるようになる。 そのときプログラマーとして実世界を相手に仕事をする旅立ちのときがやってくる。 さあ、勇者よ!行くがよい!世界が待っている!
たかがコンビネータで本一冊書けるってすげーな R6RSなんて187ページにぎゅうぎゅう詰めですよ
>>25 >たかがコンビネータで本一冊書けるってすげーな
書けなかったからパズルと詰め合わせの件。
くわしく
>>25 コンビネーターはそれなりに研究の蓄積があるから、
さすがに「たかが」ということはないんじゃないかな。
1972年までの主要な結果をまとめた Curry & Feys のコンビネーター本は
全2冊でたしか合計900頁以上あったはず。
>>29 全25章のうち、出だしの6章はコンビネータとは関係ない別の話。
「美女と野獣(Lady or Tiger)」と出だしの6章は関係がある。
7章から25章まで読むとチューリング完全とは何かがわかる。
チューリング完全の範囲でコンビネータでプログラムできる、論理を記述できる。
実はこの本、論理を記述できるようになる25章から出だしの6章に戻り論理パズルを解くという循環構造になっている希ガス。
考えすぎか?
BarendregtのThe Lambda Calculusは621ページあるな。
>>31 ナール、確かに再びこの森に戻ってくるとか言ってたジャマイカ。
>>31 ありがとう
>>30 うーん
ぶっちゃけ、言語として見ると「たかが」だと思う。
数学の話になるとLispと関係なくなる感じがする。
>>34 それは無知すぎる。
形なしラムダ算法はLispやSchemeだし、型付ラムダ算法とかはML系の先取り。
ポリモーフィックラムダ算法はオブジェクト指向だし、遅延ラムダ算法はHaskellみたいなことやってる。
つまりコンビネータとSchemeを効果的に組み合わせるとお手軽にそれらが実現できるハズw
素のSchemeが全てじゃないし、コンビネータは小道具としても強力。
>>37 > それは無知すぎる。
なんでそんな興奮してるの?
The Little Schemerで勉強始めたばかりの人に…
スーパーコンビネータをググルと? ・ヤマハスーパーコンビネーターエレキSC700・42 ・Super Combinator 800(スーパー・コンビネーター) ミニ・スイッチによるフェイズ・アウトを含む13通りのサウンド・バリエーションからネーミングされた
愛するものを汚されたと感じたのでは?w
lambda ____ _/ \ \_ ((/___))___\)) | |!!! !!| | |!!! !!! !!!| | | |;;;; ;;;;| | |;;;; ;;;; ;;;;| | | |;;;; ;;;;| | |;;;; ;;;; ;;;;| | Λロ二二ロ二Λ二Λ二Λ二Λ二二二二Λ二Λ二Λ二Λ二l (^×^∩ ∩(´∀` ) (・∀・ ) ∩(ΦλΦ )(ー人ー ) ┌〔〔 〔〔V) ヽ〔〔 〔〔 つ〔〔 〔〔 つ ヽ〔〔Э〔〔 つ〔〔 〔〔 つ (_ノ〈 ||_| (_ノ〈 ||_|(_ノ〈 ||_| (_ノ〈 ||_|(_ノ〈 ||_| (__) (__) (__) (__) (__)
∧∧ /⌒ヽ) i三 ∪ たかが.... 〜三 | (/~∪ 三三 三三 三三
.,..-──- 、 ニ/ニ r '´. : : : : : : : : : :ヽ {_ ー亠ー /.: : : : : : : : : : : : : :: ヽ ヽ 二 ,!::: : : : : ,-…-…-ミ:: : :', ⌒) [ ̄] {:: : : : : :i ,;ノ;´:`ゞ、i: : :.:} ∩─ー、 /  ̄ .{:: : : : : :| ェェ;;;;;;;ェェ|: : : } / ● `ヽ ―ー . つ { : : : : ::| ,.、 .| : : :;!/ ( ● ● |つ ,-亠ー __ ヾ: :: : :i r‐-ニ┐| : : :ノ| /(入__ノ ミ / 廿 / ゞイ! ヽ二゙ノ イゞ,.‐rニ(_/ ∪ノ / .又 (_, / ̄ \`ー一'/ - -l\___ノ_ __ / /⌒ヽ \//ヽ 二} \_ _/ / / / \//\ ヽ/ :、 (ノ ̄`メ、 | |/ / `´ヽ \/i \ __ | \/ /lヽ ヽ /.| i' i / | \/ /| ヽ / | | | ´⌒) | \/ | / | | | -' | `ー-ノ i | | |
ll ll l| -‐‐- |l ,イ」_ |ヽ_| l、 /└-.二| ヽ,ゝl l ,.-ー\/. 、l | /.__';_..ン、 ビ〜ィ〜ム かがーやーく♪ / /<二> <二>!゙、 //--─'( _●_)`ーミヘ フラッシュバックに〜ぃ♪ <-''彡、 |∪| 、` ̄ ̄ヽ / __ ヽノ Y ̄) | ヤツのかげーー♪ (___) Y_ノ \ | | /\ \ | / ) ) ∪ ( \ \_) _人人人人人人人人人人人人人人人_ > たかが♪ たかが♪ たかが♪ <  ̄^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^ ̄ ll ll ll ll ll ll l| -‐‐- |l __ l| -‐‐- |l __ l| -‐‐- |l __ ,イ」_ |ヽ_| l、〈〈〈〈 ヽ ,イ」_ |ヽ_| l、〈〈〈〈 ヽ ,イ」_ |ヽ_| l、〈〈〈〈 ヽ /└-.二| ヽ,ゝl.〈⊃ } /└-.二| ヽ,ゝl.〈⊃ }./└-.二| ヽ,ゝl.〈⊃ } l ,.-ー\/. 、l | |. l ,.-ー\/. 、l | | l ,.-ー\/. 、l | | | /.__';_..ン、! ! | /.__';_..ン、! !| /.__';_..ン、! ! / /<二> <二>!゙、 // /<二> <二>!゙、 // /<二> <二>!゙、 / //--─'( _●_)`ーミ /.//--─'( _●_)`ーミ / //--─'( _●_)`ーミ / <-''彡、 |∪| / <-''彡、 |∪| / <-''彡、 |∪| / / __ ヽノ / / __ ヽノ / / __ ヽノ / (___) / (___) / (___) /
-― ̄ ̄ ` ―-- _ , ´ , ~  ̄、"ー 、 _/ / ,r _ ヽ ノ , ´ / / ● i" ,/ ,| / / _i⌒ l| i | と,-‐ ´ ̄ / / (⊂ ● j'__ | (´__ 、 / /  ̄!,__,u● |  ̄ ̄`ヾ_ し u l| i /ヽ、 ,_ \ ノ(`'__ノ (__  ̄~" __ , --‐一~⊂ ⊃_  ̄ ̄ ̄ ⊂ ̄ __⊃ ⊂_____⊃
図星だったぽい・・・
>>27 サンクス
ですよね。立ち読みした限りじゃ、漏れにはかなりむずい印象。
計算論入門(渡辺米崎)はやさしいですか?
まだリトル読み終わらない厨房なのですが、、、
モッキンバードは英語だから代わりに何か読みたいなと思ってます。
>>48 去年でたCommon Lisp入門とか読めば?
後ろの方にラムダ算法入門みたいな章があったよ。
さわりだけでいいんでしょ?
チャーチロッサーの定理とかβ簡約とか出て来るしいいんジャマイカ?
>>49 とりあえず見てみます。
あれ読んで理解したら次に計算論入門か計算論読めますか?
>>48 その本は知らないんだけど、ラムダ計算とその意味論に関してだったら、
横内寛文『プログラム意味論』が丁寧かつわかりやすくてよかったですよ。
ただ、このあたりの内容について解説している本はどうしても数学書のスタイル
になってしまうので、そういうのにあまりなじみが無いのなら、小野寛晰『情報代数』
あたりをざっと読んでみるのがいいかもしれないです。この本は、理論計算機科学の
文献で使われる基本的な数学的道具立てについて一通り解説してあって、
なかなか便利です。
軽装で登山は出来ない。予備知識に何が必要かわかったら読むべき本も自ずと出てくる。
>>51 ,53
どうもありがとう。
とりあえず探して見てみます。
初心者独学なんで情報代数の本は役立ちそうですね。
モッキンバードに書か
途切れた。 モッキンバードに書かれてるのと同程度の知識が得られればいいな、 といういい加減な目標です。
glintワラタw あれいいなぁ
初心者・独学を強調しすぎる奴って、一生そのままだよな。 いつまでたっても助けてもらわないと一歩も前に進めない奴。
人と議論したほうが伸びる。
そりゃそうだ
____ / \ /\ キリッ . / (ー) (ー)\ / ⌒(__人__)⌒ \ | |r┬-| | 初心者・独学を強調しすぎる奴って、一生そのままだよな。 \ `ー'´ / いつまでたっても助けてもらわないと一歩も前に進めない奴。 ノ \ /´ ヽ | l \ ヽ -一''''''"~~``'ー--、 -一'''''''ー-、. ヽ ____(⌒)(⌒)⌒) ) (⌒_(⌒)⌒)⌒)) ____ /_ノ ヽ、_\ ミ ミ ミ o゚((●)) ((●))゚o ミ ミ ミ /⌒)⌒)⌒. ::::::⌒(__人__)⌒:::\ /⌒)⌒)⌒) | / / / |r┬-| | (⌒)/ / / // だっておwwwwwwwwwwwwwwwwwww | :::::::::::(⌒) | | | / ゝ :::::::::::/ | ノ | | | \ / ) / ヽ / `ー'´ ヽ / / バ | | l||l 从人 l||l l||l 从人 l||l バ ン ヽ -一''''''"~~``'ー--、 -一'''''''ー-、 ン ヽ ____(⌒)(⌒)⌒) ) (⌒_(⌒)⌒)⌒))
>>58 / ̄ ̄^ヽ / ̄ ̄^ヽ
l l ____ l l
_ ,--、l ノ . /_ノ ヽ、_\ 丶 l ,--、 _
,--、_ノ:: `ー':: 、ミー---‐,,l o゚((●)) ((●))゚o l,,‐---ー彡, ::`ー' ::ゝ_,--、
,/ ::: i ̄ ̄ | . /::::::⌒(__人__)⌒::::: \ |  ̄ ̄i ::: ヽ,
/ l::: l::: ll | |r┬-| | ll :::l :::l ^ヽ
l l . l !:: |::: l | | | | | l :::| ::! l l l
| l l |:: l: l . | | | | | l ::l :::| l :l |
| l . } l:::::,r----- l \ | | | / l -----、_::::::l } l |
ヽ :l:::: ト:;;;;;;;;;/-/__........... /. | | | ヽ ...........__ノヽ;;;;;;;ノ ::::l /
| | |
| | |
`ー'´
/ ̄ ̄ ̄ \ / :::::\:::/\ / 。<一>:::::<ー>。 <<58 | .:::。゚~(__人__)~゚j \、 ゜ ` ⌒´,;/゜ / ⌒ヽ゚ '"'"´(;゚ 。 / ,_ \ \/\ \ と___)_ヽ_つ_;_ヾ_つ.;.
わたし女だけどスレッドすごく荒れちゃって読みにくいから。
↓ここでマンコのAA登場↓
(i) => #<Manko>
>>66 schemeやる女
物理科に来る女のように変人
男のキモい率とそんな変わらんな
ブス率高し
>>58 すごいな!
2chの自称初心者を全員追跡調査したんだ?
一人一人進歩無しに死んだところまでちゃんと確かめたんだよな?
75 :
58 :2008/03/11(火) 14:14:33
ええ、確かめましたが何か?^^
76 :
58 :2008/03/11(火) 14:16:11
>74 知るかバーか!!てめえで探せっての!!変態野郎が!!
さすがLisperだな。神レベルだわ。
/  ̄ ̄ ̄ ̄\ / ヽ / ヽ | 人_____________ | / ─ ─ | .| それがLisperクオリティ /│(●) (●) / /| ____________ / .│ (__人__) ./ / | \〜〜 / |__ \ `⌒ ´ /__/___ ノ \ /___ (\ / )――― ( つ(__/ \ ( | / ) (__フ| \ / ( | / ) ⊂―||―、 | /
r y、 / / } _/ノ.. /、 / < } ry、 {k_ _/`;, ノノ パンパン / / } ;' `i、 _/ノ../、 _/ 入/ / `ヽ, ノノ / r;ァ }''i" ̄.  ̄r'_ノ"'ヽ.i ) ―☆ {k_ _/,,.' ;. :. l、 ノ \ ` 、 ,i. .:, :, ' / / \ ,;ゝr;,;_二∠r;,_ェ=-ー'" r,_,/ ☆
セックスゥ〜 ∧_∧ ハァハァ… (´Д` ;) ( ̄ ̄ ̄ ̄┴- | ( * ;) / / ∧ \ / / / U\ \ キモイヨー / / ( ̄) | |\ ( ̄) ((( ))) / ( ノ ( | | \ ノ ( 〜 (;´Д`) ⊂- ┘( ) └--┘ ( ) 〜 / つ1 _つ UUUU UUUU 人 Y し'(_)
82 :
Z武 :2008/03/11(火) 14:44:18
,.,.,.,.,.,.,.,.,__ ,;f::::::::::::::::::::::::::ヽ: i/'" ̄ ̄ヾ:::::::::::i: |,,,,_ ,,,,,,_ |::::::::|: (。);( ゚)==r─、|: グフィ { (__..:: / ノ: . ', エエエエフ ノ: / / } !___/ `i、 _/ノ../、 _/ 入/ / `ヽ,: / r;ァ }''i" ̄.  ̄r'_ノ"'ヽ.i ): {k_ _/,,.' ;. :. l、 ノ: ドクドク \ ` 、 ,i. .:, :, ' / /: ,;ゝr;,;_二∠r;,_ェ=-ー'" r,_,/:
83 :
58 :2008/03/11(火) 14:45:18
∩___∩ | ノ ヽ/⌒) あばばばばばば /⌒) (゚) (゚) | .| / / ( _●_) ミ/ ∩―−、 .( ヽ |∪| / / (゚) 、_ `ヽ \ ヽノ / / ( ● (゚) |つ / / | /(入__ノ ミ あばばっあびゃばびゃばば | / 、 (_/ ノ | /\ \ \___ ノ゙ ─ー | / ) ) \ _ ∪ ( \ \ \ \_)
86 :
58 :2008/03/11(火) 20:00:51
>>85 ∩___∩
≡ | ノ ヽ/⌒))=
-=≡/⌒) (゜) (゜) | .| ≡ 無理でした
≡/ / ( _●_) ミ/ )≡=
≡(( ヽ |∪| /)≡= :,∴・゜・゜・:,∴・゜・゜・
≡\ ヽノ /= :,∴・゜・・∴~・:・∴・・・
≡/ / ,.:∴~・:,゜・~・:,゜・ ,゜・~・:,゜・・∴・゜゜・
=≡(| _つ~~~‘∴・゜゜・・∴~・:,゜・・∴・゜゜・∴~゜゜゜
, ≡| /UJ\ \≡ ~・:,゜・~・:,゜・ ,゜・~・:,゜・・∴・゜゜・
=≡(| / ) ))= ・゜ ・・∴~・:・∴∴~・:・∴・
=(∪ ( \≡ ゜∴・゜・・∴~・:・∴
\_))≡=
>>85 「やっぱりそれなりにLisp/Schemeの背景について知らないと
面白いAAにもならないから難しいのでは?
ただ単にクマのテンプレ貼られてもなあ」
というのは議論の余地のない given な事実として淀みなく会話が流れる、というのが一般的です。
零細企業に勤めてる人いる?いないか、ハイレベル多そうだからな。
いや、大企業のばりばりLisperの方がレアなんじゃないか?www
/ ̄\
| |
\_/
|
/  ̄  ̄ \
/ \ / \
>>87 / ⌒ ⌒ \ よくぞ逝ってくれた
| (__人__) | 褒美としてLispをAAで語る権利をやる
\ ` ⌒´ / ☆
/ヽ、--ー、__,-‐´ \─/
/ > ヽ▼●▼<\ ||ー、.
/ ヽ、 \ i |。| |/ ヽ (ニ、`ヽ.
.l ヽ l |。| | r-、y `ニ ノ \
l | |ー─ |  ̄ l `~ヽ_ノ____
/ ̄ ̄ ̄ ̄ヽ-'ヽ--' / L i s p /|
.| ̄ ̄ ̄ ̄ ̄ ̄|/| | ̄ ̄ ̄ ̄ ̄ ̄|/| ______
/ ̄L i s p /|  ̄|__」/_ L i s p /| ̄|__,」___ /|
| ̄ ̄ ̄ ̄ ̄|/L i s p  ̄/ ̄ ̄ ̄ ̄|/ L i s p /| / .|
| ̄ ̄ ̄ ̄ ̄| ̄ ̄ ̄ ̄ ̄|/l ̄ ̄ ̄ ̄| ̄ ̄ ̄ ̄ ̄|/| /
| ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|
大企業ならまだLisperいるんじゃない? 新日鉄とか。
リクナビにLisper募集してる会社がのってるな
零細企業とか大企業とかいう発想が古くさい
大企業でLispというと竹内先生の古巣か?
公社崩れの会社だな
98 :
96 :2008/03/11(火) 22:18:56
>97 さっそくサポート有難うございます。
>96 奥付張り紙してある?
102 :
96 :2008/03/12(水) 00:03:27
>100 フッフッフ、300円余分に支払ったおかげだ(でも読むのはゆっくり)。 >101 奥付に張り紙って何だ?と思ったら確かに貼ってあったよ。 「プログラミングGauche」と書かれたテープみたいなのが。 (透かしてみたら下にはどうも「Gaucheプログラミング」と 印刷されてるみたいw)
The Little Schemerの 入れ子になったlambdaの意味が分かりません (define multirember-f (lambda (test?) (lambda (a lat) (cond ((null? lat) (quote())) ((test? a (car lat)) ((multirember-f test?) a (cdr lat))) (else (cons (car lat) ((cons (car lat) ((multirember-f test?) a (cdr lat)))))))) 調べてみてブロックというのがこの例なのかなと思っているのですが、 なぜlambdaが二つ必要なのか理解できません どなたかご教示願います
>102 それは当たりですね ♥ …漏れも欲しくなってきた、ミスプリント版w
105 :
102 :2008/03/12(水) 00:27:49
>104 これって当たりなのw?
>>103 multirember-fは引数(この場合の引数は関数test?)を一つとり
関数を返す関数。戻り値の関数は、引数を二つ(aとlat)とる関数。
P127の上から5番目のパラグラフを復習。
まずはご苦労。>gauche本の中の人達。 色々ぬかりない感じがするんだが、良くも悪くも なんでネット公開止めたん? それからラムダブックスのサイトから買えるようにしてくれ。 そうでなかったら価格表示やめれ。
黒板は出てこないのか。
110 :
デフォルトの名無しさん :2008/03/12(水) 05:52:19
>>107 > なんでネット公開止めたん?
契約書に「公開するな」的な一文がある。
オーム社なら(On Lispのように)公開出来たかも知れん
> それからラムダブックスのサイトから買えるようにしてくれ。
> そうでなかったら価格表示やめれ。
中の人に言ってみる
むしろ最後の方の議論のスタイル云々が酷い
仕様書を書かずにコードを書くスタイルを叩いてるのはいつものことでしょ
>>108 突っ込みどころは多い(映画館の喩えはいかがなものかと思う)が、言いたいことは理解できる。
>>107 想像だけど、ネットで公開できなくなるのは本になることの代償じゃないかな。
出版社はボランティアじゃないからね。
個人的には、ネットで公開できなくなるマイナスより、本になるプラスのほうが
勝ってると思う。もちろん、そうは思わない人も多いと思うけど。
どちらにするかは、権利を持っている人が勝手に決めればいいことだ。
正確には著者と出版社が話し合って決めることだな
>102 献本用に刷ったのにミスプリがあったらしい。 先日のgauche.nightで販売されたのもコレ。 内容は市販されるものと同一のはず。
Little読んだ程度の漏れでも読めるかな。
読むな。書け。
>>116 そりゃ、自分がその本を持っている前提ならそうかもしれないけど、
本が入手不可能でネットにもリソースなかったりしたら、ものすごく困る。
>>122 「本が入手不可能」って状況がよくわからんけど、絶版になればふつう版権は
著者に戻される。著者が望めば公開可能。
理屈ではそうなんだが、在庫なし再販未定≠絶版なのが面倒なところ。 法律では「出版権の消滅」って概念を定めてて、しかるべき場合には しかるべき手続きを踏めば出版権を消滅させられることになってるけど。
注)ここは日本です。
glintオモスレー
letrec これは何と読めばいいですか? レトレックでOK?
桶
ども
いや、桶をレトレックって読むんだよ。
なぜか「バルカン星人を舐めるなよ」と書きたくてらまらない。
ふぉっふぉっふぉ
134 :
107 :2008/03/13(木) 01:09:53
ジュンク堂いったひといる?
↑名前欄誤爆
> 誤爆 それバクダン
| | |⌒彡 |冫、) |` / ・・・ | / |/ |
| | | | 彡サッ | | | |
ものまね鳥ゲット
店頭には並んでるの?
並んでないよ
オライリー直販だけか まだseasonedやってるからいいけど
Karettaの立ち読み版って 書籍発売日の明日以降はどうなるんでしょう? 書籍と立ち読み版はガラっと違うらしいし 存続でしょうか?
145 :
デフォルトの名無しさん :2008/03/13(木) 18:11:15
Seasoned Schemerで未知の?キーワードletccなるものが出てきた のですが、Dr SchemeというかRS5Sでは定義されていないキーワード らしく、どう続けていけばよいか迷っています。これは処理系によって は使えるキーワードなんでしょうか?Dr Schemeに慣れてしまったため 、これを使い進めて行きたいのですが、ライブラリ?などで対応方法 はありますでしょうか?
call/cc = call-with-curent-continuation ↓ letcc
× call-with-curent-continuation ○ call-with-current-continuation
(define call/cc call-with-current-continuation)
(define letcc call-with-current-continuation)
152 :
デフォルトの名無しさん :2008/03/13(木) 18:39:49
>>146 ありがとうございます。そこに記載されているものを取り入れたら
動きました。ただ何のことやら分かりません。
call-with-current-continuation というキーワードが寿命を管理?する
みたいですが。
>>147 >>148 >>149 >>150 DrSchemeでもcall/ccというのはcall-with-current-continuationとしてdefine
されていて使えるみたいです。
>>146 さんに教えていただいたソースのcall-with-current-continuation
が重要なキーワードみたいです。
今はよ本読みだけで手一杯なのでletccを道具として使います。
もっとちゃんとしたければ (define-syntax letcc (syntax-rules () ((letcc var . body) (call-with-current-continuation (lambda (var) . body))))) (define-syntax try (syntax-rules () ((try var a . b) (letcc success (letcc var (success a)) . b))))
>>153 これらのキーワードは環境設定か何かを行うときに使うものですか?
Seasoned Schemerでは唐突にletccが出てきて、その定義も示すことなく
(call-with-current-continuation については若干登場してますが)
使用しているので、昔は当たり前のように使われていたんでしょうか?
define-syntaxという語のとおりシンタックス(キーワード)の定義に
使うためのものだとは察しますが。おいおい勉強してみます。
継続とマクロのないSchemeは癒し系
dssslのことか!
>>159 よかったぁ!
じゃあ107が書いてる「ネット公開止めた」書籍って何ですか?
(もちろんヌクヌク本は購入済み、本日発送メールがきました)
>>160 去年の5月に再構成して、今出てる書籍(フムフム本)と同じ構成になった。
公開版(立ち読み版)→再構成版(非公開)
再構成版は公開版からforkしたもの。
黒板バロスw
なるほど。継続という難しい概念があるんですね。
継続も要するにλだから構える必要はないと思うよ。
ググって色々読んだんですが、まだまだ悩む必要 ありそうです。概念が初めてなので慣れが必要ですね。 早くGauche本到着しないかな。
継続て唯のプログラムカウンタですか? プログラムカウンタを変数に代入できるって何が嬉しいんだろ
いいえ違います。 関数fから呼ばれた関数hも 関数gから呼ばれた関数hも 同じプログラムカウンタを持ちますが 違う継続を持ちます。
アドレスだったらわかるがプログラムカウンタって表現はちょっと違和感。
プログラムカウンタだけじゃなくて関数コールスタックの中身も全部保存するようなもんだ
ゲームのセーブ・ロードが、未だにイメージの基本になってるな、俺の場合。 Schemeの継続はさしずめ、「戦士がスライムAを倒して、これから魔法使いがスライムBにメラを唱える」 という戦闘シーンのど真ん中ですらセーブできるRPGみたいなもんだ、とかそんな風に。
ただ値が保存されるのではなくて 束縛が保存されるだけだから ロードした直後に開ける宝箱の中身は違うかもしれない
>>168 既存の概念に還元して、
新た強い概念を理解しようとする癖は直した方がいいよ。
そうしていると抽象的な思考がなかなか身に付かないから。
プログラムカウンタじゃなかったらなんなのよ
人生…かな?
いや、大いなるナニかだよ…
継続は継続だ とりあえず「なんでも継続」を嫁 強いて言うならプログラムカウンタというよりはコンテキストというか...
>なんでも継続 setjmpに還元してるけど、いいの?
ちゃんと読んだ? setjmpのようなものだが、どう違うかもちゃんと書いてあったように 思うけど。
Cで言うsetjmp/longjmpとか言い出す解説が一番困るよな。
182 :
デフォルトの名無しさん :2008/03/14(金) 14:15:08
固有値分解や特異値分解を行うプログラムを自分で組むのめんどくさいから どこかに落ちてないか探したら GSL for Lisp とかいうのみつけた。使ってる人は結構いるのでしょうか?
>>182 Maxima
ところで cl で規模が大きめのベンチマークって何かある?
tak じゃない奴希望。
Scheme好きはJazzが好きな奴が多いと思う。
微妙なミュージシャンを挙げると「そんなものはジャズじゃない」とかいって怒られそう。
プログラミングGauche今日発売だと思って本屋いったら どこも近日入荷予定だったorz
何故ジャズ? Schemerならプログレだろ?
アセンブラはバッハ(バロック) レンガ積むみたいに端から積んでく感じがいいよね
SchemerはKeith Jarrett solo か Bill Evansだ。
Cとかで再帰関数書いたときに、ローカル変数確保するスタック領域が足りなくなって、 スタックオーバーフローとかで止まる場合があるじゃないですか。 Schemeの継続ってローカル変数の確保以上にリソースを喰いそうなんですが、 継続のための領域もあふれたりすること、あるんですか? すごく阿呆な質問だったらすみません…
どんな言語でも記憶領域あふれさせるのは簡単だよ。 問題なのは継続が必要な時に十分に効率的かどうかって事。 けどそれ以前に継続についてよく学んでから考えてはどう? 知識のない状態で、いきなり効率ばかり考えるくせがあると、 単純具象バカになりやすいから。
Common Lispは豪華絢爛なイタリアオペラってとこか
>>191 不要な継続を後生大事にとっておけばそうなる可能性はある。
そうでない限りGCがなんとかしてくれるであろう。
195 :
191 :2008/03/14(金) 22:12:54
>>192 ,193
ありがとうございます。
どちらかと抽象ばっかり考える癖があるので、ちょっと実装に興味を持っているのです。
でももっとちゃんと理解してからにします。
とりあえず 質問する前に テンプレは読め。
何を読むんだw 書けば1行で済むのに (do ((i 0 (+ i 1)) (xs '() (cons (call/cc values) xs))) ((> i 10000) xs))
マクロ定義の中身について質問があります。 (define-syntax letcc (syntax-rules () ((letcc var . body) (call-with-current-continuation (lambda (var) . body))))) このマクロ定義の(letcc var . body)や(lambda (var) . body)に出てくる ドット記号はどういう意味なのでしょうか? 後者は継続を関数として定義しているように見えますが、varに何か値を与えた 場合、結果はどのように評価されるのでしょうか?
マクロ定義以外に出てくるドットと同じ。
まずは
>>3 を読んでくれ。
(a b c) : (1 2 3) → ((a . 1) (b . 2) (c . 3))
(a b . c) : (1 2 3 4) → ((a . 1) (b . 2) (c 3 4))
評価しない
>>200 consセルのドットですね。
>>201 Revised5を見てみましたが基本的なルールがわかりませんでした。
(call-with-current-continuation
(lambda (var) . body))
これは継続の定義で、確かに文法どおり1引数を取る関数
(lambda (var) . body)が書かれてますが、この表記の
意味が理解できません。通常の関数の一つとして
(lambda (var) (* 2 var ))ならば、((lambda (var) (* 2 var )) 10)
のように実行できます。上のマクロだと(letcc hoge 3)などとやると
確かに3に評価されるのですが、(lambda (var) . body))のvarにhoge
が渡されて . body が3になるということですか?
やはり(lambda (var) . body)の表記の意味がわかりません。
>>202 >
>>200 > consセルのドットですね。
それがわかっているのに何故
>>199 のマクロが理解できないか、
そっちの方が理解できないよ。
もしかして (lambda (a b . restargs) ...) も知らない?
>>202 (lambda (var) . body)
↓↑
(lambda (x) (foo x) (bar x) (baz x))
=(lambda (x) . ((foo x) (bar x) (baz x)))
→body = ((foo x) (bar x) (baz x)))
;;;;;;;;;;;;;;;;;;;
(lambda (var) body)
↓↑
(lambda (x) (foo x) (bar x) (baz x))
ミスマッチエラー
カッコ書いてるとふわふわふわと夢が広がりすなぁ( ^ω^)
例のGauche本でさわり始めたんだけど、VimでEmacsのc-x -eみたいにエディタ内から部分的に式を評価することってできないのかな? あと、(car '()) がエラーになるのは当然なんだけど、これでエラーが発生している行数って分からないものなの? 手続き型言語だとエラーの行数は極当然の情報だけど、これに一番戸惑っている。
パーズしたときに行の情報は失われる どのみちマクロ展開でテキストとの対応が取れなくなるだろうし
レスありがとうございます。
>>203 >>205 >>206 >(lambda (a b . restargs) ...)
これは分かります。
この場合、2個以上の引数を渡すことが出来て、1番目はaに2番目はbに
残りはリストとしてrestagrsに渡されます。
> (lambda (var) . body)
> ↓↑
> (lambda (x) (foo x) (bar x) (baz x))
> =(lambda (x) . ((foo x) (bar x) (baz x)))
> →body = ((foo x) (bar x) (baz x)))
lambda (x)がS式ということならば理解できます。
戻りますが、
(define-syntax letcc
(syntax-rules ()
((letcc var . body)
(call/cc
(lambda (var) . body)))))
(letcc x 3) が(call/cc (lambda(x) (x 3)))に置き換わって継続x
(今の場合何もしない)が実行されて3という結果を生じるのは間違い
なさそうです。これが正しい理解ならば、xはvarに置き換えられますが、
3が(x 3)になるのが理解できません。bodyが3になるとして、
(lambda (x) . 3)だと意味がわかりませんよね。。
211 :
208 :2008/03/15(土) 11:17:28
>>209 しかし、それなりの規模のコードを書いているときふとエラーが発生したら何を目印にしてデバッグすればいいの?
行番号がないLISPなりのデバッグ方法ってあるの?
(call/cc (lambda(x) 3))でも3になりますね。 (letcc x 3) ==> (call/cc (lambda(x) 3)) かもしれません。
gaucheは行番号持ってる。が、当てにならん……
>>210 (letcc var . body) → (letcc . (var . body))
(letcc x 3) → (letcc . (x . (3 . '())))
var = x
body = (3)
即ち(letcc x 3)は(call/cc (lambda (x) 3))に置換される。
(call/cc (lambda (x) 3))も(call/cc (lambda (x) (x 3)))も
同じ継続に同じ値を返しているから勘違いしたのでは?
さらに追加 (lambda (x) 3) → (lambda . ((x) . (3)))だから マクロのパターンマッチ時には構文とか関係なく リストの置換処理のみ行われる
テンプレートとの対比を考えれば (lambda (x) . (3))と書いた方が適切だったか
>>214 > (letcc var . body) → (letcc . (var . body))
> (letcc x 3) → (letcc . (x . (3 . '())))
理解できました。(パズルのようでした。。)
基本的な文法とともにSeasonedを進めていきたいと思います。
ありがとうございました。
>>215 >>216 紙に書きながら確認したのですが、確かにbodyが(3)なので
(lambda (x) . (3))になります。
. ( は省略できるので(lambda (x) 3)と同義ですね。
(lambda (x) 3) は要素が lambda、 (x)、 3 のリストということですか。
考え方はC言語のマクロと同じで単にラベル置換するだけでよいと。
スッキリしました。ありがとうございました。
>>211 Lisperがバグなんて出すわけないじゃん
フムフム本にはそこら辺について書かれてないのかな。
やっぱり宣言的にプログラムを組む事と 関数単位でREPLでテストを繰り返す事に尽きるのかな?
短い関数しか書かない!
ヌクヌク本来たぁ! 初版第1刷が何部出るか分からなかったから 布教用は買わなかったけど。
プログラミングGauche届いた。cbookにしておいて良かった。 これがヌクヌク本ですか?
店頭に並んだかな?
フムフム本でもヌクヌク本でも良いけど、カワハギ本とだけは呼ばないでくださいませ。
むしろフムフム本ヌクヌク本と読んでる奴等の方がキモイ件
ブーブー本ならいいのかな?
中甲本
Lisp/Schemeの初心者勉強会って需要ある? とりあえずIRCつかってやってみたいと思ってるんだけど
>>232 ここの人たちは経験豊富だから漏れのような初心者の質問は
申し訳なくて躊躇してしまう。結局答えてもらってるけどw。
他言語みたいに初心者スレがあれば相談しやすいんだが。
でも初心者スレに初心者しか集まってもしょうがないか。
分からなかったら聞くという形式がいいな。会社でも
勉強会とかやっても結局あまり意味は無いから。
>>232 IRCってやったことないけど
やってみたい
モレモレモ
236 :
232 :2008/03/15(土) 21:34:09
いくらか需要があるので irc.scenecritique.com port 6667 チャンネル #Lisp_Scheme クライアントはcottonあたりが誰でも使いやすいと思います (LisperならEmacsでつないだ方がいいかもしれませんが) なるべくつなぎっぱにしておきますが、サーバメンテナンス後とかは 誰もいない状況になるかもしれません ※IRCはつないだまま離席している人が結構いるので即返答はないことが多いです
Schemeでは手続きっていつコンパイルされるんですか? lambda式はreadの後、evalの前にコンパイルできるけど その評価された値である手続きはevalより前にはコンパイルできませんよね? それとも、CLだと「手続きを返す手続きがコンパイルされると、その返される手続きもコンパイルされる」から 「コンパイルされたlambda式は、コンパイルされた手続きを返す」とかになるんでしょうか? (そもそもCLの#'構文は手続きへと評価される式ではなく、手続きのリテラル表現?)
>>237 仕様を満たす限りいつコンパイルしてもよい。コンパイルしなくてもよい。
>>239 すみません、そういう話ですらありませんでした。
勘違いしてました。
237は忘れてくださいorz
wide系の#scheme-jpが過疎ってるんだけど、 暇なやつはこっちもつないでみれ どっちかというと雑談メインな気もするが
尼で"プログラミングGauche"の予約して、確か発送予定が今日ぐらいになってたけど… 今確認したら4/8-4/22とかになってた…。何コレ?初版割当分売切れ?(3/9予約した)
cbookに汁
>244 cbookには品切れって書いてある。すごい人気本だなw とりあえず本屋いってくるよ。
>>243 おれには今尼から到着。注文は1日前の3/8。意外と明日あたりくるかもYO。
(< 入荷数 予約数) だったみたい。キャンセルしちまった。尼の順位が200位以内に入ってたんだけどw
>>247 ありゃま。店頭にダッシュで買いに行かないと一ヶ月待ちかも。
まあ、あせることもないと思うけど。
おれのは修正された版が到着。
初版第1刷ってなってるけどw
shiroさん、Kahuaチーム、出版社のみなさんご苦労様でした。
とても丁寧な仕事にびっくりです。とても初版第1刷とは思えないです。
出版物って中の人しだいなんだな。
次の版では是非是非コンビネータのネタも入れて欲しいな、このスレ的にはw
あとチャーチ・ロッサーの定理とかチューリング完全性も触れたらよかったかな。
書かないまでも参考文献の紹介とか書くと初学者が勉強しやすいと思う。
そういう話はPracticalでない本で書くべき とっつきやすい本が欲しいのは同意
>>249-250 コンビネータって実用的な例を紹介するのがネックかもしれませんね。
あくまでもココ最近のこのスレのネタとして流行ってるだけかもしれないしw
Emacsの設定の話なんかも載ってて初学者に優しい構成なのに参考文献が載ってないのは要改善かな。
ある程度わかってくるとググルこともできるけど。現状、最初の言語にSchemeという人が少ないから無問題?
これからCommonLispかSchemeを始めようかと思ってるんですが、無謀ですか? (プログラミング経験はほとんど無し)
>>249 同意
>チャーチ・ロッサーの定理とかチューリング完全性
とかは別に他の解説書を見れば良い。実用的なプログラムをSchemeで書く
というテーマの本の方がよっぽど希少だし、貴重。
無謀だが、是非やってみて感想を教えてほしい
そんじゃ、あたいと一緒に逝ってみようか?
>>252 そんなことないと思いますよ。
自分も単なる趣味としてLisp/Schemeでプログラミングを学び初めてみましたが、
そういう趣向でも楽しめています。
将来的に真っ当なプログラマになろうというのだと、ちょっと違うかもしれませんが…。
真っ当なプログラマを目指してSchemeから始めてもいいんジャマイカ? 順序はどうあれ手続き型、関数型、オブジェクト指向、並列型などをどのみち学ぶんだし。 やりたくても高価で手が出なかった時代じゃないし、やる気と興味次第でどれから始めてもおk。
勉強してても、茂木先生の言うフロー状態になかなかなれない。
259 :
243 :2008/03/16(日) 17:12:23
電話確認して店頭に向かい、無事入手。 自分:「在庫確認よろしいですか?フムフムヌクヌクアプアア…」 店員:「…(プッ」 自分:「い、いや、あの、プログラミング ゴーッシュ、G. A. U. C. H. Eという本ですが」 自分:「あ、ISBN番号は...」 店員:(話を遮り)「オライリーの本ですね。ありますよ(はーと)」 有隣堂++
260 :
252 :2008/03/16(日) 17:17:44
>>254-257 レスどもです。ちなみに30過ぎのおっさんで、趣味でやろうと思ってます。
Practical Schemeのグレアムの翻訳記事を見て面白そうだと感じました。
先ほど、Gauche本買ってきて読み始めた所ですが、「本書の"主な"対象読者が
Schemeをやった事が無いけど、他のプログラミング経験がある人」と
書いてあって、若干出鼻をくじかれた所です。
Gauche本早く読みたいけど、Schemerシリーズがまだ終わってない。
うわあ、結構正誤あるなあ。もう少し待てばよかったかな。
本屋に予約してあったGauche本を取りに行ってきた。 丁寧に書いてあるみたいだね。
Windowsユーザーだからなぁ
Gauche本の「18章 構文の拡張」と「21章 デバッグ」、いままで欲しかった内容で感謝感激。 「18章 構文の拡張」はグレアムの「On Lisp」を考えて記述してあるので、読後On Lispへ進むこともできる。
>>265 本見たら、制限あるけどwinでも動くってよ
>>260 (・∀・)人(・∀・)ナカーマ
俺もそんな感じで最近プログラミングに挑戦してみようと思って、まずは
SICPをのろのろ読んでるところです。
学生時代に lambda calculi やら computability theory やらを少しかじってた
ので、Lisp系がとっつきやすいかな、と思ってSchemeに挑戦中なのですが、
そのほかのプログラミング言語の知識がほぼ皆無なので、Gauche本はもう少し
鍛えてからにしようかと思っています。
>265 前スレにwin神がうpしたバイナリがある
>>268 えっ、解説環境はLinuxなの?シーキビだな。
この間うpしてくれたWindows用のGauche使おうと
思ってたのに。
>269 漏れもSICP絶賛手間取り中なので、Gauche本読みはだいぶ遅れそう orz
>>265 MzSchemeやらないか
いまFFIのことを調べたりしてるんだが、意外と簡単そうなので
自分で好きなように拡張できると思う
>>269 >>272 並列して読んでもいいんじゃないか?
Gauche本の方は電車は風呂の中でも読める内容だろうし。
>>269 自分は逆にSICP読んでもチンプンカンプンで途中で挫折したので、
実践的なCauche本読んでからSICPに移ろうと思ってます。
LLかじってLispにたどり着いた感じ。
Gauche本ってScheme版のRails本みたいなのかと思ってたけど、 どっちかって言うとThe Ruby Wayに近い感じだった。 入門者は「第2部 Gaucheの基礎練習」をしっかり読めばSICPとかに進めます。 この本の売りはなんと言っても第3部の実用篇でしょう。 スクリプト言語としての特徴を詳説してます。 CGIあり、データーベースありで、Kahuaの基礎も学べます。
>>276 第3部はおもしろいな。15章でSXMLの説明があるのにはたまげた。
結局、活用範囲はWebかよ。。
なぜかMacのEmacsの写真w
WebアプリとただのWebサイト構築は違うけどね。
282 :
デフォルトの名無しさん :2008/03/16(日) 19:29:35
.emacsの設定をプログラミングGaucheのサポートサイトからコピペした。 でも日本語が文字化け。 gosh -V Gauche scheme interpreter, version 0.8.13 [utf-8,pthreads] (modify-coding-system-alist 'process "gosh" '(utf-8 . utf-8)) でダメだったので、以下も追加した。 (set-terminal-coding-system 'utf-8) (set-keyboard-coding-system 'utf-8) (set-buffer-file-coding-system 'utf-8) (setq default-buffer-file-coding-system 'utf-8) それでも、run-schemeでは文字化けします。 どうすれば日本語表記出来ますか?
日本語でおk
LispBox みたいな SchemeBox あるいは GaucheBox が必要だな。 Emacs とかライブラリとか全部込み込みのヤツ。
全部込み込みのパソコンにはWindowsが入ってるんだけどね。
Meとか98とか95とかNTでなければ coLinuxを使えばいいじゃない
おばかさん
288 :
デフォルトの名無しさん :2008/03/16(日) 21:01:28
282です。 解決策が見つからなければ、euc-jpのエンコードで再コンパイル→インストールしてGaucheを使います。
VMWareでFedora Core4でも大丈夫?
291 :
デフォルトの名無しさん :2008/03/16(日) 21:11:16
282・288です。 なんか分かってきました。 OSがVine Linuxだからのような気がしてきました。 他のディストリビューションならOKなのかな?
>>291 emacsがutf-8のBOM付きと無しの両方をちゃんと扱えるか確認してみろ。
BOM付きが扱えないだけならemacsの機能拡張に必要なものだけ落としてくればいいね。
VirtualBox+Ubuntuでmake&test通って問題なくインストールできた。 しかし肝心の本が届かない。
Gauche本5章に「5.2 マルチバイト文字の利用」とあるけど、 rubyのRSpecみたくプログラムから切り離すのが主流になってるから、 ちょっと逆行してるなぁ。本の最初の方で紹介するのイクナイ。
俺も読み初めたばっかりだが、貴方のいう事がよくわからん。 RSpecってナニ?マルチバイト文字の利用をプログラムから切り離すって? 逆行とは? Ruby ではマルチバイトの利用がもっと便利ってこと?
>>297 わからんならわからんでええやん。逝ってよし。
「逝ってよし」なんてすごい久しぶりに見た 年代モノだよね
>>299 激同。最近はググレが流行中w
そのうちgoogleもなくなるんだろうか?
RSpecはBDDなテスト用フレームワーク。
故に
>>296 はイミフ。
Rubyが文字列の扱いがCSIなことを言いたいんだろうか?
rubyで日本語を切り離すのGetText使うかな?まあ、スレちかな。
RSpecとマルチバイト文字か…。本人と
>>302 には理解できる関係があるのかな。
とりあえず
>>302 に説明希望。
もういいって。よそでやれよ。
2ちゃんねる的には、いいふいんきですね
dankogaiは1時間読んでSICPの副読本に最適と書いてるが。
_,,....,,_ _人人人人人人人人人人人人人人人_ -''":::::::::::::`''> ゆっくりしていってね!!! < ヽ::::::::::::::::::::: ̄^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^ ̄ |::::::;ノ´ ̄\:::::::::::\_,. -‐ァ __ _____ ______ |::::ノ ヽ、ヽr-r'"´ (.__ ,´ _,, '-´ ̄ ̄`-ゝ 、_ イ、 _,.!イ_ _,.ヘーァ'二ハ二ヽ、へ,_7 'r ´ ヽ、ン、 ::::::rー''7コ-‐'"´ ; ', `ヽ/`7 ,'==─- -─==', i r-'ァ'"´/ /! ハ ハ ! iヾ_ノ i イ iゝ、イ人レ/_ルヽイ i | !イ´ ,' | /__,.!/ V 、!__ハ ,' ,ゝ レリイi (ヒ_] ヒ_ン ).| .|、i .|| `! !/レi' (ヒ_] ヒ_ン レ'i ノ !Y!"" ,___, "" 「 !ノ i | ,' ノ !'" ,___, "' i .レ' L.',. ヽ _ン L」 ノ| .| ( ,ハ ヽ _ン 人! | ||ヽ、 ,イ| ||イ| / ,.ヘ,)、 )>,、 _____, ,.イ ハ レ ル` ー--─ ´ルレ レ´
とりあえずインストールはできた。VMware Fedora Core4
>>291 > 他のディストリビューションならOKなのかな?
fedora 8だけど問題ないよ.
"GNU Emacs 22.1.2 (i686-pc-linux-gnu, GTK+ Version 2.12.3)
gosh -V
Gauche scheme interpreter, version 0.8.13 [utf-8,pthreads]
gosh> (display "日本語表示テストです.")
日本語表示テストです.#<undef>
gosh> (string-ref "Scheme処理系" 8)
#\系
gosh> (list->string (reverse (string->list "アルゴリズム")))
"ムズリゴルア"
gosh>
すげえ関数考えたぞ! (omaemona itteyoshi)
式ですやん
Emacs22はUTF-8に対応してるけど Emacs21は対応してないってだけでしょ Mule-UCSを入れないと
というか、22以下は全部Mule-UCS入れた方がいいと思う。 入れるとビックリするほど遅いが。
Gaucheって [+ 1 {+ 3 4}] みたいに()以外の括弧も使えますよね。 これって単に見た目だけの違いなんでしょうか?
はい
scheme専用Linuxマシンとか作っちゃってる人いるの?
どういう意味で専用? schemeインタプリタ/コンパイラのためのシステムコールを作る特製の パッチ当ててるとか?
まるで悪いみたいな言い方だ
>>320 kernelでブートした後schemeだけで閉じてるってこと?(ってか少し前にlispだけの環境がブートするFDイメージの話があったけどあの系列?)
いや、完全に勉強用とか仕事用とかでSchemeを使うためだけに 新たにLinuxPC立ち上げてる人いるかなと思って。
うちのLinuxマシン(仮想マシンだけど)は、ほぼMaxima専用だ。
Javaはdeveloper releaseのための専用仮想機械もっているけど、 schemeは必要ないからそんな事してない。 (Javaはfirefox pluginとか、いろいろと生活環境と同じだと面倒くさい) /usr/localにsnapshotはいれてある。
いないか。VirualBox仮想マシン+Linuxにgauche入れたんだけど、仮想マシンが重い。 Pen4 3GHz、メモリ1GBでももう低スペックなのかもしれない。組みなおそうかな。
どんだけ〜
SchemeでデバイスドライバかけるLinuxがあっただろ。
それはもうLinuxではない気がする。 みんなでScheme OS作ろうぜ。w
Movitz でいいじゃん。
Schemix
Schemeで書かれたEmacsがあれば満足なんだ
つまり、コアがCではなくSchemeで、その上でelispが動くという訳か…
全部Schemeでおながい(/_;)
すみませんが教えてください。 Seasoned SchemerのP79の最初のパラグラフの英訳について Here are our thoughts: "When a (let ...) has two expressions in its value part, we must first determine the value of the first expression. If it has one, we ignore it and determine the value of the second expression. (let ...)構文のvalue part(名前付けの部分ではなく式の並び部分) についての説明ですが、If it has one, の部分がわかりません。 以下は予想訳ですが、正しいでしょうか? (予想訳) (let ...)がvalue partに二つの式を持っているとき、まず最初に 一番目の式を決定(評価するという意味)しなければいけません。 もし????ならば、それを無視して、二番目の式を決定します。 要は二つの式を上から順番に評価していくんだよ、と言いたいのだと 思っているのですが、If it has one, の it と one が何を指してるのかが わからず理解できません。it が (let ...)、 one が one expression のこと かなとも思ったのですが、そうすると以降の意味が分からなくなってしまいます。 読まれた方いましたら教えてください。
読んだ わからない おわり
>>331 あー、それそれ、ちょっと使ってみたけど面白かった(大昔のlispマシンの雰囲気味わえるんで)
>>338 MIT GNU Schemeじゃだめなん?
>>336-338 ng+scmってのはどうなんだろう?
>>339 もしかしたら
(let ((x 0) (y 0))
exp1
exp2)
の値は
exp1を無視してexp2になるってことかな?
コアがSchemeじゃないから違うか
>>339 If the first expression has a value
じゃないの?
>>343 そうだと思ってます。
そうだとすると、If it has one, の it は the first expression を指していて
one は、the value を指していると考えれば、辻褄は合いますかね。
(let ...)がvalue partに二つの式を持っているとき、まず最初に
一番目の式を決定(評価するという意味)しなければいけません。
もし一番目の式が値を持つなら、それを無視して二番目の式を決定します。
このように理解しておきます。レスありがとうございました。
>>345 時間差でした。
レスありがとうございます。
そう理解するようにしました。
>>339 は計算途中の値を表示させたりして考えながら読めない子なのか?
他の言語でデバッグとかの経験あるんだろうに。
>>348 英語の理解が正しいかということでしょ?
SchemerシリーズはSchemeを使って英語を勉強する本だったんだ
どんだけ〜
やっぱ2ちゃんやってるプログラマは馬鹿ばかり。 まともな奴はこんな2ちゃんなんてやってないだろうし。
馬鹿はお前だけ
スクリプト言語をちょっとやってた程度の初心者だけど、 プログラミングGauche買ってきた。 LispとかSchemeっていうとアカデミックで 高尚な言語という印象だけど、文体は平易で読みやすい感じ。 がんばる 私 Gauche
俺も今日プログラミングGauche買えたよ。
>>355 ガンガレ
>>277 どうもです。ありがたくいただきます。
なんか俺の環境だとglintうまくビルド出来なかったんだよね。
>>356 glintモジュールは対象ファイル名を標準入力から受け取る変な仕様で、
起動させるためのシェルスクリプトもshが必要。
なので、
>>277 のはglintモジュールに引数で対象ファイル名を渡すようにした上で
起動スクリプトをGaucheで書き直してmingw-exifyで変換してコンパイルしてある。
だからもしglint.exeからでなくglintをモジュールとして使うなら
オリジナルと非互換になってしまう。そのへんちょっと注意要。
Gaucheの拡張機能を使うと、意味論的には、どんな影響があるんだろ
男ならEdwin
男ならEdlin
>>359 shiro氏曰く「R6RSならモジュールを分けることで可能」。
R6RSって不評だと思ってたけど、良い事もあるのね。
でもちょっとCLっぽいかも。
>>145-154 でもdefine-syntaxがちょこっと出てきてたけど、
遅延とかマクロが判らないうちはこういう使い方しないでしょ?
普通に使う分には
>>358 の疑問は問題なしと言えるんジャマイカ?
フムフム本にWindowsでEmacs使うやり方書いてある?
>>341 MovitzはLispマシンの雰囲気あるかなあ…。
例えば、どの辺り?
今のところx86の上で直に動いてるちょっと変わったCL処理系って感じだけど…。
bootstrapとかmemrefとかwith-inline-assemblyとか
Interlisp-Dとか、Lispマシンと言ったらああいうのの事想像されるんじゃない。
>>363 書いてないよ。Meadowでもそのままいけるんじゃない?
368 :
346 :2008/03/18(火) 10:10:11
>>354 >一つ目の式がbottomになれば、つまり値を持たないなら、
>二つ目の式の値が何であろうと、let全体はbottomになる。
ありがとうございます。
これは理解していませんでした。
>> 366 >Interlisp-Dとか、Lispマシンと言ったらああいうのの事想像されるんじゃない。 漏れもそういう感じだなあ。 ベアメタルの上でLISPが動いてるだけじゃなくて、 なんというかOSも含めた総合環境が評価されていたのがLispマシンという感じ。 まあ、「bootstrapとかmemrefとかwith-inline-assembly」 あたりにLispマシンを感じるというのも正しいといえば、正しい方向な気もする。
ちょちょいのちょいっすよ
>>372 Gaucheネ申登場!てかノリが軽いなw
374 :
デフォルトの名無しさん :2008/03/18(火) 23:50:20
俺は *scratch* と maxima があれば満足だな。
ストイックなやつだな。俺は imaxima も欲しいね。
Gaucheの数学関数が複素数対応だからmaximaとかも同様の理由で複素数対応なのかね?
〜が対応だからとかあんまり関係ない。 さらに実装はCommon Lispだし。
X使わない派としては失禁寸前のカッコよさ。
>>379 懐かしい雰囲気だ。twmの設定をいじりまくってたことを思い出したよ。
つか昔見たsmalltalkマシンがそんなんだった。
マッキントッシュのモトネタだね。
つかstalltalkと入れ替えられたんだから。
ALTOはマルチOS運用のはしりだからね。
30、40代のおじさん達のスレでつね
>>378 にエミュレータがあるんだお?
ドゥザーなので出来なくて涙目なんだお…
>>387 そう思うのは無理もないんだけど、でも、Lispマシンに関しては、
懐古趣味だけで片付けられる話ではないと思うよ。
未だにLispマシンの統合環境の提供する快適さを超える
ものは少ないという人もいるし。
ただその統合環境は、初期の頃はともかく、 結局は専用マシンでしか発達せず、 淘汰されてきたことも忘れてはならない。 Gauche関連開発陣はその反省にたって、 汎用OS上の環境を整備しようとしているように見える。
>>390 なんで突然そこまで話が飛ぶのかがわからない。
ヒント:はじまりはMovitz
>>392 その話は俺が振ったんだ。そうか、それならしょうがないな。
好きなだけ話していいぞ。
SqueakってSmalltalk80風味なんでそ?
風味と言うかもろ今時Smalltalk。 例の色本以外にもいいテキストがあれば、 もっと普及しただろうに。> smalltalk
Movitzベースであんなものを作る人が出てきて欲しいでつ。
おニャン子クラブ世代は必ずいるはず。
うーむ。文法はともかく、Smalltalkそれ自体が体現する世界感はテキストでは学べないからなぁ…
Squeak始めて触ったとき、アランケイがニコニコしながら覗き込んでいるのを思い浮かべた。 ああ、こういうのを「ハック」っていうんだろうな、と思った。
オサーンばかりだな。こりゃ初心者は追い出されるわ。
最近a little Schemerにメチャ親切だぞ。
>>401 あ、ホントだ。これからもよろしくお願い致します。
初心者にとってはSchemerシリーズは一つの登竜門なんです。 しかもまわりにSchemeやってる人はゼロ。そんなの覚えて 役に立つの?なんてこともある。だからこのスレは貴重なんです。
Squeakは10年経つか経たないかでしょ。
>>401 最近、Seasoned Schemerに話題が移ってるな。
>>403 それわかる。Excel使ってるとき、ココでSchemeが使えればと思うことがある。
特に入れ子になった=if( , , )文とかみるとcondがあってホスイ。
>>406 ええ、今そちらを進めていますので。すいません。
> a little schemer schemersでそ
少なくとも漏れと208で2人居ますお
Siag Office懐かしす OpenOffice.orgやfirefoxのscheme bindingが欲しいなあ
>405 勉強中の漏れにはスゲー勉強になった
スレと関係ないけど、最近ググってもアマゾン楽天はてなばっかで 使いもんにならないと思いませんか?
>>415 Google Japan から検索してるからでしょ。US のを使ったら良いよ。
ふ〜む・・・どうも。 よくわからないのでググってみる。
>>405 マクロの出番がないなら、Javascript 辺りが説明用の言語としては良かったかも。
on~ で処理をつないでいくからクロージャはよく使う。
>>418 プロトタイプ指向じゃ食い付きが悪いだろ。
SchemeのためにROMライターで焼いて専用マイコンMacを作ってって、いつの時代だよw
Schemeのためにチップ作っちゃう人だって居ますからw
Gaucheもそうだが、CLもフリーな実装はUnix中心だよな Windowsがいいとはいわんが、移植性は大事だよな
lisp 系は image 生成の移植でつまづいて、 次に native thread の移植でつまづくの二段がまえだからな。
プログラミングGaucheの65ページで (define (tree-walk walker proc tree) (walker (lambda (elt) (if (list? elt) (tree-walk walker proc elt) (proc elt))) tree)) この中のlambdaの引数eltの意味が分かりません。 defineの中に出てきてない引数がいきなり出てきている点が いまいち納得できません。 単純なlambda式なら理解できるのですが、少し複雑になってくると、 理解できないです。 このeltはどういう意味なんでしょうか?
>>427 インデントが見づらいよ。下のようにすれば、elt が出てきてる所はすべて lambda 式の中に入ってて、
lambda 式の引数が elt だって理解できるんじゃね?
(define (tree-walk walker proc tree)
(walker (lambda (elt)
(if (list? elt)
(tree-walk walker proc elt)
(proc elt)))
tree))
>>427 (define (hoge x) (hage x)) は (define hoge (lambda(x) (hage x))) の構文糖衣であることを思い出せ。eltはいきなり出てきたんじゃなくてそこで導入されたんだよ!
tabとか押すと関数名入力とかアシストしてくれる環境って ありますでしょうか。
>>430 emacsにscheme-complete.elを導入する
>>430 slime + eclipse か slime + emacs
そこまで充実してなくていいなら、tag ファイル作るのが簡単で良い。
>>425 そこで誰かがC#でIronSchemeを作ると言う罠。
>>427 じゃないけど
(define tree-walk
(lambda (walker proc tree)
(walker (lambda (elt)
(if (list? elt)
(tree-walk walker proc elt)
(proc elt)))
tree)))
little schemerみたいに言うと、
tree-walkは3引数関数で最初の引数はwalker。
このwalkerは関数(lambda (elt))と treeを引数にとる2引数関数。
tree-walkの結果は関数walkerの実行結果。
で、いいんですか?
>>426 最初の障壁は GC の実装じゃないかな
/ \ / _ノ ヽ、_ \ / o゚⌒ ⌒゚o \ 今日もまた、SICP | (__人__) | タンポポのせる \ ` ⌒´ / 仕事が始まるお…
ミスった…けどいいや
SICP勉強中で、Schemeの美しさに感動中のものですが、ちょっと気になってる ことがあるので教えてください。 昔からJavaなどの言語で見た目が綺麗なコードって、関数型風っていうんでしょうか。 あまり手続きをずらずら並べた感じのものでは無いという印象を持ってました。 こういうJavaなどの手続き言語によって書かれた美しいコードは、Schemeなどの 関数型言語のラムダ式を基礎としたものと等価と考えてよいのでしょうか? きちんと構造化されており、変数のスコープも最小限度になっているコードという のはSchemeによって書かれたコードと等価な気がするんですが、勘違いでしょうか。
Seasoned Schemer P101 の The Seventeenth Commandment の意味がよくわかりません。 パターン@ let式とset!式の間にlambda式がある define gobbler (let ((x...... (lambda (food) (set! x ...... パターンA let式とset!式の間にlambda式が無い define nibbler (lambda (food) (let ((x...... (set! x ...... P101の So why is it unimaginable? に対する回答がlet式とset!式の間に lambda式が存在していないからだよとなっていますが、これが何故いけない のでしょうか?上記パターン@が良くてパターンAがいけない理由を教えて ください。 また、P100の What is the value of nibbler? に対する回答がUnimaginable となっていますが、僕はIt is a function.と答えられる気がするのですが どうでしょうか? よろしくお願いします。
>>439 世の中に広まっている変な物に迎合できる人材は、好きな物を好きなように
作りたい人材に比べて貴重だということだね。w
SchemeでSchemeを作るみたいな人は多いでしょ その次の段階でなんか壁があるでしょ
>>422 おれはLittle SchemerのためにPalm Z22買ってLispMe入れた。Littleだけど快適。
W-Zero3にPocket-Scheme入れてる。
OpenBSDザウルスにGauche入れてる
Nintendo DS に DS Gambit-C 入れてる
工人社SHにMeadow3.0入れてる
>>453 マジコンも用意しないといけないんじゃね?
AppleがDSをiPoneのライバル視してるのわかるな。Gaucheとか動いちゃったらすごいな。
ノキアのSymbian60用のScheme探してるのですがなかなか見つかりません…(・ω・)
イポッド・タッチ(藁)
アイポン!(・∀・)イイ!
ipod nano に ipodlinux入れてScheme使えば最小なんジャマイカ?小さ杉ても使いにくいわけだが。
ユビキタスScheme世界へようこそ!
ものすごいスピードでPDAでプログラミングしていた人が一言 「指、きたッスwwww」
× 大切り ○ 大喜利
NEO1973はGSMだから日本で使えない。iPhoneもだけど3Gチップが出来るまで待ちだね。
Schemeさえあれば、電話もネットも要りません。w
Squeakはいつも仕掛けるのが早いですね。
VMがコンパクトで移植性が良いんだろうね
_ ∩ ( ゚∀゚)彡 Scheme VM!Scheme VM! ⊂彡
iphone VS NEO VS Palm VS DS
たまにはPSPのことも思い出してあげてください
俺のNokia6630・・・・(TωT)
ザウルスも思い出してあげて
しかし小さい画面で不便感じないかな。 どんな使い方してるんだろ。
そうかSqueakって最初からダイナブック(東芝じゃない方)
最初からDynabookの流れなんだな。きっと。
>>477 自分は自宅鯖にOpenBSDザウルスを使ってる
モバイルの意味ねー
>>453-454 USのDRMだかの絡みでマジコンはそろそろ日本でも消える、
というか任天堂がマジコン販売店に内容証明郵便送りまくってるから
買うならお早めにどうぞ。
ちなみにPythonも動いてる。
でもキーボード無いから単体じゃ開発は無理だぞw
DS LuaなんてのもあるからLuaも移植簡単なのかな。
Luaは移植性と組み込みやすさを念頭において開発してるからね。 DSのPythonは本家じゃなくてStacklessが移植されてる。 本家はnative threadとか色々めんどいし。
LuaはANSI Cさえあれば動くらしいね
Luaの場合は移植性の面倒事をANSI Cが引き受けてるのかな? Schemeコードも一旦パーサーでANSI Cに書き出してやれば直ぐに動かせる?
セドリ屋がScheme入門8600円で出してる。たけえ。
プログラム書いてたら横から覗かれ、フト気が付くとそいつが踊っていた。 「何してんの?」 「踊ってやってんじゃン」 「だからなんで?」 「ランバダって書いてるじゃン」 「え?・・・Lambdaのことか?」 「ランバダ!ランバダ!イェー!」 「・・・Lambdaのバカ・・・」
>>485 Cを高級アセンブラみたいに位置づけて考えるならそうだね。
gccのポータビリティーでかなり吸収できる。
Kyoto Common Lisp以来の伝統芸だな
現実的に今使えるのはZaurus(Gauche)とPalm(LispMe)、あと今後可能性があるNintendo DS(DS Gambit-C)の3つか。 より安価なハードに今後も移行していくんだろうな。将来性があるのはLinuxベースのLiMoとかNEOか。
うはーw夢がひろがりんぐww
>>491 Zaurusは大抵の処理系が何もしなくても動くだろ。
>>493 なにもしなくても動けば結構なんだが、実際は結構手を加えてる。
ZaurusもLinuxベースだからLinuxベースのLiMoとかNEOでもGaucheは動くんジャマイカ、常考。
schemeでmaximaに相当するものってあるのでしょうか?
ありません
>>495 それで動かなければ何もしなくても動くとは言えない罠w
>>485 ANSI Cが引き受けてるって事じゃなくて、
処理系書く時には、メモリ利用、速度、起動速度などの効率を考えて、
いろいろ工夫をしたくなる。例えばANSI C未定義の振る舞いを利用したり、
プラットフォーム依存のAPIを使ったり。ANSI Cの範囲内でやるのを重視するか、
他のことを重視するかは処理系設計の問題。
ANSI Cがやるべきことを、ANSI Cが引き受けてるのは何でも同じ。
>>493 それが意外と動かない。
バイトオーダーが違うだけで駄目な処理系も多いし、
ヒープをダンプする仕組みがあると結構苦労する。
それから、過去レスで、メモリ空間の配置の違いで起きる
GCのバグが発見されたことがあったでしょ。
>>500 下の二行を書く意味が分からない。
その対比は危険だという記事の主旨とは反するのに。
「何も手を加えずとも○○で動く」といっても 開発者があらかじめ手を加えてるから動くものと POSIX+ANSI-Cの範疇で書いてるから動くものとある罠。 PS2LinuxでUnix系を覚え Debian玄箱を鯖に使い OpenBSD-Zaurusを現在常用する為 必要以上に移植性を気にするようになってしまった。 PPC-OSXもXPもi386-Debianも持ってるんだけど メジャー所の環境でしか動かないorバイナリしか提供されないものに食指が動かない。
とにかく速いのが欲しい人と、どこでも動くのが欲しい人がいる 後者は「自分で作れるでしょ」ってことで放置されているのでは?
ソフトが移植されると生産終了が世の常。
508 :
505 :2008/03/21(金) 21:43:25
>>507 俺もそう思ったから書いたんだよ。何か問題?
日本語でおk
すべてのレスは反論だと思ってる人が来たみたいですね
>>510 大人の世界では「ナカーマ」というのをああやって言い合うらしいYO!
letcc の説明ワカラン orz
同意に二重否定の反語形が元になっている慣用句を使うのも珍しいなあ。 二重否定と言えば、俺はremove-if-notをpreserve-ifに直したくなるなあ。 *-if-not系は混乱しちゃうんだな。
「細かい事は気にするな 「混乱する様な部分は歴史が古い証拠 どっかの古参リスパがそう言っていましたよ
>>498 これはおいらのWZero3[es] で動きますか?
Seasoned Schemer のp.44の4番目のパラグラフがかすれてて読めないので教えてください。 4番目:「And it is what ・・・」
>>515 ちょっと手を加える。そのサイトのどっかに書いてある。
Pocket Scheme はなぜ出てこないんだろう?
>>514 『"historucally reason" てのは
「海より深いわけがあって」と訳すんだ』
って, 教えてくれた先輩がいたのを思い出した
historucally reason, scheme programming is fun!
アニメネタ禁止
528 :
デフォルトの名無しさん :2008/03/22(土) 00:44:01
>>527 >16章あたりは、おれには変態コードにしか映っていないw
Y! (=Y-bang)
> 変態コード Schemerシリーズ読んでも実践的には意味が無いってこと?
あのくらい分からないで実戦も糞もない。
変態だって実践に役に立つんですよ。 変態に対する偏見は捨てましょう。
アッー!
プログラミングGaucheのほうが全然簡単だわ。
>>527 >左側
>And it is what we got.
>右側
>Amazing! We did not do any intersecting at all.
ありがとうございます。
Seasoned Schemerの13章ぐらいまででYコンビネータとletrecの比較やletcc使った継続がでて来る。
Little Schemerの9章でYコンビネータの理解が不十分だったからちょっとムズかった。
その後にも
>>529 の書いてる変種のYコンビネータが出て来る。
Seasoned Schemerの主題は継続とクロージャーの理解。
これがわかると
>>405 のクロージャとオブジェクトも理解できる。CLOSに発展する話。
さらにReasoned SchemerでProlog入門を勉強した。Little Schemerの10章の発展版。
3冊通して話が出来てるからSICPとはまた違った楽しみがある。読んでよかった。
だれか翻訳汁
YコンがSchemeの働きを理解するために重要ってことでおk?
日本語でおk
Yコンビネータうざい ((lambda (f) (f f)) (lambda (f) (lambda (n) (if (= n 0) 1 (* n ((f f) (- n 1))))))) でいいじゃん
>>541 それでいいんじゃん。Littleは使い方ではなく仕組みを説明する本。勘違いするな。
Littleで仕組みを理解して、SICPで使い方を覚えるって感じか。道のりは遠いなw
1966年にP.J.LandinがISWIMという言語を作ったのがその起源で、SASL, Mirandaという後継言語を経て、HaskellとCleanが生まれました。 これらは、全て「遅延評価」を評価戦略におくプログラミング言語であり、「純粋関数型言語」と呼ばれるグループです。 ISWIM は、ラムダ計算の関数型コアを命令型言語の糖衣構文で包んだものである。 変更可能な変数と代入と強力な制御機構として Landin の J 演算子を追加してある (J演算子は継続を可能としたもので、Scheme の call/cc は J 演算子を簡略化したものである)。 ラムダ計算に基づいているので、ISWIM は高階関数とスコープ変数を備えている。 このラムダ計算と等価なコンビネータ理論にYコンビネータは含まれます。 だからSchemeの継続の説明にYコンビネータが使われます。
桶屋が儲かる まで読んだ
たいていのプログラミング言語は exit や return, 果ては goto のような名前の専用の脱出コンストラクトを 一つ以上採り入れている。 しかし,1965 年 Peter Landin は J 演算子という 汎用の脱出演算子を発明した。 John Reynolds はより単純だが同等に強力なコンストラクト を 1972 年に記述した。 Sussman と Steele によって 1975 年版 Scheme 報告書に 記述された catch 特殊形式は,Reynolds のコンストラクトと正確に 同じであるが, ただしその名前は MacLisp の中のある汎用性の低いコンストラクトに由来している。 何人かの Scheme 実装者は,catch コンストラクトの完全な強力さを, 特別な構文のコンストラクトによるかわりに, 手続きによって用意できることに気付き,名前 call-with-current-continuation が 1982 年に新造された。 一部の人々は call/ccやletcc という名前をかわりに使っている。
J 演算子とYコンビネータは関係なくね?
>>528 (・∀・)人(・∀・)ナカーマ
でもまだp.40ぐらい。
Gaucheでtanhが使えるので重宝してる。シグモイド関数結構使うんだよね。シンク関数も入ってるともっと良かった。
>>442 パターン@はgobblerの定義時の1回だけxが導入される。
パターンAはnibblerが呼び出されるたびにxが導入される。
553 :
デフォルトの名無しさん :2008/03/22(土) 16:29:46
>>552 レスありがとうございます。
gobblerも呼び出す度に、let式で毎回xには評価された値がセットされる
わけではないということなのでしょうか?
ただ、パターン@もパターンAも結果的に効果は同じのように思えるのですが
nibblerとgobblerを比較して何を言おうとしてるのかわかりません。
P101に以下のQAがあります。
Q
So what was the use of (let ...)
何がlet式を使用したのか?
A None. If (let ...) 省略 , they don't help us to remember things.
何も使用していない。もし、let式とset!式が間にlambda式無しで使用されるならば
あるものを記憶することの役には立たない。
パターン@だと値を保持しておくことができて、パターンAではできないと
いう意味だと思いますが、そうすると、パターン@(gobbler)を呼び出す度に、
毎回xには評価された値がセットされるわけではなく、gobblerを実行する度にxには
最後にset!された値が保持されているということになるのでしょうか?
554 :
552 :2008/03/22(土) 17:07:20
>>553 その本もって無いから意図はわからんが、
そのふたつのパターンの効果は同じではない。
たとえばこういう定義をしたとして、
(define gobbler
(let ((x 1))
(lambda ()
(set! x (+ x 1))
x)))
(define nibbler
(lambda ()
(let ((x 1))
(set! x (+ x 1))
x)))
それぞれを何度か評価してみると出てくる値は違う。
(gobbler) ⇒ 2
(gobbler) ⇒ 3
(gobbler) ⇒ 4
(nibbler) ⇒ 2
(nibbler) ⇒ 2
(nibbler) ⇒ 2
これがわかってないってことはlambdaがわかってないってことだぞ。
100ページまで読んでその程度とはずいぶんのんびりした本だな。
>>554 たびたびありがとうございます。
例に挙げていただいたgobblerのほうでは
let式でのxへの1のセットはgobbler定義時に一度だけ
ということですね。nibblerには疑問ありません。
let式の内部名(x)に評価された値(1)がいつセットされるのかがわかってませんでした。
>100ページまで読んでその程度とはずいぶんのんびりした本だな。
いえ、著者は説明してるはずですが自分が読解できてないだけです。。
let式の内部名(x)はC言語などでいう自動変数だと 思ってたのですが違うんですね。変数のスコープとか let式の評価のタイミングとかが分かってないと思います。
558 :
552 :2008/03/22(土) 18:01:46
変数のスコープはletのbody部を抜けるまでだけど、 Cとかと違って寿命は無い。 無限に存在し続ける(かのように振舞う)。 これはJavaScriptとかでも同じ。 無限エクステントと呼ばれている。
>>557 ありがとうございます。
もうクロージャという領域の話しなんですか。
確認しておきます。
>>558 >Cとかと違って寿命は無い。
>無限に存在し続ける(かのように振舞う)。
なるほど。Cでいえば関数ローカルのなstatic変数
みたいなものですかね。
560 :
552 :2008/03/22(土) 18:37:55
>>559 > なるほど。Cでいえば関数ローカルのなstatic変数
> みたいなものですかね。
「みたいなもの」とかいう形で理解するのはやめた方がいいぞ。
本質的に違うものを置き換えて理解してるとそっちのスタイルに
引きずられる。中途半端にしかわからんようになって破綻する。
無限エクステントって、Common Lisp やScheme(Gauche)ではサポートしてるけど、Emacs Lispではしてないんだよなぁ。
昔のLispはダイナミックスコープだからね
glint使うとExcelイルカみたいに変なオジサンが登場して説明しはじめる機能はOFFに出来るの?
>>560 確かに対比すると混乱するのでやめます。
gobblerとnibblerの違いは
>>557 のクロージャの説明で理解できました。
関数gobblerを定義する。
クロージャ
→lambda式
→環境 (x = 1)
を生成する。
gobblerを一度実行する(クロージャ実行)と、lambda式を評価し環境を(x = 2)に更新する。
gobblerを再度実行する(クロージャ実行)と、lambda式を評価し環境を(x = 3)に更新する。
関数nibblerを定義する。
クロージャ
→lambda式
→環境なし(局所変数は無いので)
を生成する。
nibblerを一度実行(クロージャ実行)すると、lambda式を評価する。
nibblerを再度実行(クロージャ実行)すると、lambda式を評価する。
ということですね。
565 :
552 :2008/03/22(土) 20:32:01
>>563 変なオジサンいうなw
誰だかわかって言ってるのか?wwww
>>563 あれ、単にデモ用に作っただけなので、glintには入っていません。
環境なしというのはおかしいですね。 nibblerではlambda式を評価するときに環境(常に x = 1)があります。 (その環境の下でlambda式が評価される)
568 :
デフォルトの名無しさん :2008/03/22(土) 21:03:17
(define func (lambda (x) ......)) のような大域関数を定義するということは、クロージャを生成してる と考えてよいのですか?
569 :
デフォルトの名無しさん :2008/03/22(土) 21:11:19
Gauche本62ページに手続きオブジェクトととして説明がありました。 クロージャに名前をつけているだけでした。
>>563 shiroさんカワイソスw
gobblerは環境(x=1)を持ったlambda式を定義して
それにアクセスすることによりx=2,3,4...となっている。
nibblerは単にlambda式の中にローカルな変数を作ってるだけね。
やっとAmazonからgauche本のお支払い番号きたーーーーー
いや、shiroさんが変だというのではなくてさ、 あれ、キャラが一人歩きしてるじゃん。変なオジサンというキャラで。てか狙ってるだろw あの機能は実装してくっ付けるとシュールでいいんジャマイカ? 気分害したら何なのでキャラは変更できるようにしておくとかw
>>570 理解できました。ありがとうございました。
cbook24に入荷したみたいだな。24時間以内発送だって。
>> 572 動かすのにWebカメラが必要なのと、あまりに実用性 なさ過ぎなのでglintには含めることはないのですが、 あのキャラクタ表示プログラム自体はGauche-ARToolKitの example/avatar/ に入っています (さすがに顔はへのへのもへじに変更してありますが)。 avatar.scmを起動するとポート12345で待ち受けるので、 telnetなりなんなりで接続して以下のコマンドを送りつけると いろいろ動きます。 (show-avatar) ;; キャラクタを表示する (hide-avatar) ;; キャラクタを非表示にする (show-text) ;; テキスト画面を表示する (hide-text) ;; テキスト画面を非表示にする (clear-text) ;; テキストを消去する (say n text) ;; n行目にtextを表示する(UTF-8で送れば日本語もOK) (right-arm n) ;; 右手をn度上に上げる(0が水平) (left-arm n) ;; 左手をn度上に上げる(0が水平) (head n) ;; 頭をn度回転させる(0が正面) あと、256x256のSGI RGB Imageフォーマットで face.rgbを作れば顔のテクスチャが変わります。 Wavefront形式のOBJ&MTLフォーマットを読める ようにしてあるので、自分でモデリングすることも 一応できます(プログラムも変えないと駄目だけど)。 デモではglintの出力結果を正規表現で日本語に変換して 適当なモーションを付けてavatar.scmにつなげました。
>>575 思った以上に細かく動かせるので笑えました。
プレゼンの隠し味的に使うのが流行ると面白いですね。
>>575 Lispコミュニティはアカデミックで凄い感じの人が多いけど、
glintの中の人は別の意味ですごいなw
次回も期待してるぜ!
glintのデモ見てSchemeの勉強初めたんですが、標準ではあの動きはないんですか…ちょと残念。 「使ってみたくなるlint」というのは斬新ですね。
現実世界じゃLispを使っている人をあまり見かけないけれど ここだとずいぶん人気があるんだね。驚いたよ。
初めてのプログラムにLispを選んだぜ よろすく
質問です。 gaucheでもって、Cで言う printf("%10.3f", x); みたいなことは、どうやればできるのでしょうか。 schemeの勉強がてら、stlファイルを読んで、vtkファイルを生成したろ、と 思ったんですが、バイナリファイルを読むのは簡単だったのに、ASCIIファイルを 書き出すのにつまづいてます....orz
582 :
552 :2008/03/23(日) 21:53:25
マニュアルをちゃんと見れと言うのは同意だけど 学ぶ気が無いとかイライラするのもどうかと思うよ。 マターリいこうぜ。 まぁ本当にただの教えて君だったらスルーすればいいだけのこと。
>>579 そこは現実世界じゃない。早く目を覚ませ。
lambda と書かれた赤いピルを服用するんだな
>>582 「gauche(のformat)には、実数のフォーマット出力機能はないから
SLIBのprintf系使っとけ」ってことですね。どもです。
「せっかくformatがあるのに、部分的にprintfかぁ」
っと思ったら、gaucheのformatには無い「F」のフォーマット指定子がSLIBのformatには
あることを見付けました。
http://www-swiss.ai.mit.edu/~jaffer/slib_4.html#SEC57 (use slib)
(require 'format)
(format #f "~10,3F" 32.4)
=> " 32.400"
formatかprintf系か、どちらかで統一してコードを書いていけばよいのだと思いますが、
とりあえず、formatで統一して書いてみることに挑戦してみてから、どちらがいいか
考えてみます。
似てるけど決定的に違うもののリスト
Scheme ⇒ define:letrec :無限エクステント
Common Lisp ⇒ defun:labels:無限エクステント
Emacs Lisp ⇒ defun:labels:ダイナミックスコープ
>>442-573 みたいな話はLisp系でも処理系によって結果が異なるからポートするときは要注意!
安易にdefine⇒defunとかletrec⇒labelsとかやりがちw
それを言うならC++とJavaとC#のclassも要注意ではないのか
590 :
552 :2008/03/23(日) 23:41:44
>>586 Gaucheに限るならwriteをカスタマイズすることも出来るでよ。
(define-class <num10-3> ()
((n :init-keyword :n :init-value 0 :getter n)))
(define-method num10-3 ((num <number>))
(make <num10-3> :n num))
(define-method write-object ((object <num10-3>) (port <port>))
(let ((num (n object)))
(format port "~10d." (truncate->exact num))
(format port "~d" (- (truncate->exact (* 1000 num))
(* (truncate->exact num) 1000)))))
(format #f "~a" (num10-3 32.4))
>>589 ある意味重要かも。
ちゃんとマニュアル読めばわかるはずなんだけど、
クラス指向のオブジェクトシステムとは全然違うって
ことを意識してないと絶対混乱する。
通じてないなw
マニュアル読んだけどワカンナカッタンダモン -― ̄ ̄ ` ―-- _ , ´ , ~  ̄、"ー 、 _/ / ,r _ ヽ ノ , ´ / / ● i" ,/ ,| / / _i⌒ l| i | と,-‐ ´ ̄ / / (⊂ ● j'__ | (´__ 、 / /  ̄!,__,u● |  ̄ ̄`ヾ_ し u l| i /ヽ、 ,_ \ ノ(`'__ノ (__  ̄~" __ , --‐一~⊂ ⊃_  ̄ ̄ ̄ ⊂ ̄ __⊃ ⊂_____⊃
図星だったぽい・・・
598 :
583 :2008/03/24(月) 00:04:02
クマ泣くなw あと俺は592じゃないよ。
誤解が解けて嬉しい
601 :
583 :2008/03/24(月) 00:07:30
ん?591でもないんだがな。
クマ、純粋だなw
マジレスすると、要注意っぷりを参考にするんだ 特定の言語によらない抽象的なものの考え方が必要なんだ
バカの壁w
>>605 そうやって相手は馬鹿だから…と納得しようとすることこそが馬鹿の壁なんだよ
よくある誤解だけど
KY
KY combinator
「○○○の考え方が必要なんだ」とか押し付けがましいこと言える奴って自分を傲慢とは思わないんだろうなw
Lisp Scheme からだいぶそれてるなw
>>610 まぁ、そんなんで「押しつけられた!」とか思う奴がいたらビョーキだし、
ビョーキの人の言うことを気にして「何も意見を言わない」方針をとったってしょうがないからね。
>>539 正直、
> YコンがSchemeの働きを理解するために重要
ってことはない。
しかしYコンビネータさえ理解できない人間は、
Schemeを使いこなすのは厳しいだろう。
>>613 その「Schemeを使いこなす」はどの程度を言うのかはっきりさせてくれないと
肯定も否定もしようがない。
仕組みを理解する(
>>542 )と言っても、
それはλカリキュラスの仕組みであって、
Schemeは再帰にYコンビネタ使ってないしねえ。
>>613 がSchemeを使いこなして何やってるのかが気になる。
Yコンビネータの導出が数学の証明問題に似ていると感じるんですが。
やっとAmazonからgauche本 発送されたああああああ
621 :
216 :2008/03/24(月) 19:54:58
>>620 ミスプリの修正は間に合ってませんでした、ってオチで。
ってぇか未だ増えそう。もう落ち着いたの?
>>621 ミスプリの修正は間に合ってなくて、でも追加(glintとか)があって第二版になってたらいいのにw
Gaucheのlet/ccってマクロスダタノカ orz
じくうようせいと学ぶ・・・
>>618 トイ・プログラミング以外で、
Yコンビネーターで再帰関数定義する人なんてほとんどいないでしょう?
コンパイラを作るときなんかには、 そういう形式が便利なこともある。 直接Yコンビネータな形でプログラムを書かなくても、 使われて無いとか、役に立たないってことは無いんだよ。
猫にコンパイラ・・・
ぶどう畑で、たわわに実ったおいしそうなぶどうをキツネが見つけた。 食べようとして跳び上がるが、ぶどうの房はみな高い所にあり、届かない。 何度跳躍してもついに届かず、キツネは怒りと悔しさで、 「どうせこんなぶどうは、すっぱくてまずいだろう。誰が食べてやるものか」 と捨て台詞を残して去ってゆく。 手に入れたくてたまらないのに、いくら努力しても手が届かない対象(人、物、地位、階級など)がある場合、 その対象を価値の無いもの、低級で自分にふさわしくないものとみなす事であきらめ、心の平安を得る。 フロイトの心理学において防衛機制、合理化の例として有名。 また、英語圏において"Sour Grapes"は「負け惜しみ」を意味する熟語にもなっている。
オマエラには高度すぎて例え話がお似合いだそうです。
例え話≠イソップ童話
イソップうううううう!!!
愛は奇蹟を信じる力よ
108−0
636 :
629 :2008/03/25(火) 00:50:53
いや、そんなことはいいからw Yコンビネタをコンパイラでうまく使ったケースを教えてくれ。 昔、SKIYコンビネタの処理系や Lisp1.5風で再帰だけYコンビネータ使う処理系を作ったことあるが、 Yコンビネタに変換するところが一番面倒。 プログラマがYコンビネタを明示的に使うのはプログラミングが面倒だし。 しかも再帰の展開遅くてメリットなし。 環境/シンボルテーブル・ルックアップで、 再帰を実現した方がよい。 部分計算でインタプリタからコンパイラを導出するような研究でも、 Yコンビネタを有効に使ったのはまだ見たことない。 面白いのがあれば論文を教えて。
なんか喧嘩腰の人だなあ
ここでシャルル・ペローの童話からうまいこと言う ↓
才能無いんじゃねえの常考。
ゼロの人間なのか?
>>629 が関数型では効率の悪いアルゴリズムに精通していないに1000点
Yコンビネータを活用出来なくても許されるのは中1までクマ。
英語読むのしんどいからどの程度のことができるのか説明してよ
>>646 "recursive monadic bindings"に萌えた
>>646 正直、そういう用途なら hook とか advice みたいな仕組みのほうが有効だと思う。
直接呼び出す場合ならいいけど、間に他の関数が入ったりすると困難になりそう。
そういう使いかたは思いつかなかったから、面白かったけどね。
と・ ・つ |Y|
YコンビネータのYにはどういう意味があるんだ?
ワイはコンビネータや。
で敵はXか
ちょwできすぎww
ひょっとしてコンビネータ猿?
旗包み(closure)
プログラミングGaucheの第2刷ってもう出てんの?
ここのスレ住人は ocaml やら F# には興味ないんですか?
たとえあったとしても、それぞれに該当するスレで書き込んでるんじゃないの。 すれ違いになるジャン。 ってか、人それぞれだろ。
比較した意見は聞いてみたいな。自分はHaskell勉強中だけど、Haskellが いいと思うのは、型の存在かなぁ。 自分は関数型まだまだ初心者なんですけど、Lisp、Schemeの人々って 型についてはどう考えてるんでしょうか?Schemeは凄い美しいと思うんですけど その辺の融通無碍なところは現実の開発の時に結構厄介じゃないかな、とか 思ってしまうのですが。
>>659 何が言いたいのかわからんが、common lispは型指定できるし、
高度な最適化がされるコンパイラでは型推論もするぞ。
Scheme の処理系独自で型を指定して高速化するような処理系もある。…とおもった。
Haskellの型はある種の正しさを証明する手段だけど、 CommonLispの型は高速化(チューニング)の手段と考えられていると思う。 それぞれの言語で型に対する姿勢も違う。
Haskellユーザーの
>>659 の言ってるのはたぶん一般的にSchemeはコンパイル時に型チェックされないと思われてるということかな?
Scheme のテストコード書いたり、簡単な実行したりコードさらしたりするにはここへカモン。
http://codepad.org/ コードを書いて実行した時のURLを記録しておけば、
実行結果も一緒にさらす事が出来て幸せです。
>>663 ((lambda (x) (+ x 1)) 0)
結果がでない orz
>>663 Schemeインタプリタみたく、評価した式の値も表示してくれるのかと思いきや、
Outputに出てくるのはstdoutに書き出した内容だけなのね;
>>665 d。改行がメンドクサイねw
(define Y
(lambda (X)
((lambda (procedure)
(X (lambda (arg) ((procedure procedure) arg))))
(lambda (procedure)
(X (lambda (arg) ((procedure procedure) arg)))))))
(define (Fact my-fact)
(lambda (n)
(if (= n 0)
1
(* n (my-fact (- n 1))))))
(define fact (Y Fact))
(define (Fib my-fib)
(lambda (n)
(if (<= n 1)
1
(+ (my-fib (- n 1))
(my-fib (- n 2))))))
(define fib (Y Fib))
(display (fib 10))
(display "\n")
(display (fact 10))
669 :
デフォルトの名無しさん :2008/03/26(水) 05:48:47
自分がSchemeやってるときに、同級生のHSP厨が 「何その括弧だらけのソース(笑)、もっとゲームとか実用的なもの作ればぁ?」 どう対応すればいいですか・・・
苦笑
鼻で笑って終了
括弧がどうのというのは未経験者のお約束として、 ゲームに対して「実用」っていう表現が出てくるのが実に子供らしいと思った。
HSP レISP LISP
HSPは実用的だったのか。
実用かどうかはわからんけど、ゲームの中身は意外と馬鹿に出来ない。
HSPと馬鹿に出来ないゲームの中身とは関連が薄いかと
感心のベクトルの問題だあね 「不自由なHSPなんかでここまでやるか」 と 「わざわざLispなんかでここまでやるか」 はベクトル一緒のような気もする
>>669 Schemeでゲームとか実用的なものを作れば良いのでは?w
Schemeでchessとかオセロとか将棋とか作ったら お友達は「実用的」と認めてくれるかなw?
wうぜえ
実際の話、ゲーム廚を納得させるには グラフィックスバリバリ(笑)のゲームを作るしかない。 いかに有用なツールを作っても、彼らには興味がない。 なぜならゲーム以外のことに興味が向いてないから。 だからグラフィックスバリバリ(笑)のゲームを作るしかない。 まあ相手にしないという手もある。
685 :
デフォルトの名無しさん :2008/03/26(水) 16:46:37
通常のLisp処理系とは違い、 Schemeのスコープはレキシカルスコープだということですが、 lambda関数の仮引数や、そのlambda式の中でdefineやletを使用して 局所的に定義された変数は全て、関数実行中だけ存在していて、 関数終了後は消滅すると考えてよいのですか? 例 (define func (lambda (x) (define z ....) (let ((y ....)) ....))) x, y, z は func 実行中だけ存在している??
無限エクステント!
>>685 他から参照されてないなら、関数から抜けてGCされるまで存在する。
スタックに割り当てられるような場合は抜けるときに消えるかもしれんが処理系依存。
でも普通ダイナミックスコープなlispでも局所定義された変数は関数抜けたら消えるぞ。
無限エクステントでググったら 寿命は無限で、スコープは有限ということがわかりました。
>>688 消滅しない。そういうのを無限エクステントという。
長くなるのであまり説明したくないけど、
仮に、そのfuncからx y zを含むクロージャ
(lambda (w) (list w x y z))とかを返したりすれば、
x y zはスタックからひっぺがされ、そのクロージャから
見える無限の領域(具体的にはヒープなど)に引き込まれる。
これは振舞いの説明であって、x y zを複製するという意味ではない。
C言語やPascalなどは関数呼び出しが終わってスタックが
撒き戻るとそのローカル変数なども無効になってしまうが、
schemeでは参照が残る限り有効になる。
(define func (let ((y ...)) (lambda (x) ....))) のような場合、yはクロージャの環境として必要なので、 GCの対象ではないですよね?
>>687 処理系依存とかいい加減なこと言うなよ。
>>689 なるほど。
C言語との違いがわかりました。
>>690 どの時点で?
lambda 式内部でも y が参照されないことが明確なら GC されるかもしれないし、
されないかもしれないし。
>>690 GCを意識する必要はない。
スタックが撒き戻るから云々みたいなことを考えなくて良い。
C言語とかしらないアホな子でも扱えるようになってる。
そういうアホな子がschemeからC言語に転向したりすると 非常にヤバイコードを書くかもしれない。 この子天才なんじゃね?と親は大喜び。
参照できないものは、どうなっても関係ないから、 GCされるとかされないとか、意味論的には考える必要ない。 効率や実装技術を語りたければ、考える必要がある。 Lisp/Schemeは明示的なオブジェクト消去操作のない言語なので、 (処理系依存のmemハック系関数は除く) 参照方法があるものは必ず存在する。
>>696 > Lisp/Schemeは明示的なオブジェクト消去操作のない言語なので、
古めの lisp は makunbound か fmakunbound で消去できるんじゃないか?
(define g 0) (define func (lambda (x) (define y 'yyy) (let ((z g)) (lambda () (list x y z))))) gにset!を適用し値を変更すると、funcが呼び出されるたびに zが変わるということはlambda関数内部のdefineやletは 関数呼び出しのたびに評価されているということですね。 (define func (let ((z g)) (lambda (x) ......... とは動きが違いますね。 この場合はlet式がlambda関数の外部に あるためlet式の評価は(define func ....) の評価時に一度だけになるということですね。
>>684 グラフィックバリバリ(笑)なら、まさにLispの得意分野だな。
かつてシンボリックスは世界のCG界を支配してたわけだし。(やや誇張)
AutoCADはLispなんだよ!みたいな
>>693 もしGCされたらyは、その時点での最新の値で再評価されるということですよね。
(この場合、yは大域の何かを参照しているとして)
>>694 GCされてしまったら値が無効になるので、保存されていた値が
消えてしまうのでは?と思いましたが、lambda関数の外部のlet
の場合は再評価すれば済みますね。
ありがとうございました。
>>696 >参照方法があるものは必ず存在する。
理解できました。
クロージャ=lambda式+環境 funcはクロージャを返す。その時点での環境を考えれば GC云々を考慮しなくても大丈夫でした。
ttp://codepad.org/2qFN6kWU HtDP p.7
(display (- #i1.0 #i0.9))
(newline)
⇒0.09999999999999998
結果に#iが付いてない。DrSchemeだと付いてる。Gaucheではどうなんだろ?
>>678 Little Schemer→Seasoned Schemer→SICP or HtDP or Simply Scheme or Schemeによる記号処理入門
(define λ lambda) ってしてみた。入力がめんどくさいだけだった。 と、gauche始めたばかりの初心者(みんな試しちゃうよね?)
試しません
>>706 Gaucheでは返り値に#iの表示はない。知りたければinexact?を使えばいい。
(display (inexact? (- #i1.0 #i0.9)))
(newline)
⇒#t
もしかしてcodepadの中身Gaucheじゃねえ?
ttp://codepad.org/SPiIJFUX マクロが使えたw
(define-syntax log-expr
(syntax-rules ()
[(log-expr form)
(let ((result form))
(print 'form " => " result)
result)]
))
↓
(fact 10) => 3628800
(fib 10) => 89
.emacsの設定をwebからコピペしてきても全然動かなかった。 よくみるとバックスラッシュが¥マークになってた。 .emacsの設定が反映されなかった。よくみると.emcasになってた。 これが今日一日の俺の成果。もう寝る。
全米が泣いた
>>714 >よくみるとバックスラッシュが¥マークになってた。
全角になってたって事か…
U+00A5 になったんじゃね?
714かわいいよ714
XyzzyのSchemeモード持ってる(使ってる)方いらっしゃいますか?
男ならEdwin
>>719 ×
(use srfi-13)
(use util.list)
○
(require (lib "13.ss" "srfi"))
(require (lib "pregexp.ss" "mzlib"))
(require (lib "list.ss" "mzlib"))
(require (lib "string.ss" "mzlib"))
(require (lib "ruby.ss" "matzlib"))
寒ブルブル
Seasoned Schemerで (define counter) という式が出てくるのですが、これ文法違反ではないんですか? Dr Schemeで試すとエラーになります。
texmacsってshcemeで動くemacsなのかな
違います
TeXで動くemacsだよ
そりゃすげー! マクロ書きたくねー ('A`)
736 :
デフォルトの名無しさん :2008/03/29(土) 11:40:56
seasoned schemer 18章 読んだ人いる? 何を説明したいのかよくわからないんだけど、kons、kdr、kar っていうcons、cdr、karもどきは何を言いたいの?
closures as objects that act like cons cells
コンスセルのように動作するオブジェクトとしてのクロージャねえ ようわからん。おれにはまだ早いな。 6章のShadowとかいうやつからの続きみたいだけど、文法の説明も少ないし 別の本で勉強してから読み直すわ。17章までは良かったのにな。
Kent Dybvigの"The Scheme Programming Language"にそっくりの話がある。 この本もお勧めだけど、Schemer×3, SICPでお腹一杯かな? あとSRFI-9のサンプルコード。SRFI-9の実装によってはまんま。
>>739 >あとSRFI-9のサンプルコード。SRFI-9の実装によってはまんま。
18章はよく使われる重要なテクニックなの?
単なる頭の体操用かと思ってた。
だったら、もう少し頑張って読まなきゃなあ。
この本途中でやめると、下手するとLittle Schemerを再読する必要があるから
面倒なんだよな。
ってか良書なら一回読んで終わりになることはない
742 :
デフォルトの名無しさん :2008/03/29(土) 16:10:30
texmacsはguileが動く懼?�エディター懼?�って意味ではemacsかもしれないけど mewやgdb-modeなどの便利アプリはない
懼・ってなんだ?
texmexみたいな
745 :
デフォルトの名無しさん :2008/03/29(土) 22:49:58
宮..腰,佳奈死.ねよ.ロバ.面し,やがっ.てwww. 宮..腰,佳奈死.ねよ.ロバ.面し,やがっ.てwww. 宮..腰,佳奈死.ねよ.ロバ.面し,やがっ.てwww. 宮..腰,佳奈死.ねよ.ロバ.面し,やがっ.てwww. 宮..腰,佳奈死.ねよ.ロバ.面し,やがっ.てwww.
18章、オブジェクト指向やクロージャが出て来て面白いね。難しいけど。 SICPでも出て来る普通の話題だから理解した方がいいね。 Reasoned Schemerの伏線にもなってるし。
>>740 前スレだったかにも書いたが、
Schemerシリーズに単なる頭の体操はない。
この道の碩学らしく重要なテクニックを激しく単純化して書いてる。
単純化しすぎて初学者にはなにがなんだか分からないくらいに。
その辺の塩梅が素晴らしいから長く読まれている。
Littleなんて第四版だし。ドリル形式の本が第四版w
>>746 "Doing encapsulation right is a commitment not just to abstraction of state,
but to eliminate state oriented metaphors from programming."
Alan Kay, "Early History of Smalltall"
>>749 × "Early History of Smalltall"
○ "Early History of Smalltalk"
でも18章のプログラム(lotsとかlenkth)って動かして試せないよね。
サンクでググって動く例を探せYO!
Mac上のGaucheでSchemeの練習を始めました 行コメントの ; を使うとエラーするので悩んだのですが 改行コードに CR を使うとだめなようです Schemeの改行コードは LF がないといけないんでしょうか
手取り足取り教えて欲しい人向けではない。 かなりスパルタ。本が人を選ぶ。
>>758 おまえら頭いいな
>>759 thx
クロージャ自体の概念は理解してるんだが。何を言いたいのかが
読み取れないのは俺の感性が鈍いんだろうか。
>>760 ココは章全体を見て物を考えるようになっている。前にもそういう章はあった。
鈍いんじゃなくて、ちょっと近視眼的。ストーリーがある文章は通して読まないと意味が取れない。
>>755 つか、Mac OS Xというか*NIX系で一般的なのはLFな訳で、
せめてCRLFを使えという話。
>>760 頭の訓練だから耐えろ
耐えれば出来るようになる
16〜18章は続いてる話だね。
18章って「17章のconsC」をkonsCにしてるけど、単純にc⇒kという翻訳をテーマにしてるんじゃなくて shadowsのクロージャについてどうなってるか良く考えないと危ないよってことか。遷移状態って説明のページがあるみたいだ。
Childhood's End by Arthur C. Clarke (1953)
>>761 とりあえず進めということか。
>>768 参考にさせてもらいます。
>>764 せっかく17章までは理解できるんだが
それともプログラミングGaucheを先にやったほうが良いかな?
>>770 17章は良くわかっていないんじゃないか?どこでset!を使うかという話がメイン。
・counter (p.133-136)⇒kounter(p.145-149)の対応は説明できる?
・18章の各kons(p.146とp.147)とで何が違う?
・add-at-end(p.144)とadd-at-end-too(p.145)とで何が違う?
特にadd-at-end-too(p.145)の中のkonsを各kons(p.146とp.147)にしたらどう変わるか?
2つの章の対応関係が理解できれば18章は理解できるはず。
>>771 17章に疑問はない。
18章の最初に出てくるkons kar kdrが唐突でよくわからん。
>>772 >>768 のから見て行くと理解しやすいのでは?
konsで何を返してkarで何を引数にしているか考えると良いかも。
Do you know about lambda the ultimate?
必要になれば自力で再発明できる 要領よくカンニングするのが得意な人は本を読めばいいけど、このスレにはいないと思う
ちょっと真剣に読んでみるわ。
>>773 SchemerシリーズでScheme始めたばかりだからなあ。
まだまだだわ。
>>776 konsがクロージャ返してるのはわかるけど、
konsを参考にkarとkdrを書けと言われてもわからなかった。
ヒントみながら考えることにする。
>>780 SchemerシリーズはScheme始めるのには向かない
メソッドがひとつしかないクラスを考えて、それをクロージャに翻訳する はいはい邪道邪道('A`)
>>781 >konsを参考にkarとkdrを書けと言われてもわからなかった。
じゃ、Little Schemerのところの理解不足が原因じゃん。
>782 そうだよな。Scheme(あるいはLisp)で何かプログラムを書けるように なりたいと思った時にまずSICP及びSchemerシリーズやTo Mock a Mockingbirdを一通り読めと言われたらそれは何か違うんじゃ無いかと思う。 いったんLispなりSchemeなりでそこそこ何か書けるようになってから もう一度、理解を深めるのに読むのが正しい読み方なんじゃないかと。
おいらはSchemeで簡単なネットワーク通信でも出来たら 俄然やる気が出てくると思う。実用的な何かが作りたい。 深遠な部分はそれからやりたい。
SICPとTo Mock a Mockingbirdは違うと思うが、 Little Schemerはやるべき。
脱落者が居ると俄然やる気でるw
なんて競争社会
本なんか読むより処理系のソース読んだほうがいい 動作原理→概念
本でも最後のほうで小さなインタプリタを作るんだけど、 ソースを読んで理解するというより、ある時ふと「こうすれば作れるんじゃね?」 と思いついて、あらためて本を読んでみるとその通りのことが書かれている感じ 『なんでも継続』にも、継続渡し形式をそれと知らずに使った経験があるはずだ というくだりがある その経験がないなら、いったん脱落して他のことをやるほうが近道かもしれない
>>792 それはない。
機構を理解しても、フレームワークは推測できない。
>>737 「closures as objects」はSchemeの元々の目的だね。
Actor理論研究のための処理系だったから。
ガイ・スチールのプレゼンに出てきた話?よくわからなかったのですが。 簡単に言うとActor理論とはなんですか。
どうも、プレゼンにヒューイットさんの名前も出てました。 今携帯なんでアドレス出ませんが。
799 :
デフォルトの名無しさん :2008/04/01(火) 01:10:08
>>797 米澤明憲
Specifying Software Systems with High Internal Concurrency Based on Actor Formalism
情報処理学会 昭和55年度論文賞 英文論文誌 vol. 2 no. 4 pp. 208-218.
ってのがありますが。
米澤先生ってMIT から78年頃戻られているので、
その直後のPaperじゃないかな。
800 :
798 :2008/04/01(火) 01:15:37
ACL入れてみた。なんかすげーなこれw 厨房の俺にはちっともわからんw
>>799 その後にABCLって言語をやってます。
"An object-Based Conccurent Language"の略になっていますが、
元々は"Actor Based Conccurent Language"を考えて、
そこから生まれていると思います。
Actorとは別の計算モデルとして発展させたので、
"An object-Based"としたのでしょう。
その辺の経緯は日本ソフトウェア科学会の受賞記事にくわしいです。
(どこかにPDFがあったはず) アメリカではABCL/1のことを
"Actor Based Conccurent Language"と呼んでいたりします。
> アクターモデル wikipediaに結構くわしく書いてあった。
黒板とかラテン語とか言うけどさ 論文のネタならHaskellのほうがいいんじゃないか
Windows用インストーラ作りますた。 karetta.jp/images/3/Gauche-win32-0.8.13.exe 置き場所が決まったら消すかも。
ネタは頭の中に転がってるだろ常考
頭の中にあるネタを実現するときに適切な処理系が無いときLisp/SchemeでDSLとか実現できるのが便利。 グレアムのArcみたく既存のScheme上にヤドカリ出来る。Seasoned Schemerの20章とかSICPの最後もそういう趣旨だなぁ。 実現したいネタが無い人っているの?「うは、夢が広がりんぐ」ってよく言ってるのもネタだろw
>>812 そういう小ネタから論文書けたり実用的なプログラム作れちゃう人もいるんだろな。ええな〜w
やっぱ既存の言語で既出のネタを考察するみたいなのが無難?
論文なんてどんなネタでも書けるだろ。とりあえず、ここの連中がすぐに思いつくようなことを 書かなければ、それなりに評価されるんじゃねえか?w
数値計算のいろんなアルゴリズムを数式処理と絡めて最少の手間で実験したい
LuaみたいなのはDSLっていうのかな Schemeの上に言語を作るのもいいけど C/C++の上にSchemeを埋め込んで使う話題が増えると嬉しいのだが
俺のバスコンは物故割れなかったよ?
フフフ 俺の居住地域は時差の関係で今日がエイプリルフールなのさ
>821 アラスカかハワイにでも住んでるのか?
ジェルソミーノ乙
まだ4月1日、はあるけど 今日が4月1日、はないな
ゼオライマーの次元連結システムで 昨日の世界からネットにつないでいる
LLばっかり。
つ pylisp, pyscheme
C++にBoost.Schemeとか欲しいな。
もはやCOBOLとかSNOBOLあたりで作らないとネタにならんだろ
大半がToyプログラムだしな。本当に使いものになる処理系とは天地ほどの差があるってやつだ。
実行速度や組み込み関数といったあたりまではともかく、 ライブラリの充実まで含めて「非toy」であろうとすると、難しいもんなぁ。
こういう時の「LISP」って、100%完全にCommonLispじゃねーよな LISPのwiki書いた奴都合良すぎ 最近のAMDうざみたい
>>841 そりゃまあ、Common Lisp じゃなくて Lisp だもんなあ。
何に文句言ってるんだ?
boost.pythonだけは使い物になる。完全にwrap作業を自動化できる。 他は手作業で生成したファイルをいじらないといけないのばっかり。 boost.clispは非常に欲しい
>>843 Lispという呼び方がCommonLispの略称だと思ってたんじゃない?
WikipediaをWikiと略す奴もいるしな
>>847 それ、時々抵抗示す人を見るけど、こだわり過ぎるのもどうかと思うし、
長ったらしいフルネームをいちいち書けということなら、日下部陽一的にキモいと思うよ。
パーマネントカールがパーマに、携帯電話が携帯になる世界に生きてるんだから、慣れな。
>>848 WikiとWikipediaはユーザ書き換え可能ページ全体と固有名詞の違いがあるんでこだわりと言うよりも分けてくれないと混乱があるからやめてくれの意味がデカイと思う
○○ってWikiにあったと言われるときと○○とWikipediaにあったと書く時の違いがでかいのと一緒
大抵文脈で分かるだろ・・・。
ニヤニヤ
シコシコ
アプアア
>>848 間違えてる馬鹿はWikipedia以外のWikiを知らないだけだろ。
すみませんが質問です。 Gauche などの Scheme処理系で、何かの関数の定義(ソースコード)を表示す る方法はないでしょうか? ソースを検索するのではなく、関数名だけから取得する方法があったら便利か と思うのですが。 ちなみに統計処理用言語 GNU R は、対話コンソールに関数名を入力すると、 その関数定義(そーす)がそのまま表示されます。なかなか便利です。
フムフム
俺も「wiki」には抵抗あったけど IPアドレスのことIPって言う人も多いし、もうどうでもよくなってきた
携帯電話以外の携帯を知ってるけど 携帯電話は携帯と呼ぶぜ!
>>854 まさにそこが携帯のケースとは違うところだな
>>855 CommonLispのfunction-lambda-expressionみたいなの?
Gaucheにはないんじゃないかなぁ
disasmの出力のコメント部分を眺めて推測するしかないかも
>>855 Lisp/Scheme shellなら出来そうだけど、Gaucheとかでやる意味が訳ワカメ
Gaucheはスクリプト言語じゃん。対話するの?
します スクリプト言語はテストが大事ですから
Ah! SKI の BASIC で書かれた LISP は本物?
すべてのLispは本物のLispですよ
>>854 「間違えてる」っていう認識が世間的には既におかしいし、
その「知らないまま使う奴が多い」というのこそ、浸透の証なわけだよ。
最後の最後まで抵抗を示し続けるのもいいけど、あんまり無差別に頑張るなよ。
2chでいちいち「レスって何ですか?」って食ってかかる奴を想像すればいい。
世間的には、「Wikipediaと言え!」も、それと同じ位置にもう来ているから。
>>863 テストと関数定義(そーす)がそのまま表示されることにどんな関係を想定してるの?
そこがわからんけど、うまい使い方ならGauche/Kahuaの中の人が考えてくれそう。
>>855 Scheme的には仕様外です。
そういうものに依存しないほうがいいのでないという考え。
処理系依存で相当機能を持つものがあるかどうか知りません。
R?RS準拠ではない小さい処理系ならば、
reflection系のものはほぼ必ず持っていますが。
>>866 浸透してることと間違えてることと馬鹿であることはすべて独立した概念なので
何も矛盾している点は無い。
そこまで馬鹿を擁護しなきゃいかん理由がさっぱり理解できない。
頑張ってるのは君のほうでは?
スレ違いの用語一般論やっている奴はこのスレではお荷物の馬鹿だし、 このスレはこのスレであって世間一般ではないのだから、 世間がどうのこうのというご高説もちゃんちゃらおかしい。
プログラミングGaucheのKahuaのインストールで 環境変数が設定できなくて困っています ホームディレクトリの.profileに 変更前: PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/games:/usr/local/sbin:/usr/local/bin:/usr/X11R6/bi n:$HOME/bin; export PATH 変更後: PATH=/usr/local/kahua/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/games:/usr/local/sbin:/usr/lo cal/bin:/usr/X11R6/bin:$HOME/bin; export PATH と追加してみましたが 追加してみたのですが、rehashしてもログインしなおしても認識されません どこが間違ってるんでしょうか (スレ違いな気もしますがどこが妥当か分からないorz・・・)
>>855 基本的には出来ないと思ったほうがいい。
実行時にはVM用のコードにコンパイル済みだから
ソースの形式で保持してない。
>>871 認識されないとは?
環境変数に反映されてないってことですか?
シェルの種類は?
OSは?
>>872 Schemeはdefunじゃなくてdefineだから
シンボルとソースコードの関連付けはできないだろうけど
手続き自体に保持しておくことは可能じゃないですか?
Gaucheのdisasmだってある程度のソースコード情報は出力するし。
>>873 すみません。忘れてました。
OSはFreeBSD6.3
シェルはcsh
です
cshはあんまり使ったことないけど exportじゃなくてsetenvじゃなかったっけ?
csh × .profile ○ .login ただし,ログインシェルのみ
>>871 UNIX板のくだ質スレ推奨
お題は「PATH環境変数の設定方法」
>>869 > 浸透してることと間違えてることと馬鹿であることはすべて独立した概念なので
> 何も矛盾している点は無い。
そう、そこなんだよね。
なのに
>>854 は「間違えてることと馬鹿であること」を強調してるけど、意味が無い。
> そこまで馬鹿を擁護しなきゃいかん理由がさっぱり理解できない。
なんでこれが擁護になるのかがさっぱり理解できない。
「いちいちwikiという言い方に突っ込んだりするのは、今やもう痛いよね」というのが擁護? 意味不明。
>>870 だったらスルーしないとね。
ネチっこい嫌味を書き込んで、わざわざ同じ穴の狢に成り下がって何がしたいんだか。
自爆が趣味なの?
根本原因はWikipediaがWikipediaという名前であることにあると思う。 単に略してWikiと言っているつもりなのかWikiというシステムと混同しているのかで意味が違ってくる。
まぁ、どっちのことを言ってるのかわからん文脈では、もうWikiとは書けないね。 たとえ自分は正解を知っていても、知らない人間が増えることで、その影響を受けざるを得ないこともある。
Wiki=Wikipediaの意味で使うのは単に気色悪いだけだけど このスレでLisp=Common Lispと言い張るのは違うと思うよ。
883 :
デフォルトの名無しさん :2008/04/03(木) 23:58:15
気にするやつはSchemer。名前が衝突しないようにwikとか妙な略をつくるんだ。 気にしないやつはCLer。たまにfuncallが必要になるんだ。
>>883 > 気にしないやつはCLer。たまにfuncallが必要になるんだ。
そこがまたかわいい所なんだぜ
>>882 そうだ、その話だったんだ、もう忘れてたよ。w
>>883 CLerだがちゃんと区別して使ってるよ。
名前を考えたくないとき 無名関数 アナフォリックマクロ ポイントフリースタイル
>>871 良く分かんないんだけど、
gosh>(add-load-path "~/")
じゃダメなのかしら?
http://ja.wikipedia.org/wiki/LISP >なにも付けずに「Lisp」というときは一般的にCommon Lispのことを指し示している場合が多い。
これか。
そういや一時期のCommonLisperは非常にうざかったな。
どうせ過疎るのにスレを乱立させるわ、
ここのスレタイも勝手にC(略)Lisp Schemeに変えるわ。
CommonLisp以外のLispを排除しようと必死だった。
もうスレタイはLispだけでいいよ。 Common-LispもSchemもLispの仲間なんだし。
CLerがCLにこだわるのはなんでだろうね。ANSIだからかね。 過去のCLの併合アプローチは失敗だったから、 もしかするとモデルとしてのschemeの存在がなかったら、 Lisp自体が消えてたかもしれない。(少なくとも日本では) CLで盛り上がってますよ的な話は聞いた事ないしね。 2chのム板でそれなりに認知されて、1スレを1ヶ月で使い切る ようなペースになったのも、やはりschemeの方の功績みたいだし。 ただSchemerにとっても、CLの後ろ盾があるから安心して 使えるみたいな心理はあると思う。 SBCLのWindows版がようやくまともに動くようになったっぽいから、 これからWin使いのLISPユーザーが増えてくれるとありがたいね。
>>891 もしかして脅しですか?
CLerは怖いなあ。
↓本職の893さん、どうぞ
>>892 いてまうぞこら。
俺はSchemeからLispの世界に入ってCLに移行した少数派。
合いの手返すようなのが一番荒れる原因を作ってるような…。 CLの話題になると荒れる、みたいな流れを作りたいのかな?
実際荒れてる
所詮休戦協定は破られるためにあるのさ
次スレのテンプレに追加するものあったら今のうちに上げといてくれ。 リンク切れとか。
荒らし扱いされるんじゃ逆にCL排除でもいいよ。 隔離スレもあるんだし。 と極右になってみるテスト。 つーか実質そうなってるからね。別にここで話すこともないし。
>>896 お前がそうしたいと思ってるから、そういう風に見えるんだろ
902 :
デフォルトの名無しさん :2008/04/04(金) 11:34:27
Common LispとSchemeどっちが好きですか?
つーかなんでその2つを比べたがるん?
姉に勝る妹などいない
攻略対象を一人に絞らないとバッドエンドですね、わかります
美人姉妹の家にご厄介になってますが
>>890 おれは親切だから教えてやるが、おまえの頭、狂ってるよ
だからスレ分けようよ。 Schemeを隔離するのが良いと思うけど、Common Lisp専用スレ立てるんでもいいよ。
入門用だけど、CL専用スレたってるよ。 入門スレなのに変に難しい話題になることがあるが…。
姉とキャッキャウフフしていると、それはANSI標準の範囲外だと言って妹が牽制してきます
Schemerを攻撃するCLer、CLerを攻撃するSchemerってのは、ほとんどは反対側を 知らない無知な人間のように見えるけどな。 そういう人間が多いなら分離がいいんじゃね?
荒しは放置 分離の必要ない 荒しが調子に乗るだけ R6RSは分離、CLOSは分離、きりがない
せめてスレタイをなんとかしろ
Lisp (CL Scheme ...) 21 みたいな
このスレタイで何の問題もないです。
というかここCLとSchemeのスレだったのか Lisp方言のSchemeのスレという意味でスレタイがLisp Schemeになってるのかと思ってた
俺も最初そう思って辿り着いたから、分けなくてもいいからちゃんと明記してほしいかな 別にこのままでもいいけど
今のテンプレでも分かりにくいようなら、
LispとSchemeのスレです。と
>>1 に書いとけ。
>>919 まるでSchemeがLispじゃないみたいな言い方だなw
Lispという集合の定義なんて個人的にはどうでもいいけどさ、
SchemeがLispならば
>>915 みたいなスレタイが良い
SchemeがLispでないならば、スレは分けたほうが良い
んじゃないか?
どうでもいい語用論でスレタイをいじるのはよせ
どうしても「Scheme」と「Lisp」が対等じゃなきゃ厭なの? 明らかに変なスレタイだから、直しましょうって話をしてるんだけど。
長らく続いたスレタイを変更するような違和感はないなあ
(Part (or '|Common Lisp| 'Scheme)) -> 21 Common LispはLispだが SchemeはLispじゃないという黒い人もいるんだから Lisp Scheme PartXXでいいと思う。
「長らく続いた」伝統文化なのか。w じゃ、しょうがないな。勝手にしろ。
SchemeはLispなんだけど 名前にLispが入っていないから タイトルに明示的にSchemeを入れている という解釈でいいと思う そしたら分離も改名もしなくていい
ここまで読み飛ばした。 で、一つわかったことがある。 おまえら暇なんだな。
RubyはLispなんだけど 名前にLispが入っていないから タイトルに明示的にRubyを入れている ついでにスレを隔離しているという解釈でいいと思う
>>917 最初は本当にScheme使いしかいなかった。
SchemeはLisp族だから、ついでに頭にLispを付けた。
当時、Lispスレはマ板の方にあったし、
スレタイをム板の素人にも判るように配慮しただけ。
今みたいに上だ下だの議論も無かったからね。
スレタイのLispがCommonLisp限定だ、なんて意図も全く無い。
Common Scheme ってのを作ればいんじゃね!?
じゃあGaucheスレ立てる
よろしく
Arcはタイトルに入れた方がいいかも
arcは別にスレあるよ
「CommonLisp総合 Part n」 みたいなのが別にあれば解決するでしょ。 【入門】とか半端なのしかないから居心地悪くなって ここにたむろうわけだし。 おまえら全くセンスねーですな。
arcスレ195で止まってるぞ。 はいぱー何とかのネタ振った奴責任重大だぞ 流れを本流へ戻せw
>>936 それは知ってますけど
Lisp族総合スレみたいなものでしょ、ここ
schemeはasdlやcffiありますか? closっぽいことできますか? 私はmaximaのためにclisp使ってます
>>937 ここで喧々囂々やってるよりはいいんじゃねーの。
CommonLispに限らず、維持するつもりがあるなら立てればいいよ。
933みたいな処理系のスレでも。
pythonやC#にもlambdaがあるそうだけど、Schemeのlambdaと考え方 は同じなの?
>>931 それなら、初心に返ってここはScheme限定(限定というのが悪ければ、Schemeの話題を優先)。
Common Lispはそれなりに需要があるのだからスレを立てる、でも良いかもね。
というわけで、今まで出た意見の中では
>>937 に賛成かな。
>>942 まあ同じ。
違うといえば違うんだが、それを言ったらCLのlambdaとSchemeのlambdaも違う。
話し合いの最中に押し切るなんて流石ですね いや別にいいんだけど、結局総合スレって位置づけでいいの? そこだけでも決めてたらテンプレもすっきりしたかもしれないのに
実にくだらない議論だし、付き合ってられん。
おまえらがコードを書く時の柔軟な思考回路を ここの話し合いにも使ってくれ。 みんな頭固すぎだよ。
オラの元気をみんなに少し、、、あれ?
ゴクウもうろくしちゃって・゜・(ノД` )・゜・。
R6RSが荒れた理由がこのスレ読んで分かった。 Lisper同士どんだけ仲悪いのか、と。
>>952 近親憎悪みたいなもんなだけに門外漢が見るとばかばかしいし、専門で取り組んでる奴はむかっ腹たてるんだよな〜
>>952 スレの分割や統廃合が円満に行われてるところなんて、
これまで見たことがない。この程度ならぬるい方。
不満があるからこういう話になるんだし、不満があれば揉めもするだろ。
>>952 いや別に仲悪い訳じゃないんじゃない?
煽られてる人が騒いでるだけよw
そもそも両方使う人は多いしね。
>>944 pythonのlambdaは式は書けるけど文は書けない
>>940 schemeはasdlやcffiありますか?
asdf
→ありません。(処理系依存でモジュール等あり)
cffi
→あります。(処理系依存)
closっぽいことできますか?
→できます。(処理系依存)
「プログラミングGauche」に色々詳しく書いてますので、おすすめです。
ちなみにmaximaのためにclisp使うんだったら知る必要はないでしょうが、
CLでも、cffi、asdfは、オプションであり標準のものではありません。
レベルが下がると賑わうなw まぁ当たり前なんだが、その「当たり前」が順当に形になっててちょっと吹いた。
>>960 勉強中には静かにROMってるんだから精神的に成熟してる住人が多数派なのは確かだ。
しかもたまに鋭い指摘があって勉強になる。最近、若干スレの流れが速くて困るけど。
>>959 > cffi
> →あります。(処理系依存)
ffi が処理系依存で、cffiはそれのラッパじゃねーの?
まちがった、962へのレスだった
とにかくSeasoned Schemer読了したのでご報告。スレの諸兄に深謝します。 Seasoned Schemerの18章の謎(というかテーマ)は内部表現の「記述量」ってことか。 ようやく腑に落ちた。つまり「この問題を解決するにはどうすればいい?」ということを考えさせてる訳だったのか。 答えはGCなんだろうけど。でもGCまで踏み込んでないのは教育的配慮? 19章はコルーチン。20章はインタープリターの作成。Littleの10章でも似たことをやったけど今度は継続とかも実装した。 読んでよかったYO!
気になるな 訳本がないと立ち読みもできん
>>967 thx
継続を実装ってそういうことか
素のcall/ccを使わないとしたらどれくらい短く書けるのかな
Lispは内部表現が大きいからGCが重要だって、入門レベルで書いてる本少ないよな。 てか、Littleの8章のYコンビネータとSeasonedの18章の記述量問題を入門者が一読して理解できたならこの本の狙いは成功だろ常考。 Scheme入門だけじゃなくてCS入門の本だから永い間読み継がれているんだろな。
リトル読み終わってない俺、涙目
Yコンビナートの前の章(colが出てくる章)が理解できたところで 自分的にかなりおなかいっぱいに… この先苦痛になるのでは、と考えると怖くて
17章でひとまずお休みした俺。もう少し慣れてから再読する。
2冊読んで難しかった部分。それぞれ関係があった。 8章(Yコンビネータ)→16章(Y!コンビネータ) 18章(bons)→20章(set)
>>965 >Seasoned Schemerの18章の謎(というかテーマ)は内部表現の「記述量」ってことか。
>ようやく腑に落ちた。つまり「この問題を解決するにはどうすればいい?」ということを考えさせてる訳だったのか。
>答えはGCなんだろうけど。でもGCまで踏み込んでないのは教育的配慮?
>19章はコルーチン。20章はインタープリターの作成。Littleの10章でも似たことをやったけど今度は継続とかも実装した。
ソレ系の本格的な教科書がある。言語はStandard MLだけどね。
Andrew W. Appel "Compiling With Continuations"
ttp://www.amazon.co.jp/exec/obidos/ASIN/052103311X/
Y! ってどっかのケータイみたいだなw
977 :
デフォルトの名無しさん :2008/04/05(土) 13:43:29
>>959 maximaからでもcffiやasdfは使えます
使えるようにconfigureしてからmakeするだけです
逆にclispで
(in-pckage maxima)
でmaximaのコマンド使えないかなあ
schemeとcommon lispのインターフェイスあればschemeからmaxima使えていいんだけどなあ
978 :
デフォルトの名無しさん :2008/04/05(土) 13:44:25
slimeとilislのどっちがお勧めですか?
Schemeで書かれた数式処理ソフトでJacalなんてあるんだね
>>978 対応している処理系ならばslimeに一票
池袋ジュンクにLittle...とReasoned...があったよ。 実物見てから買いたい方ドゾー。
みんなDylanを忘れないで
>>984 それ見てて思った。中間言語としてANFに変換してるけど、このANFはたぶんBOEHMの木構造と関係がありそうだ。
このANFの段階でOptimizeするってことは、ソースコードからANFでもそのままOptimizeされない記述はインラインアセンブラとして働くってことだね。
つまり、Yコンビネータをはじめとするコンビネータ形式で書かれたソースコードはインラインアセンブラとして働くってこと?
ということは、Lambdaを持ってる言語(λ演算評価機として等価)ならコンビネータ形式で書ければ全く等価なプログラムを書けるってことだ。
Littleでチャ−チ・ロッサーが出てきたの覚えてる?>読んだ人
>>986 いい感じなんだけど、いまいち敷居が高いんだよねw
986はDylanの処理系は何を使ってるの?
Schemeを知っていると転職に有利ですか?
当然だろ
GaucheでPerlみたいにディレクトリ操作ってできますか? あるディレクトリ内のファイル一覧を表示するとか。
sys-readdirとかかな? マニュアル読むよろし
>>993 そこでdirectory-foldですよ。
>>686 無限エクステントってSeasonedの20章に出てくるmulti-extentのことか。
Lispの発音 [liθp]
>>997 New Oxford American Dictionary, 2nd Edition によると
/lisp/ だそうですよ。
「コンビネータ形式」ってなんだ?
1000get
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。