1read 100read
2012年3月プログラム139: Lisp Scheme Part34 (336) TOP カテ一覧 スレ一覧 2ch元 削除依頼
△△もっとStruts2の良さを教えてくださいSsssion6 (625)
【node.js】サーバサイドjavascript【Rhino】 (678)
UNIXプログラミング質問すれ Part10 (438)
Perl忍者最終決戦〜ゲスッ復活プロジェクト (430)
CVS導入スレ〜 Rev.3 (835)
HSPプログラムコンテスト2011【part 2】 (189)

Lisp Scheme Part34


1 :12/01/29
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 :12/01/29
SICP taught in Python 3
http://www-inst.eecs.berkeley.edu/~cs61a/sp12/book/index.html

3 :12/01/29
一乙

4 :12/01/31
lispの便利さを最近実感してきたので
lisp使う人が減るのはむしろ嬉しい

5 :12/01/31
>>4
その見解おかしいよ、廃れて嬉しいって感受性がヤバイよ

6 :12/01/31
勝手にネガキャンしてくれる人のおかげで
便利なものの独占度が高まるなんて
これ以上のことはない
Lispを見えないように水面下で使えるようになるには
1年ぐらい準備期間いる気がする

7 :12/01/31
他の言語には世界中の人間が
寄ってたかって作ったライブラリが山のようにあるのだが

8 :12/01/31
そうだね
その通りだよ

9 :12/01/31
Lispの最大の欠点はまともなGUIライブラリがないことだな
だれかgtkかqtをバインディングしてくれないかな

10 :12/01/31
CLのライブラリは使えないの?

11 :12/01/31
ほとんどの処理系にgtkとqtへのバインディングはあるはず。
誰かschemeのCLOSもどき上にCLIMもどきを作らないかな。もっともGUIビルダーもないし、外見がイケてないから使わない気がするけど。

12 :12/01/31
GObject introspectionに対応すればgtk+3などに自動でバインディングできるようになったらしい。
lispぽく使おうとすると色々ラップする必要はあるかも。

13 :12/02/01
LTkってどうなの

14 :12/02/01
誰も話題にしていないけど、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 :12/02/01
竹内関数で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 :12/02/01
Guile 2.0っていつの話題だよwほぼ一年前の話じゃん。
2.0.5のアナウンスがc.l.sに来てたぞ。

17 :12/02/01
3.11でバタバタしていたからなあ。
あと自分はschemerじゃないし。

18 :12/02/01
Guileメインの日本人が少ないからでしょ。

19 :12/02/01
太るschemer

20 :12/02/01
ソニックブー

21 :12/02/01
Guile 2.0.5 を MinGW でビルドしようとしたけどうまいこといかへんかった。

22 :12/02/01
http://ghettojedi.org/shen-js-repl/
Chromeでしか動いてないらしい。

23 :12/02/02
>>22
少し試してみたけど、Firefoxでも動作してるみたいだよ。

24 :12/02/02
処理系何使ってるんだ?やっぱりGauche?
archだとguileだけ異常にシェア高い

25 :12/02/02
>>23
MLなんか読み間違えてた、ありがとう

26 :12/02/02
周辺やwebの情報量から日本限定だとgauche一強のイメージ。性能も良いし、ドキュメントもしっかりしてる。実行ファイルを出したい人以外はgaucheを使ってるイメージ。
あと日本で流行るには日本語が通る、日本人の開発者が居る、あたりが重要。
外人だけだと日本語処理の細かい部分が微妙だったり、ユーザーライブラリは日本語が通りませんになったりする。
archといえばaurのgauche-git版だけど、ビルドの依存にgosh本体がないからビルド出来んぞ。

27 :12/02/02
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 :12/02/02
>>22
Firefoxだけど動いたよ

29 :12/02/02
>>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 :12/02/02
ttp://jp.franz.com/index.html
死んだ?

31 :12/02/03
>>30
ping は返ってくるね

32 :12/02/03
>>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 :12/02/04
よかったよかった

34 :12/02/04
http://planet.racket-lang.org/
stack やqueueぐらい誰か作ってるだろうと思ったらなかった
racket中途半端だな

35 :12/02/05
キューはあるみたいだよ。
http://docs.racket-lang.org/data/Imperative_Queues.html?q=queue&q=stack
スタックはリストで簡単に再現できるから、需要が低いんじゃないか。
特化したものを実装したいなら自前で実装するって感じで。単なる想像だけど。

36 :12/02/05
racketの場合set-car!が使えないからスタックは簡単には作れない

37 :12/02/05
スタックを作るのに set-car! が必要かい?

38 :12/02/05
http://stackoverflow.com/questions/1041603/how-do-i-write-push-and-pop-in-scheme

