1read 100read
2012年5月プログラム116: Lisp Scheme Part34 (549)
TOP カテ一覧 スレ一覧 2ch元 削除依頼 ▼
米国国防省の標準高等言語エイダ(Ada)を語れ! (782)
【GUI】wxWidgets(旧wxWindows) その5【サイザー】 (429)
ふらっとVisual C#,C♯,C#(初心者用) Part94 (197)
Perl忍者最終決戦〜ゲスッ復活プロジェクト (438)
ニートの俺が何か開発して食いつなぐスレ (802)
CLDC+MIDP+携帯電話用Javaスレッド part 9 (921)
Lisp Scheme Part34
1 :12/01/29 〜 最終レス :12/05/28 Common Lisp、SchemeをはじめとするLisp族全般のスレです ■前スレ Lisp Scheme Part33 http://toro.2ch.net/test/read.cgi/tech/1318150738/ ■テンプレ http://wiki.fdiary.net/lisp/ ■関連スレ 【入門】Common Lisp その8【質問よろず】 http://hibari.2ch.net/test/read.cgi/tech/1309940115/
2 : SICP taught in Python 3 http://www-inst.eecs.berkeley.edu/~cs61a/sp12/book/index.html
3 : 一乙
4 : lispの便利さを最近実感してきたので lisp使う人が減るのはむしろ嬉しい
5 : >>4 その見解おかしいよ、廃れて嬉しいって感受性がヤバイよ
6 : 勝手にネガキャンしてくれる人のおかげで 便利なものの独占度が高まるなんて これ以上のことはない Lispを見えないように水面下で使えるようになるには 1年ぐらい準備期間いる気がする
7 : 他の言語には世界中の人間が 寄ってたかって作ったライブラリが山のようにあるのだが
8 : そうだね その通りだよ
9 : Lispの最大の欠点はまともなGUIライブラリがないことだな だれかgtkかqtをバインディングしてくれないかな
10 : CLのライブラリは使えないの?
11 : ほとんどの処理系にgtkとqtへのバインディングはあるはず。 誰かschemeのCLOSもどき上にCLIMもどきを作らないかな。もっともGUIビルダーもないし、外見がイケてないから使わない気がするけど。
12 : GObject introspectionに対応すればgtk+3などに自動でバインディングできるようになったらしい。 lispぽく使おうとすると色々ラップする必要はあるかも。
13 : LTkってどうなの
14 : 誰も話題にしていないけど、guile2.0来ているんだよなあ。 2011-02-16 GNU Guile 2.0.0 released. ttp://www.gnu.org/software/guile/news.html + New REPL, new debugger A read-eval-print-loop (REPL) is available. Compared to the REPL in earlier releases, it supports "meta-commands" that provide convenient access to interactive programming features. For instance, the ,compile meta-command compiles the given expression, ,profile shows an execution profile of the given expression, etc. + Unicode support Scheme strings can hold any Unicode character, and ports can read and write Unicode text in various encodings. + Partial R6RS compatibility The library and import forms of R6RS are supported, and all the R6RS libraries defined in the standard are available. See "R6RS Incompatibilities" in the manual, for details about remaining incompatibilities. + New dynamic foreign function interface The (system foreign) module provides a new dynamic foreign function interface (FFI). It allows bindings to C libraries to be written without a single line of C code.
15 : 竹内関数でBenchmarkしてみたけど、gaucheと同等の速度になっている。 ;;gauche real 0m0.744s user 0m0.730s sys 0m0.000s real 0m0.695s user 0m0.690s sys 0m0.003s ;;guile2.0.3 real 0m0.780s user 0m0.773s sys 0m0.007s real 0m0.780s user 0m0.777s sys 0m0.003s ;;guile1.8 real 0m4.263s user 0m4.193s sys 0m0.003s real 0m4.510s user 0m4.506s sys 0m0.000s
16 : Guile 2.0っていつの話題だよwほぼ一年前の話じゃん。 2.0.5のアナウンスがc.l.sに来てたぞ。
17 : 3.11でバタバタしていたからなあ。 あと自分はschemerじゃないし。
18 : Guileメインの日本人が少ないからでしょ。
19 : 太るschemer
20 : ソニックブー
21 : Guile 2.0.5 を MinGW でビルドしようとしたけどうまいこといかへんかった。
22 : http://ghettojedi.org/shen-js-repl/ Chromeでしか動いてないらしい。
23 : >>22 少し試してみたけど、Firefoxでも動作してるみたいだよ。
24 : 処理系何使ってるんだ?やっぱりGauche? archだとguileだけ異常にシェア高い
25 : >>23 MLなんか読み間違えてた、ありがとう
26 : 周辺やwebの情報量から日本限定だとgauche一強のイメージ。性能も良いし、ドキュメントもしっかりしてる。実行ファイルを出したい人以外はgaucheを使ってるイメージ。 あと日本で流行るには日本語が通る、日本人の開発者が居る、あたりが重要。 外人だけだと日本語処理の細かい部分が微妙だったり、ユーザーライブラリは日本語が通りませんになったりする。 archといえばaurのgauche-git版だけど、ビルドの依存にgosh本体がないからビルド出来んぞ。
27 : Archlinux、すごいなあ。 16時間30分後には最新バージョンが使えるようになっている。 ftp://ftp.gnu.org/gnu/guile/guile-2.0.5.tar.xz guile-2.0.5.tar.gz. . . Jan 30 21:46 6.60M guile-2.0.5.tar.gz.sig. Jan 30 21:46 198 $ ls -la /tmp/yaourt-tmp-hoge/aur-guile-devel/PKGBUILD -rw-r--r-- 1 hoge hoge 856 Feb 1 13:36 /tmp/yaourt-tmp-hoge/aur-guile-devel/PKGBUILD >>26 gaucheは非gauche-git版入れているなあ。
28 : >>22 Firefoxだけど動いたよ
29 : >>22 たぶんこれ。 [Exception... "Security error" code: "1000" nsresult: "0x805303e8 (NS_ERROR_DOM_SECURITY_ERR)" location: "http://ghettojedi.org/shen-js-repl/repl.js Line: 94"] http://code.google.com/p/swfintruder/issues/detail?id=1
30 : ttp://jp.franz.com/index.html 死んだ?
31 : >>30 ping は返ってくるね
32 : >>30 復活したっぽい。 Page Information Title: Franz Inc.: Allegro Common Lisp (Japanese) URL: http://jp.franz.com/index.html Document Type: text/html Last Modified: Thu Apr 22 11:07:21 2004 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Header Information HTTP/1.1 200 OK Date: Thu, 02 Feb 2012 19:28:24 GMT Connection: Close Server: AllegroServe/1.2.50 Content-Type: text/html Content-Length: 478 LAST-MODIFIED: Thu, 22 Apr 2004 02:07:21 GMT
33 : よかったよかった
34 : http://planet.racket-lang.org/ stack やqueueぐらい誰か作ってるだろうと思ったらなかった racket中途半端だな
35 : キューはあるみたいだよ。 http://docs.racket-lang.org/data/Imperative_Queues.html?q=queue&q=stack スタックはリストで簡単に再現できるから、需要が低いんじゃないか。 特化したものを実装したいなら自前で実装するって感じで。単なる想像だけど。
36 : racketの場合set-car!が使えないからスタックは簡単には作れない
37 : スタックを作るのに set-car! が必要かい?
38 : http://stackoverflow.com/questions/1041603/how-do-i-write-push-and-pop-in-scheme
39 : リスト持ってるだけの構造体(かレコード)かクラス定義すれば、 set-car!使わなくても簡単にスタック実装できると思う。
40 : 107 :ec2-50-16-143-240.compute-1.amazonaws.com : :2012/02/06(月) 01:56:49.34 ID:xBgBe+y50 qsocksのソースです http://codepad.org/uyuG7Ovg ちなみにあたしは高校生です 勉強の息抜きに,あひるちゃんでも発狂させて遊ぼうと考えて作りました 主目的の達成はなりませんでしたが,他の変なのが発狂してて楽しかったので良しとします プログラミング歴は3ヶ月くらいです.マクロとかクラスとか全然わかりません
41 : SchemerのJKだと…? Coqを嗜むJKといい、日本始まったな。
42 : >>40 なんでsxmlつかわんの? べたで (format "~a ~a ~a ...") とかみてscheme使う意味あるのかと
43 : Schemeって出力付近までS式じゃないとダメなん?
44 : プログラム歴三ヶ月相手に何を言ってるんだ。
45 : >>42 Schemeって言語自体がS式をベースにした単純なものであることが重要なわけで別にそこは全然いらないだろ
46 : JKと聞いて喜び勇んで来たおっさんにそんな無粋な突っ込みしても…
47 : http://d.hatena.ne.jp/niitsuma/20120203/1328505028 型推論もどきコンパイラー作ったら Gambit-Cの10倍の速度でた 3倍はありえるけど10倍は何か間違ってる気がする
48 : FFTならあり得るんじゃないの?
49 : flonumをboxしないで扱えるなら圧倒的に強いと思う。 型推論で競うならStalinじゃないか。R4RSで止まってるから実用プログラムを書くのは しんどいけど。
50 : MacでStalinは動かないようです もうちょっとがんばってMacで最速と言い張れないか試してみようと思います
51 : chicken-eggsにある移植版stalinならmacでも動くんじゃない?
52 : c.l.sへの投稿乙。興味持ってくれる人いると良いね。
53 : >>51 http://wiki.call-cc.org/eggref/4/stalin The compiler has been tested on Mac OS X 10.4 (ppc) Intel Mac は無理っぽい
54 : >>52 c.l.sって何の略? アドレス、教えて。
55 : ecl 12.2.1が出てたのに今気付いた。 enable-unicodeがデフォになった。 weak-hashが入ってdrakmaが動くようになった。 Archのextraはまだ前のVer。Aurのgit版は--enable-hoehm=を変更する必要あり。 >>53 Macは持っていないからスマンけど、ビルドが出来るか確認した? chickenは移植性が高いし、ソースもschemeみたいだけど。
56 : >>54 横レスだけど、たぶんcomp.lang.scheme。
57 : >>54 ニュースグループの comp.lang.scheme のこと。 ネットニュースなので NNTP に対応したクライアントで見るのが本来だが、 サーバが減りまくっていてまともに繋げるところが少ない。 今ではありがたいことに google group 経由で見れる。 https://groups.google.com/group/comp.lang.scheme/topics?hl=ja
58 : stalin本家も移植性に気を使ってるコードだから、手間をかけずに移植できる気がする。 とはいえ型推論するschemeコンパイラの需要は多大なので期待しております。
59 : >>53 http://www.ibm.com/developerworks/jp/opensource/library/itm-progevo4/ StalinはCを介してネイティブコードを出力するのですが、gcc-4系列ではgcc自身の最適化ルーチンが終了しなくなるので、gcc-3系列を用いて処理系をビルドする必要があります。 Intel Macにgcc3は入らない http://discussions.apple.com/thread.jspa?messageID=6900842 http://iodonacht.blog90.fc2.com/?mode=m&no=27
60 : >>56-57 サンクス
61 : >>59 これかな。 ttp://newsgroups.derkeiler.com/Archive/Comp/comp.lang.scheme/2006-02/msg00002.html
62 : lispやscheme系で10年後にも開発が継続しているのはどれだろう? gaucheは中の人が精力的に更新しているけど本人が倒れてしまったらどうなるかわからない 手堅いのはchickenやracketあたりか
63 : それはわからないよ。 Gauche は確かに shiro さんが今のところはほぼ全てを支配しているけど、 拡張パッケージを見ると Gauche の内部構造を良く理解していないと 実現できないものとかもあったりするので、そんな人たちならいつでも 開発を引き継げると思う。 ある程度大きな開発コミュニティがあるものも、それはそれで分岐したり なんなりがありうるから現状の体制のまま 10 年後もあるかっていうと疑問だな。 統計的には、今まで長く続いているものはこれからも長く続く可能性が高いけど。
64 : gaucheはソースが綺麗だから引き継ぐ人が出易いと思う。 R7RSが決まればscheme処理系毎の差異も小さくなるだろうし、そんなに心配はしてない。 racketは独自路線すぎてついていけない。 型推論するR5RS compilerが欲しいなー(チラッ R7RSといえばsyntax-caseだけは嫌なので、explicit renamingが採用されて欲しいな。R6RSがあんな美しくないミニ言語を入れた理由が分からない。
65 : r7rsていつ決まるの?
66 : >>64 > あんな美しくないミニ言語 解が見つからないまま publish に至っちゃった結果なんじゃないかなぁ。 Scheme マクロの出発点は「文脈によって意味が変わらないマクロを定義したい」 というところなんだろうけど、それがどうにも上手く行かない。 Common Lisp の symbol は名前を持つ object であるのに対し、 Scheme の symbol はちょっと変わった文字列でしかない。 つまり (eq? (string->symbol "foo") 'foo) => #t であることが保証されている。 ということは explicit renaming では 文脈によって意味が変わらないマクロを定義できない。 というわけで Scheme のマクロ変換の対象となるのは マクロ変換時の情報を格納したオブジェクト(構文オブジェクト)とならざるを得ない。 で、マクロ変換時の情報って何よ? ってなったときにどうにも合意できるものが無い。 合意できるものがないので (datum->syntax identifier datum) という identifier の中に隠れた(仕様書に無い)構文情報を datum に付加できる手続きを仕様とすることでなんとなく合意された。 と推測している。
67 : 個人的にはsyntactic closureが良いなー。レガシーマクロっぽくて。 explicit renamingでも良いけど、何度もrenameするの面倒な気がする。 http://d.hatena.ne.jp/leque/20080528/p1
68 : なんで scheme って、衛生的マクロに拘るの? defmacro の方が、シンプルかつ必要最小限じゃん?
69 : defmacroはbrokenだから。どう使っても確実に動くというマクロが書けない。 運用上のルール (RnRSで定義されてるグローバル束縛をシャドウするローカル変数は作らない、とか) で回避できなくはないけど、そこで妥協したらSchemeじゃない。
70 : やだ、かっこいい・・・
71 : ファミコンをCommon Lispでプログラミング。 http://developers.slashdot.org/story/12/02/07/0043241/hacking-the-nes-with-lisp
72 : >>69 ごめん、よく知らないんだけど、そもそもそういう思想なの? 刃物が危ないから規制する、みたいな感じに受け取れるんだけど…。 マクロの外側では普通に、グローバル束縛をシャドウするローカル変数、って(作っちゃだめだけど)作れるんだよね? (define (let) 10) でめっちゃめちゃだよね? なんで defmacro だけ目の敵に…。
73 : >>72 let を変な風に定義しなおしたとしても、何も変えてない let* とか letrec とかは今まで通り普通に動いてほしい でも let* がマクロで let に展開されると、変な風に変えた新しい let を使うと、正しく動かなくなってしまう 自分が let を使うときは自前の定義した let を使いたいけど、 let* とかがマクロの内部で使ってる let は元々の let を使ってくれれば、素敵だと思わない? そんな気持ち
74 : macroは式の変形なので、普通にやると展開時の文脈で評価されてしまう。 これに対してCommon Lispではgensymやパッケージ指定や命名規則で対応する。 schemeはLisp-1で名前空間が少ないのでCommon Lispと同じ対応は難しいし、直交しないので美しくない。 そこで定義時の文脈で評価する清潔なマクロを使用する。 R5RSのsyntax-rulesは純粋に定義時の文脈しか参照できない。 そこでR6RSに文脈を好き組み合わせられるsyntax-caseが入った。これは文脈を選べるので古典的マクロより強力。 ただsyntax-caseは通常のLispの文法に似ていないし、パターンマッチなど余計な仕事をしているので美しくない。 そこでexplicit renamingかsyntactic closureに変更しろという文句が出て来る。
75 : 個人的な感想だと、explicit renaming=gensym類似、syntactic closure=closure類似、syntax-case=Lispじゃない。
76 : >>72 マクロじゃない、普通のライブラリは既にそういう分離が出来てるから。 自分のモジュールで (define car '(toyota prius)) したら、突然 標準ライブラリで内部でcarを読んでる関数が全部動かなくなる、なんてことはないよね。 (R6RS以降、もしくはR5RS+適切なモジュールシステムを使ってれば)。 マクロでもそれと同じことを保証したいけど、defmacroではできない、っていうこと。
77 : >>68 小さければ良いというものではないよ。 プリミティブとしてふさわしいかどうかっていうことが重要で、 結果的にある程度小さいことが求められる。 defmacro がふさわしくない理由は↓の記事が詳しい。 http://blog.practical-scheme.net/shiro/20100425-scheme-macro
78 : >>72 > なんで defmacro だけ目の敵に…。 昔は手続きにも同じ問題があった(funarg問題)。 これに対してはレキシカルクロージャで一応解決した。 Scheme はマクロの方も解決しようとしている。 でもみんなが満足する解は今のところみつかってない。
79 : >>64 >型推論するR5RS compilerが欲しいなー(チラッ 今がんばっています
80 : >>79 ほうほう 楽しみにしています
81 : Schemeの衛生マクロではアナフォリックマクロみたいな意図的に変数捕捉するマクロは書けないと聞いた。 まあaifくらいしか使わないけど・・・ 他にもdefmacroでしかできないようなことってある?
82 : アナフォリックマクロは無理矢理スコープをねじ曲げて作ってるのを何ヶ所かで見たことがある。 多分、ググれば出て来る。
83 : >>81 かなり面倒くさいが出来ないわけではない。 http://d.hatena.ne.jp/leque/20100826/p1
84 : syntax-rulesでは面倒でもsyntax-caseなら普通に出来るじゃん。 R5RS処理系でも主要な物には外部変数捕捉が可能な健全なマクロシステムが入ってるよ。
85 : >>81 defstruct みたいに prefix 付き手続きを自動生成するとか。
86 : R6RS のマクロと defmacro の差ってことで言えば defmacro でないと出来ないことってのはほとんど無いと思うなぁ。 むしろ defmacro には出来ないことがあると思う。 一応 >>81 が期待している回答が syntax-rules と defmacro の比較と仮定すると、 >>85 の他に マクロ展開時の数値計算みたいなのとかも syntax-rules では無理ってことになるんじゃないかな。 例えば (plus 1 2) を 3 に展開するみたいなのは無理。 (define-syntax plus (syntax-rules () ((_ 1 2) 3))) みたいな感じで全ての数値の組み合わせを網羅するとかいった方法が無いでもないが非現実的だわな。
87 : 一段落目のあいまいな内容の感想文ワロタ
88 : 思想が違うものなので比較するのが難しい。 R6RS のマクロは defmacro に出来る大抵のことは出来るはずだけど、 展開時に使う関数は別のライブラリに分けなきゃならない制限があったりする。 (フェイズの分離がライブラリ単位。) 「defmacro は関連定義をひとつのパッケージにまとめることが出来る (が R6RS のマクロはそうではない)」 という点で能力の差と言えなくもないけど、定義したマクロを使う分には関係無いので単に記法の違いと言えなくもない。 一方で、 >>77 にあげたように「defmacro では完全に変数衝突を避けることは出来ない」というのは 定義したマクロを使う時にも注意を強いるという点で「defmacro には出来ないことがある」と考えた。 つまり、定義時の楽さや複雑さを置いといて、どれだけマクロの中に隠蔽できるか (マクロ使用時に見えないか) で測ると >>86 という意見になるわけだけど、そうじゃない解釈もできるので曖昧な文章になってしもたという感じ。
89 : Creating Languages in Racket http://queue.acm.org/detail.cfm?id=2068896 特別な内容という訳ではないと思うけど、queueだけではなく John McCarthyが表紙のacm会誌('12/01)にも転載されてた。
90 : RacketのGUIをちょっとやってみたけど、 message%のlabelが全部表示されない だめだな
91 : ふと気になったんだけど、schemeって代数幾何でいうスキームと何か関係あるの?
92 : >>91 無い。
93 : Scheme の名前の由来はこの記事が詳しい。 http://www010.upp.so-net.ne.jp/okshirai/scheme-20070402222203.txt
94 : >>93 ありがとう 勉強になった
95 : 新宿ジュンク堂が閉店するみたいだ。残念。 Lisp関連書籍やものまね鳥なんか買うことが出来てお世話になった。
96 : ぇえー残念 って、そういえば、三越自体がなくなるせいか まぁ仕方ないね
97 : ジュンク堂自体はおなじ規模でどんどん出店してるから、また新宿に出来るかもね。
98 : 後釜のビックが書籍のフロアを頑張ってくれると有難いんだが。
99 : 新宿三丁目のあたりで良いからまた店出して欲しいな。
100read 1read
1read 100read
TOP カテ一覧 スレ一覧 2ch元 削除依頼 ▲
英語は、訳さずに読もう with 英英辞典 (235)
HelloWorld集めようぜ (204)
【Lua】組み込み系言語総合 その5【Squirrel】 (537)
Rubyについて(アンチ専用) Part004 (723)
COM (299)
【激突】関数型言語 VS オブジェクト指向言語2 (997)
--log9.info------------------
【XBOX360】ゾイドインフィニティNeo 2スレ目 (914)
↑と↓のスレタイをZiユニゾンさせて遊ぶスレ (684)
ゴジラとゾイドの関連性 (150)
( ゚ー゚)よいこのぞいどひゃっか(゚ー゚ ) (410)
各種狂アンチ……気色悪っ×4 !!! (467)
ZOIDSのアニメ総合その6 (430)
【ゾイド系サイトのヲチスレ】 (426)
●○●やっぱりセイバータイガーが一番 MK2●○● (283)
レイ・グレッグを弾圧するスレ (332)
■□■正直シールドライガーが一番 mk2■□■ (409)
小5のガキがゾイドで大爆笑 (227)
おまえらはびっくりするほどスルーが出来ない (222)
みんな何歳? (704)
>>371をよびもどすすれ (127)
緊急告知!コロコロアニメがゾイドに決定!! (157)
■ 移転ですー (388)
--log55.com------------------
【スクスト】スクールガールストライカーズ part152
【忍ボル】NARUTO X BORUTO 忍者BORUTAGE 3
【糞運営】プリンセスコネクト! Re:Dive Part440【プリコネ】
ねこあつめ 76匹目
【○】逆転オセロニア part258【●】
【ブレファン】ブレイブファンタジア Part.27
【専ブラ】2ちゃんねるブラウザ 「2chMate」part185
【9月14日リリース】侵攻のオトメギアス part2【Vector】