Lisp Scheme Part27
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2009/07/27(月) 10:15:31■過去スレ
Part26: ttp://pc12.2ch.net/test/read.cgi/tech/1240567959/
Part25: ttp://pc12.2ch.net/test/read.cgi/tech/1231856193/
Part24: ttp://pc11.2ch.net/test/read.cgi/tech/1224939205/
Part23: ttp://pc11.2ch.net/test/read.cgi/tech/1215875388/
Part22: ttp://pc11.2ch.net/test/read.cgi/tech/1211381920/
Part21: ttp://pc11.2ch.net/test/read.cgi/tech/1207300697/
Part20: ttp://pc11.2ch.net/test/read.cgi/tech/1205021786/
Part19: ttp://pc11.2ch.net/test/read.cgi/tech/1200237296/
Part18: ttp://pc11.2ch.net/test/read.cgi/tech/1186922295/
Part17: ttp://pc11.2ch.net/test/read.cgi/tech/1177065699/
Part16: ttp://pc11.2ch.net/test/read.cgi/tech/1172404795/
Part15: ttp://pc11.2ch.net/test/read.cgi/tech/1151025773/
Part14: ttp://pc11.2ch.net/test/read.cgi/tech/1132275726/
Part13: ttp://pc11.2ch.net/test/read.cgi/tech/1115901841/
Part12: ttp://pc11.2ch.net/test/read.cgi/tech/1100229366/
Part11: ttp://pc11.2ch.net/test/read.cgi/tech/1091456033/
Part10: ttp://pc11.2ch.net/test/read.cgi/tech/1075630259/
Part09: ttp://pc11.2ch.net/test/read.cgi/tech/1069594582/
Part08: ttp://pc5.2ch.net/tech/kako/1058/10582/1058263391.html
Part07: ttp://pc5.2ch.net/tech/kako/1042/10421/1042167213.html
Part06: ttp://pc3.2ch.net/tech/kako/1031/10315/1031560687.html
Part05: ttp://pc3.2ch.net/tech/kako/1023/10230/1023091882.html
Part04: ttp://pc.2ch.net/tech/kako/1016/10162/1016211619.html
Part03: ttp://pc.2ch.net/tech/kako/1008/10082/1008220265.html
Part02: ttp://pc.2ch.net/tech/kako/1002/10025/1002584344.html
Part01: ttp://piza2.2ch.net/tech/kako/987/987169286.html
■テンプレート置き場
ttp://wiki.fdiary.net/lisp/ (id:guest pass:cl)
0153デフォルトの名無しさん
2009/08/04(火) 14:35:450154デフォルトの名無しさん
2009/08/04(火) 14:45:44のようなもの
0155デフォルトの名無しさん
2009/08/04(火) 16:18:420156デフォルトの名無しさん
2009/08/04(火) 16:38:140157デフォルトの名無しさん
2009/08/04(火) 16:42:100158デフォルトの名無しさん
2009/08/04(火) 18:03:01ところでウィノグラードの積木をする少女のプログラムは今のパソコンの
性能なら十分に動くと思うのだけど、誰か動かしてないかな?
マイクロプランナーってPrologみたいなもの?
0159デフォルトの名無しさん
2009/08/04(火) 19:02:22JavaScript とか Ruby を「広義のLisp」に含めようとする人すらいるが、
構文木を操作することを可能にしたマクロと、マクロの大前提であるS式こそが Lisp の本質だと思う。
「マクロ以外は」と言ってしまうとせいぜいがクロージャとリスト操作くらいだろ?
JavaScript でもそれらを扱えるのは確かだが、
最も重要なマクロを除いてしまった上で「同じようなこと」が出来たからって…
0160デフォルトの名無しさん
2009/08/04(火) 20:08:16今までruby信者だったことを恥じたね。
バカみたいにシンタックス増やしてその議論に時間裂いて如何に信者を増やすかが、その人たちの言う言語なんだと...
carとcdr、"(" と ")" 、applyとeval、言語のシンタックスが提供するのなんてこの2極で十分だ。(極論だけど)
言語作者のエゴが作る多すぎるルールは戒律になって自由に対してのしかかってくるだけだよ。
(この戯言で怒った人はごめんね☆)
0161デフォルトの名無しさん
2009/08/04(火) 20:13:510162デフォルトの名無しさん
2009/08/04(火) 20:18:28Guileはそういうとここだわってますよね
> (define (hoge) (begin (display 'function) (newline)))
> (define (foo) (hoge))
> (foo)
function
> (define-macro (hoge) '(begin (display 'macro) (newline)))
> (foo)
macro
親処理系のSCMで動かないこのコードがGuileで動くってことはわざわざ追加された仕様なんでしょうね
0163デフォルトの名無しさん
2009/08/04(火) 20:26:59gaucheの最適化レベルが低いってだけ
0164デフォルトの名無しさん
2009/08/04(火) 20:31:060165160
2009/08/04(火) 20:37:43SKIってSKIコンビネータなんちゃらってやつ?
とにかく読み漁ってみるわ。
まじで情報サンクス。
やっと計算云々のコアにたどり着けるような気がする...
今まで童貞で良かったわ。きっとセックスより気持ち良いに違いない。
0166デフォルトの名無しさん
2009/08/04(火) 20:49:07全然違うものですがPostScriptとSECD仮想機械も面白いものですよ。
PostScriptにはつい最近興味を持ち始めたのですが
Forthよりコッチ側(関数的プログラミングとか)に近くて
末尾呼び出しの最適化もされるし驚きでした。
(ループが再帰で書ける!)
SECD仮想機械はS式ベースの仮想機械で
これをベースにしたScheme処理系もあるみたいです。
0167デフォルトの名無しさん
2009/08/04(火) 20:54:13センスの無いバカは理論をやる
それが計算機の世界
0168デフォルトの名無しさん
2009/08/04(火) 21:05:470169デフォルトの名無しさん
2009/08/04(火) 21:12:14○ センスの無いバカは理論「だけ」をやる
0170デフォルトの名無しさん
2009/08/04(火) 21:31:270171デフォルトの名無しさん
2009/08/04(火) 22:27:40かなり面白そう。
PostScriptは名前だけ知ってたんですが、初めて見ました。
というか、S式 -> ps とかすごく簡単に書けそうでプロッターとしていけますね。
SECD仮想機械は機械的(物理的?)な観点から見れそうなので、今までlisp系を観念的にしか見てなかった自分としては、今までとは対極の見方が出来そうです。
情報サンクスです。
0172デフォルトの名無しさん
2009/08/04(火) 22:58:28PostScript で Lisp 書いたり PostScript で書いた Lisp で Lisp を書いた人もいる。
http://blog.bugyo.tk/lyrical/2008/01/-o-lisppostscriptlisp.html
0173デフォルトの名無しさん
2009/08/04(火) 23:04:20据え膳食わぬは男の恥
0174デフォルトの名無しさん
2009/08/05(水) 02:09:50http://pc12.2ch.net/test/read.cgi/tech/1233143342/
(((() #0="a" #0# #0#) (#1="b" (#1# (#1#) . #2="c") . #2#) . #2#))
この#0#とかの表記がよく判りません。
自己参照してるっぽいのは判るんですが、
どこかに読み方の説明ないですかね。
#0=と#0#は違うのかな?
0175デフォルトの名無しさん
2009/08/05(水) 02:22:09読み方の説明ならこれか
http://www.lispworks.com/documentation/HyperSpec/Body/02_dho.htm
http://www.lispworks.com/documentation/HyperSpec/Body/02_dhp.htm
これ
http://srfi.schemers.org/srfi-38/srfi-38.html
0176デフォルトの名無しさん
2009/08/05(水) 02:53:47(((() "a" "a" "a") ("b" ("b" ("b") . "c") . "c") . "c"))
それぞれの文字列がeq?にならないからってことかな?
0177デフォルトの名無しさん
2009/08/05(水) 08:32:15そのとおり。 共有構造を明記できる記法。
見づらいなら write で出力すればよい。
0178デフォルトの名無しさん
2009/08/05(水) 20:02:29違う不思議さがある。ほら吹き男爵のブートストラップの話みたいな。
0179デフォルトの名無しさん
2009/08/05(水) 20:17:330180デフォルトの名無しさん
2009/08/05(水) 20:22:000181デフォルトの名無しさん
2009/08/05(水) 20:25:56http://www2.parc.com/csl/groups/sda/projects/reflection96/docs/malenfant/ref96/ref96.html
0182デフォルトの名無しさん
2009/08/05(水) 22:15:32>>178の言ってるのはGCとかの泥臭いところを除外してるって意味だと思われ
0183デフォルトの名無しさん
2009/08/05(水) 22:16:440184ひげぽん ◆Ngzcp/NZpA
2009/08/08(土) 00:04:50http://mosh-scheme.googlecode.com/files/mosh-0.2.0.tar.gz
http://mosh-scheme.googlecode.com/files/mosh-0.2.0-setup-win32.exe
Mosh は R6RS に準拠した Scheme インタプリタです。
0.2.0 では並列ライブラリなどが追加されています。
リリースの詳細は http://d.hatena.ne.jp/higepon/20090807/1249655156 をご参照ください。
もし良かったら使ってみてください。
0185デフォルトの名無しさん
2009/08/08(土) 00:13:030186デフォルトの名無しさん
2009/08/08(土) 00:27:14おぉ!
ご苦労様です。
0187デフォルトの名無しさん
2009/08/08(土) 00:41:240188デフォルトの名無しさん
2009/08/08(土) 00:44:340189デフォルトの名無しさん
2009/08/08(土) 00:59:080190デフォルトの名無しさん
2009/08/08(土) 01:03:36Windows2000でインストーラ使って即実行したら
「mosh.exe - エントリ ポイントが見つかりません
プロシージャ エントリ ポイント freeaddrinfo がダイナミック リンク ライブラリ WS2_32.dll から見つかりませんでした。」
て怒られた
0191ひげぽん ◆Ngzcp/NZpA
2009/08/08(土) 01:11:02>>186
>>187
>>188
ありがとうございます!
>>189
まだ常用には向いていないです。
(mosh shell)というライブラリが付属しているのですが
機能が足りないです。
>>190
試していただいてありがとうございます。
申し訳ないです。Windows XP でしか動作確認できていません。
Windows 2000 では使えないWinSock で関数を使ってしまったみたいですね。
取り急ぎバグとして issue 登録しておきます。
0192デフォルトの名無しさん
2009/08/08(土) 01:22:170193デフォルトの名無しさん
2009/08/08(土) 01:25:41正三郎がアフィりに来るのを心待ちにしてる。
0194デフォルトの名無しさん
2009/08/08(土) 01:29:560195デフォルトの名無しさん
2009/08/08(土) 01:35:33Dan the schemer が弾言しにくるのを心待ちにしてる。(^o^)
0196デフォルトの名無しさん
2009/08/08(土) 01:37:160197デフォルトの名無しさん
2009/08/08(土) 01:37:45OS作ろうとか言ってた頃が懐かしいな
0198デフォルトの名無しさん
2009/08/08(土) 01:39:53宣伝されたらたまったもんじゃない
0199デフォルトの名無しさん
2009/08/08(土) 01:42:29馬鹿でーす!厨房でーす!
0200デフォルトの名無しさん
2009/08/08(土) 01:42:38また来たらいいよ
0201デフォルトの名無しさん
2009/08/08(土) 01:43:270202デフォルトの名無しさん
2009/08/08(土) 01:53:01ネット上で公開しているわけだし
ShiroさんのGaucheすらverUPカキコが許されないの?
独自処理系の書き込みばかりになったら(なりそうになったら)スレを分ければいいだけでは?
0203デフォルトの名無しさん
2009/08/08(土) 01:55:16moshの方向性は何なんでしょうか。
実用?勉強?哲学?それとも胸に付けるラムダのバッジ?
実用 : shiroさん、本当に感謝しています。
勉強 : みんな作ってるよ。俺scheme。
哲学 : arcがやってる。(そもそもこれが目的だったら鼻高々にR6準拠なんて言わないような。)
ラムダバッジ : 食い扶持。金くれIPA。胸に光るは永田町。私は自民党(R6)の議員です。
0204デフォルトの名無しさん
2009/08/08(土) 01:57:54細かいバグはまだまだあるけど、基本はしっかりしている。
その細かい部分は多くの環境で使ってみないとなんとも言えないので、
このスレで議論するのは意味があると思う。
思うだけだけど。
ところで --loadpath オプションでは複数のパスをコロンで区切って渡せる?
Windows ではコロンはドライブレターの表記に使う。
コロンに特別な意味があると絶対パスを使えないことになる。
修正要。
0205デフォルトの名無しさん
2009/08/08(土) 01:58:30というより一人基地が混じってるだけだが
0206デフォルトの名無しさん
2009/08/08(土) 02:03:310207デフォルトの名無しさん
2009/08/08(土) 02:06:070208デフォルトの名無しさん
2009/08/08(土) 02:11:28本も出ているし、いちいち宣伝に来ない
0209デフォルトの名無しさん
2009/08/08(土) 02:18:16ヘッダファイルの中で
#if (_WIN32_WINNT >= 0x0501)
という記述で囲まれて宣言しているので、
マクロ定義次第で同様のことは避けられそう。
0210デフォルトの名無しさん
2009/08/08(土) 02:19:05何言ってるんだ。宣伝しに来たことあるよ。
0211デフォルトの名無しさん
2009/08/08(土) 02:24:12このスレ住人で今まで Mosh 知らんかったやつがいるのか?
0212デフォルトの名無しさん
2009/08/08(土) 02:25:120213デフォルトの名無しさん
2009/08/08(土) 02:31:52通知してくれ
0214デフォルトの名無しさん
2009/08/08(土) 02:33:370215デフォルトの名無しさん
2009/08/08(土) 05:02:19エラーメッセージがEmacsで拾えなかった。STDERRへの出力に問題があるのでは?
R6RSだとloadが無いけどどうするの?
竹内関数、かなり速かった。
mosh>(time (tak 12 6 0))
;;1.6406230926513672 real 1.625 user 0.0 sys
12
mosh>
gosh> (time (tak 12 6 0))
;(time (tak 12 6 0))
; real 1.390
; user 1.391
; sys 0.000
12
gosh>
0216デフォルトの名無しさん
2009/08/08(土) 05:17:43そんなに悪く言う奴もいなくなると思うが。ひげぽん、どうよ?
0217デフォルトの名無しさん
2009/08/08(土) 05:21:55直してパッチ送れよ
つかえないなあ
0218デフォルトの名無しさん
2009/08/08(土) 06:04:55http://d.hatena.ne.jp/higepon/20090807/1249655156
不具合報告
不具合報告(http://code.google.com/p/mosh-scheme/issues/list)までお願いします。
もし面倒であれば、ここのコメント欄に書いていただくのでもかまいません。
0219デフォルトの名無しさん
2009/08/08(土) 06:41:59今の段階で宣伝されてもうざいだけ
0220デフォルトの名無しさん
2009/08/08(土) 07:45:260x00 が出力されてるな。
内部的には ucs4 を使ってるとかいう話があったので、
変換がうまくいってないのかも。
0221デフォルトの名無しさん
2009/08/08(土) 07:58:57(display "a" (standard-error-port)) でもやっぱりおかしい。
stderr への出力全般がダメっぽいな。
0222ひげぽん ◆Ngzcp/NZpA
2009/08/08(土) 11:08:02>>194
すみません。
>>198
>>200
R6RS にも準拠したし俺俺Lisp を脱したかなと思って宣伝してみたのですが
不愉快だったらすみません。
>>203
方向性は実用です。ライブラリを増やしたり速度を気にしたりするのも実用を目指してのことです。
>>204
ありがとうございます。そういっていただけると助かります。
> ところで --loadpath オプションでは複数のパスをコロンで区切って渡せる?
はい。使えます。
なるほど。Windows の場合は ; を区切り文字とするように修正します。
>>209
そうですね。
ここに対策が載っていたので修正します。
http://yanchde.gozaru.jp/winsock2/freeaddrinfo.html
>>213
Gauche 並はまだまだ遠いです。がんばります。
0223ひげぽん ◆Ngzcp/NZpA
2009/08/08(土) 11:09:33> エラーメッセージがEmacsで拾えなかった。STDERRへの出力に問題があるのでは?
Windows では標準出力、エラー出力で WriteConsole 関数を使っているのですがそれがまずいのかもしれません。
Emacs は Meadow とかでしょうか?(試してみたいので)
> R6RSだとloadが無いけどどうするの?
REPL から動的にコードをロードしたいという意味でしょうか?
ライブラリ形式で保存しておいて (import library-name) はどうでしょう。
> 竹内関数、かなり速かった。
まだ Gauche より若干遅いですね。がんばります。
> 216
> 別に宣伝するのは構わないが、もう少しスレで質問に答えたりすれば
> そんなに悪く言う奴もいなくなると思うが。ひげぽん、どうよ?
可能な限りがんばります。
0224ひげぽん ◆Ngzcp/NZpA
2009/08/08(土) 11:12:49>>217
いえバグの内容を指摘してもらえるだけで十分ですよ。
>>219
すみません。
どれくらいの段階になったらよいでしょう?
言語処理系は完成の定義が難しいですよね。
>>220
>>221
ありがとうございます。
内部コードは UCS4 でそれを UTF16 にして WriteConsole に渡しています。
cmd.exe でも出力されていないとかだったらかなりまずいですね。
0225デフォルトの名無しさん
2009/08/08(土) 12:35:58cmd.exe の上ではちゃんと表示される。
>>223
> Emacs は Meadow とかでしょうか?
俺は >>215 じゃないけど、少なくとも GNU Emacs 23.1.1 では再現することを確認した。
具体的には GNU Emacs 23.1.1 (i386-mingw-nt5.1.2600) of 2009-07-30 on SOFT-MJASON
>>215
> R6RSだとloadが無いけどどうするの?
そんなこと言ったらそもそも repl だって R6RS には無いぞ。
Haskell みたいに repl では定義を禁止にしたら意味論の破綻はないかも。
そう考えると R6RS って動的な性質が制限されてて Lisp 系言語っぽくないよね。
とりあえず emacs から使う分にはファイル範囲を全選択して C-c C-r でいいんじゃね?
0226デフォルトの名無しさん
2009/08/08(土) 12:40:45http://msdn.microsoft.com/ja-jp/library/cc429845.aspx
WriteConsole 関数は、コンソールハンドル以外にリダイレクトされている標準ハンドルを渡すと失敗します。
emacs に限らずリダイレクトしたらダメってことだよな。
使えないなぁ…。
0227デフォルトの名無しさん
2009/08/08(土) 12:42:27使えないなぁ…。
0228デフォルトの名無しさん
2009/08/08(土) 12:54:28Mosh のコンパイルには Mosh が必要だったり、
環境を構築するのが面倒なんだわ。
今までは Linux とかのまともに Mosh が動く環境で一部の処理をしてから
もちこんだりとか、かなり構造を理解してないとわけわかんなかったけど、
今回は Windows でもそれなりに動くバイナリ提供してくれたんで、
これでコンパイル環境ととのえてみる。
0229デフォルトの名無しさん
2009/08/08(土) 13:25:06まだ gosh 使ってんの?
0230デフォルトの名無しさん
2009/08/08(土) 14:06:190231デフォルトの名無しさん
2009/08/08(土) 14:07:06ネタが無いのかね。
0232デフォルトの名無しさん
2009/08/08(土) 14:07:51いや、そこで Mosh 自身を使うもんじゃね?
という意味で。
0233デフォルトの名無しさん
2009/08/08(土) 14:28:36おそまきながら mosh(0.2.0) インストール(Mac OS X 10.4.11)。
make test も多分問題ないと思う(8917 tests passed と出た)。
0234デフォルトの名無しさん
2009/08/08(土) 14:37:22Running 1898/1943
まで表示してエラー。
エラーっていうか
Windows が
「問題が発生したため、mosh.exe を終了します。ご不便をおかけして申し訳ありません。」
のダイアログを表示するエラー。
test/ffi.scm の途中でも同様のエラー。
その他はOK。
0235デフォルトの名無しさん
2009/08/08(土) 14:44:060236デフォルトの名無しさん
2009/08/08(土) 14:46:56gauche は gauche 使ってるよ。
svn trunk も常に「最も最近のリリース版」を使ってビルドできるようになってる。
0237デフォルトの名無しさん
2009/08/08(土) 14:47:400238デフォルトの名無しさん
2009/08/08(土) 14:54:01遅レスだが、 gauche の define-macro で書いてみた。
(use srfi-1)
(define-macro (curry p . a)
(define (e a)
(define s '(<1> <2> <3> <4> <5> <6> <7> <8> <9>))
(take s (+ 1 (apply max -1
(filter-map
(lambda(p)(list-index (cut eq? p <>) s)) a)))))
(receive (h t) (break (pa$ eq? '<...>) a)
(if (null? t)
`(lambda ,(e a) (,p ,@a))
(let ((r (gensym)))
`(lambda (,@(e a) . ,r)(apply ,p ,@h ,r))))))
最後以外に <...> があった場合のことは考えてない。
0239デフォルトの名無しさん
2009/08/08(土) 14:55:08(import (rnrs)
(only (srfi :1) take list-index filter-map)
(only (srfi :26) cut))
(define-syntax curry
(lambda(x)
(define (e a)
(define s '(<1> <2> <3> <4> <5> <6> <7> <8> <9>))
(take s (+ 1 (apply max -1
(filter-map
(lambda(p)(list-index (cut eq? p <>) s))
(syntax->datum a))))))
(syntax-case x ()
((k t a ...)
(with-syntax
(((p ...) (datum->syntax #'k (e #'(a ...)))))
#`(lambda (p ... . r)
#,(syntax-case #'(a ...) (<...>)
((a ... <...>) #'(apply t a ... r))
(_ #'(t a ...)))))))))
0240デフォルトの名無しさん
2009/08/08(土) 14:58:24guile> 1
gosh> 1
mosh>1
なんかポリシーがあるのかな。moshだけ空白が無い。
0241デフォルトの名無しさん
2009/08/08(土) 15:01:59Ypsilon と Petite Chez Scheme も空白アリだったぜ!
0242デフォルトの名無しさん
2009/08/08(土) 15:18:07C:\Users\username>mosh -v
Mosh R6RS scheme interpreter, version 0.0.8
こういうものなんですか?
0243デフォルトの名無しさん
2009/08/08(土) 15:28:29gaucheはschemeの実行に必要な部分をschemeで作ってないからできるんじゃないか?
0244デフォルトの名無しさん
2009/08/08(土) 15:49:240245デフォルトの名無しさん
2009/08/08(土) 15:55:48関係ない。
Gauche のコンパイラ部分は全面的に Scheme で記述されているし、
VM も Scheme で記述されるようになってる部分がある。
VM についてはインストラクションの合成を簡単に記述したいといった
性能向上を目的とした改善が最近のバージョンで有り、
切り替えの際には多少の混乱があったが、
今は VM が変わっても大丈夫なシカケが入っている。
もちろん、ずっと前の初期の Gauche だと話は別だが、
現在は Gauche 自身でブートストラップが完結するようになっている。
0246245
2009/08/08(土) 16:02:27http://practical-scheme.net/wiliki/wiliki.cgi?Gauche%3aVM%E5%91%BD%E4%BB%A4%E3%82%BB%E3%83%83%E3%83%88%E3%81%AE%E5%A4%89%E6%9B%B4%E3%81%A8%E3%83%93%E3%83%AB%E3%83%89
0247デフォルトの名無しさん
2009/08/08(土) 16:09:27Mosh でも動いた。
0248デフォルトの名無しさん
2009/08/08(土) 16:30:59> このプリコンパイルには既にインストールされている、その時点での最新リリースのGaucheを使うことになっている。
ブートストラップの疑問は解決しないように見えるんだが。
俺の理解不足?
0249デフォルトの名無しさん
2009/08/08(土) 16:40:480250215
2009/08/08(土) 17:05:24Meadowです。
importを使ってみます。使い方がまだよくわからないもので。
Replでの実行中にCtrl+Cでの中断に反応してこないです。
WindowsのAPIではGenerateConsoleCtrlEventが使われているはずです。
http://msdn.microsoft.com/ja-jp/library/cc429265.aspx
CTRL_C_EVENT には反応しないのですが、
CTRL_BREAK_EVENT(Ctrl+D)には反応して処理系が強制終了します。
REPLでのプログラムファイルの読み込み、実行、中断がやり易くなるとうれしいです。
0251デフォルトの名無しさん
2009/08/08(土) 18:09:56ypsilon には macro-expand があるけど全部展開しちゃうし(macroexpand-1 みたいなのはないみたい
mosh や ikarus にはそういう機能がないっぽい
DrScheme の Macro Stepper が今のところ最有力なのかな
0252デフォルトの名無しさん
2009/08/08(土) 19:18:04■ このスレッドは過去ログ倉庫に格納されています