39 :12/02/05
リスト持ってるだけの構造体(かレコード)かクラス定義すれば、
set-car!使わなくても簡単にスタック実装できると思う。

40 :12/02/06
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 :12/02/06
SchemerのJKだと…? Coqを嗜むJKといい、日本始まったな。

42 :12/02/06
>>40
なんでsxmlつかわんの?
べたで (format "~a ~a ~a ...") とかみてscheme使う意味あるのかと

43 :12/02/06
Schemeって出力付近までS式じゃないとダメなん?

44 :12/02/06
プログラム歴三ヶ月相手に何を言ってるんだ。

45 :12/02/06
>>42
Schemeって言語自体がS式をベースにした単純なものであることが重要なわけで別にそこは全然いらないだろ

46 :12/02/06
JKと聞いて喜び勇んで来たおっさんにそんな無粋な突っ込みしても…

47 :12/02/06
http://d.hatena.ne.jp/niitsuma/20120203/1328505028
型推論もどきコンパイラー作ったら
Gambit-Cの10倍の速度でた
3倍はありえるけど10倍は何か間違ってる気がする

48 :12/02/06
FFTならあり得るんじゃないの?

49 :12/02/06
flonumをboxしないで扱えるなら圧倒的に強いと思う。
型推論で競うならStalinじゃないか。R4RSで止まってるから実用プログラムを書くのは
しんどいけど。

50 :12/02/06
MacでStalinは動かないようです
もうちょっとがんばってMacで最速と言い張れないか試してみようと思います

51 :12/02/06
chicken-eggsにある移植版stalinならmacでも動くんじゃない?

52 :12/02/06
c.l.sへの投稿乙。興味持ってくれる人いると良いね。

53 :12/02/06
>>51
http://wiki.call-cc.org/eggref/4/stalin
The compiler has been tested on Mac OS X 10.4 (ppc)
Intel Mac は無理っぽい

54 :12/02/07
>>52
c.l.sって何の略?
アドレス、教えて。

55 :12/02/07
ecl 12.2.1が出てたのに今気付いた。
enable-unicodeがデフォになった。
weak-hashが入ってdrakmaが動くようになった。
Archのextraはまだ前のVer。Aurのgit版は--enable-hoehm=を変更する必要あり。
>>53
Macは持っていないからスマンけど、ビルドが出来るか確認した?
chickenは移植性が高いし、ソースもschemeみたいだけど。

56 :12/02/07
>>54
横レスだけど、たぶんcomp.lang.scheme。

57 :12/02/07
>>54
ニュースグループの comp.lang.scheme のこと。
ネットニュースなので NNTP に対応したクライアントで見るのが本来だが、
サーバが減りまくっていてまともに繋げるところが少ない。
今ではありがたいことに google group 経由で見れる。
https://groups.google.com/group/comp.lang.scheme/topics?hl=ja

58 :12/02/07
stalin本家も移植性に気を使ってるコードだから、手間をかけずに移植できる気がする。
とはいえ型推論するschemeコンパイラの需要は多大なので期待しております。

59 :12/02/07
>>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 :12/02/07
>>56-57
サンクス

61 :12/02/07
>>59
これかな。
ttp://newsgroups.derkeiler.com/Archive/Comp/comp.lang.scheme/2006-02/msg00002.html

62 :12/02/07
lispやscheme系で10年後にも開発が継続しているのはどれだろう?
gaucheは中の人が精力的に更新しているけど本人が倒れてしまったらどうなるかわからない
手堅いのはchickenやracketあたりか

63 :12/02/07
それはわからないよ。
Gauche は確かに shiro さんが今のところはほぼ全てを支配しているけど、
拡張パッケージを見ると Gauche の内部構造を良く理解していないと
実現できないものとかもあったりするので、そんな人たちならいつでも
開発を引き継げると思う。
ある程度大きな開発コミュニティがあるものも、それはそれで分岐したり
なんなりがありうるから現状の体制のまま 10 年後もあるかっていうと疑問だな。
統計的には、今まで長く続いているものはこれからも長く続く可能性が高いけど。

64 :12/02/07
gaucheはソースが綺麗だから引き継ぐ人が出易いと思う。
R7RSが決まればscheme処理系毎の差異も小さくなるだろうし、そんなに心配はしてない。
racketは独自路線すぎてついていけない。
型推論するR5RS compilerが欲しいなー(チラッ
R7RSといえばsyntax-caseだけは嫌なので、explicit renamingが採用されて欲しいな。R6RSがあんな美しくないミニ言語を入れた理由が分からない。

65 :12/02/07
r7rsていつ決まるの?

66 :12/02/08
>>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 :12/02/08
個人的にはsyntactic closureが良いなー。レガシーマクロっぽくて。
explicit renamingでも良いけど、何度もrenameするの面倒な気がする。
http://d.hatena.ne.jp/leque/20080528/p1

68 :12/02/08
なんで scheme って、衛生的マクロに拘るの?
defmacro の方が、シンプルかつ必要最小限じゃん?

69 :12/02/08
defmacroはbrokenだから。どう使っても確実に動くというマクロが書けない。
運用上のルール (RnRSで定義されてるグローバル束縛をシャドウするローカル変数は作らない、とか)
で回避できなくはないけど、そこで妥協したらSchemeじゃない。

70 :12/02/08
やだ、かっこいい・・・

71 :12/02/08
ファミコンをCommon Lispでプログラミング。
http://developers.slashdot.org/story/12/02/07/0043241/hacking-the-nes-with-lisp

72 :12/02/08
>>69
ごめん、よく知らないんだけど、そもそもそういう思想なの?
刃物が危ないから規制する、みたいな感じに受け取れるんだけど…。
マクロの外側では普通に、グローバル束縛をシャドウするローカル変数、って(作っちゃだめだけど)作れるんだよね?
(define (let) 10) でめっちゃめちゃだよね?
なんで defmacro だけ目の敵に…。

73 :12/02/08
>>72
let を変な風に定義しなおしたとしても、何も変えてない let* とか letrec とかは今まで通り普通に動いてほしい
でも let* がマクロで let に展開されると、変な風に変えた新しい let を使うと、正しく動かなくなってしまう
自分が let を使うときは自前の定義した let を使いたいけど、 let* とかがマクロの内部で使ってる let は元々の let を使ってくれれば、素敵だと思わない?
そんな気持ち

74 :12/02/08
macroは式の変形なので、普通にやると展開時の文脈で評価されてしまう。
これに対してCommon Lispではgensymやパッケージ指定や命名規則で対応する。
schemeはLisp-1で名前空間が少ないのでCommon Lispと同じ対応は難しいし、直交しないので美しくない。
そこで定義時の文脈で評価する清潔なマクロを使用する。
R5RSのsyntax-rulesは純粋に定義時の文脈しか参照できない。
そこでR6RSに文脈を好き組み合わせられるsyntax-caseが入った。これは文脈を選べるので古典的マクロより強力。
ただsyntax-caseは通常のLispの文法に似ていないし、パターンマッチなど余計な仕事をしているので美しくない。
そこでexplicit renamingかsyntactic closureに変更しろという文句が出て来る。

75 :12/02/08
個人的な感想だと、explicit renaming=gensym類似、syntactic closure=closure類似、syntax-case=Lispじゃない。

76 :12/02/08
>>72
マクロじゃない、普通のライブラリは既にそういう分離が出来てるから。
自分のモジュールで (define car '(toyota prius)) したら、突然
標準ライブラリで内部でcarを読んでる関数が全部動かなくなる、なんてことはないよね。
(R6RS以降、もしくはR5RS+適切なモジュールシステムを使ってれば)。
マクロでもそれと同じことを保証したいけど、defmacroではできない、っていうこと。

77 :12/02/08
>>68
小さければ良いというものではないよ。
プリミティブとしてふさわしいかどうかっていうことが重要で、
結果的にある程度小さいことが求められる。
defmacro がふさわしくない理由は↓の記事が詳しい。
http://blog.practical-scheme.net/shiro/20100425-scheme-macro

78 :12/02/08
>>72
> なんで defmacro だけ目の敵に…。
昔は手続きにも同じ問題があった(funarg問題)。
これに対してはレキシカルクロージャで一応解決した。
Scheme はマクロの方も解決しようとしている。
でもみんなが満足する解は今のところみつかってない。

79 :12/02/08
>>64
>型推論するR5RS compilerが欲しいなー(チラッ
今がんばっています

80 :12/02/09
>>79
ほうほう
楽しみにしています

81 :12/02/11
Schemeの衛生マクロではアナフォリックマクロみたいな意図的に変数捕捉するマクロは書けないと聞いた。
まあaifくらいしか使わないけど・・・
他にもdefmacroでしかできないようなことってある?

82 :12/02/11
アナフォリックマクロは無理矢理スコープをねじ曲げて作ってるのを何ヶ所かで見たことがある。
多分、ググれば出て来る。

83 :12/02/11
>>81
かなり面倒くさいが出来ないわけではない。
http://d.hatena.ne.jp/leque/20100826/p1

84 :12/02/11
syntax-rulesでは面倒でもsyntax-caseなら普通に出来るじゃん。
R5RS処理系でも主要な物には外部変数捕捉が可能な健全なマクロシステムが入ってるよ。

85 :12/02/11
>>81
defstruct みたいに prefix 付き手続きを自動生成するとか。

86 :12/02/11
R6RS のマクロと defmacro の差ってことで言えば defmacro でないと出来ないことってのはほとんど無いと思うなぁ。
むしろ defmacro には出来ないことがあると思う。
一応 >>81 が期待している回答が syntax-rules と defmacro の比較と仮定すると、 >>85 の他に
マクロ展開時の数値計算みたいなのとかも syntax-rules では無理ってことになるんじゃないかな。
例えば (plus 1 2) を 3 に展開するみたいなのは無理。
(define-syntax plus
(syntax-rules ()
((_ 1 2) 3)))
みたいな感じで全ての数値の組み合わせを網羅するとかいった方法が無いでもないが非現実的だわな。

87 :12/02/11
一段落目のあいまいな内容の感想文ワロタ

88 :12/02/11
思想が違うものなので比較するのが難しい。
R6RS のマクロは defmacro に出来る大抵のことは出来るはずだけど、
展開時に使う関数は別のライブラリに分けなきゃならない制限があったりする。
(フェイズの分離がライブラリ単位。)
「defmacro は関連定義をひとつのパッケージにまとめることが出来る (が R6RS のマクロはそうではない)」
という点で能力の差と言えなくもないけど、定義したマクロを使う分には関係無いので単に記法の違いと言えなくもない。
一方で、 >>77 にあげたように「defmacro では完全に変数衝突を避けることは出来ない」というのは
定義したマクロを使う時にも注意を強いるという点で「defmacro には出来ないことがある」と考えた。
つまり、定義時の楽さや複雑さを置いといて、どれだけマクロの中に隠蔽できるか (マクロ使用時に見えないか)
で測ると >>86 という意見になるわけだけど、そうじゃない解釈もできるので曖昧な文章になってしもたという感じ。

89 :12/02/13
Creating Languages in Racket
http://queue.acm.org/detail.cfm?id=2068896
特別な内容という訳ではないと思うけど、queueだけではなく
John McCarthyが表紙のacm会誌('12/01)にも転載されてた。

90 :12/02/14
RacketのGUIをちょっとやってみたけど、
message%のlabelが全部表示されない
だめだな

91 :12/02/14
ふと気になったんだけど、schemeって代数幾何でいうスキームと何か関係あるの?

92 :12/02/14
>>91
無い。

93 :12/02/14
Scheme の名前の由来はこの記事が詳しい。
http://www010.upp.so-net.ne.jp/okshirai/scheme-20070402222203.txt

94 :12/02/14
>>93
ありがとう
勉強になった

95 :12/02/14
新宿ジュンク堂が閉店するみたいだ。残念。
Lisp関連書籍やものまね鳥なんか買うことが出来てお世話になった。

96 :12/02/14
ぇえー残念
って、そういえば、三越自体がなくなるせいか
まぁ仕方ないね

97 :12/02/14
ジュンク堂自体はおなじ規模でどんどん出店してるから、また新宿に出来るかもね。

98 :12/02/14
後釜のビックが書籍のフロアを頑張ってくれると有難いんだが。

99 :12/02/15
新宿三丁目のあたりで良いからまた店出して欲しいな。

100read 1read
1read 100read
TOP カテ一覧 スレ一覧 2ch元 削除依頼
Visual Studio 2008 Part 21 (537)
BASICの宿題はお前にまかせた (550)
NullPointerExceptionを「ぬるぽ」と呼ぶスレ6 (291)
バージョン管理システムについて語るスレ8 (978)
「コンパイラ・スクリプトエンジン」相談室15 (356)
リファクタリングをただのコード修正と思ってる人へ (267)
--log9.info------------------
コンマイ潰れろ (182)
【QMA】ドラゴン組⇔ガーゴイル組スレ (614)
【ロケテ】SEGA CARD GEN 2011 5打席目【12/8から】 (273)
戦国大戦 料金情報・報告スレ2 【クレサ】 (542)
ガンダムトライエイジ トレードスレ (168)
マイナー・レア・幻・すぐ消えたゲームを地味に語るpart4 (202)
【最大の敵は生理現象】1コインで長時間プレイ (368)
namco総合スレ 3 (941)
コナミ総合スレ (465)
【アケゲーレトロ専用】レトロゲームの名前質問スレ Part7 (533)
スパイクアウトFE (122)
【VCA】バーチャルコンソールアーケード【Wii】 その3 (944)
任天堂 (237)
idにTAITOとかnamcoとかが出るまでがんばるスレ (347)
Quest of D Part402 (203)
カプコン☆レトロ総合スレ (478)
--log55.com------------------
桐生信用金庫どうよ 
神奈川銀行【かなぎん】part4 ip
岐阜信用金庫談話室
就職活動用「尼崎信用金庫」
■■東海東京証券を語ろう7■■
アセットマネジメントOne(ア・モーネ)4
三井住友トラスト・ホールディングス【中央三井+住信】3
【サビ残】愛媛銀行【毎日6時間】