トップページ⇒tech
989コメント385KB

CommonLisp Scheme Part10

レス数が950を超えています。1000を超えると書き込みができなくなります。
0001デフォルトの名無しさんNGNG
過去スレ
Part1: http://piza2.2ch.net/tech/kako/987/987169286.html
Part2: http://pc.2ch.net/test/read.cgi/tech/1002584344/
Part3: http://pc.2ch.net/test/read.cgi/tech/1008220265/
Part4: http://pc.2ch.net/test/read.cgi/tech/1016211619/
Part5: http://pc3.2ch.net/test/read.cgi/tech/1023091882/
Part6: http://pc3.2ch.net/test/read.cgi/tech/1031560687/
Part7: http://ruku.qp.tc/dat2ch/0311/20/1042167213.html
Part8: http://pc2.2ch.net/test/read.cgi/tech/1058263391/
Part9: http://pc2.2ch.net/test/read.cgi/tech/1069594582/

前、"Schemeスレはあるのになんでcommonlispスレはないの?"とか言って別のスレを建てた大馬鹿者がいたので、
標題にCommonLispと付けておきました。
Lispの話題でCommonLisp,Scheme,EmacsLisp(専用スレッドがある)以外のものが出ることはこのスレの歴史上でも
稀なので問題はほとんどないかと思います。

関連リンクは>>2-10あたり
0002デフォルトの名無しさんNGNG
□参考リンク□

日本Lispユーザ会(日本語)
http://jp.franz.com/jlug/index.html
ここにかなりの情報があります。
http://jp.franz.com/
削るとAllegro Common Lispのページへ

プログラミング言語Scheme(日本語)
ttp://www.sci.toyama-u.ac.jp/~iwao/Scheme/scheme.html
Schemeの人はまずここを見ましょう。

Lisper への道(日本語)
ttp://www.geocities.co.jp/SiliconValley-Oakland/1680/rakup.html
判りやすいLISP入門サイト。

Schemeへの道(日本語)
ttp://www.stdio.h.kyoto-u.ac.jp/~hioki/gairon-enshuu/SchemeNotes/scheme.html
ここはschemeの入門サイト。
0003デフォルトの名無しさんNGNG
慶応の授業のページ・記号処理プログラミング 2001
http://buri.sfc.keio.ac.jp/lisp/menu.html

Practical Scheme(日本語)
ttp://www.shiro.dreamhost.com/scheme/index-j.html
「普通のやつらの上を行け」など、興味深い文書を沢山翻訳されてます。
(Gaucheという完成度の高いscheme処理系作者さんのページでもあります。)

Scheme Hash(英語)
http://okmij.org/ftp/Scheme/index.html
S式でXMLを使える様にするSXMLなど

John McCarthy's Home Page
http://www-formal.stanford.edu/jmc/
LISPの生みの親、J・マッカーシーのページだそうです。

Association of Lisp Users
http://www.alu.org/alu/home
米国のLispユーザ会
0004デフォルトの名無しさんNGNG
□SICP関係□

SICP(英語)
http://mitpress.mit.edu/sicp/full-text/book/book.html
「計算機プログラムの構造と解釈」の原書です。
全てオンラインで読めます。

計算機プログラムの構造と解釈 第二版 (snip) に関連するホームページ
http://www.ipl.t.u-tokyo.ac.jp/sicp/

SICPの回答集
http://www.melt.kyutech.ac.jp/~gogogo/sicp_ex/
http://pluto.aurorasd.co.jp/~mkama/sicp/
http://www.ipl.t.u-tokyo.ac.jp/sicp/solution.root.html
http://www.sampou.org/scheme/sicp/answer/
0005デフォルトの名無しさんNGNG
□その他□

Schemeで書かれた正規表現ライブラリ
ttp://www.cs.rice.edu/~dorai/pregexp/pregexp.html

幻の「入門Scheme」
ttp://www4.ocn.ne.jp/~inukai/scheme_primer_j.html
オンラインで読める

各種scheme処理系をcygwin上からビルドする方法など。
ttp://www.geocities.co.jp/SiliconValley-PaloAlto/7043/

Bit - Implantation compacte de Scheme
http://www.iro.umontreal.ca/~dube/
mini-schemeよりも小さい(?)bytecode変換系

Lisp 言語処理系: CAMPUS LIsP, Lemon version
http://aten.aial.hiroshima-u.ac.jp/~kakugawa/clisp/index-ja.shtml
Cコードによるわずか1000行の実装

Cliki
http://www.cliki.net/index
CommonLispのプログラムがたくさん紹介されているのでここを当たるべし。
0006デフォルトの名無しさんNGNG
encyCMUCLopedia
http://www.isr.ist.utl.pt/library/docs/encycmuclopedia/doc/
cmucl以外でも有益なはず

CMUのLisp Repository
ftp://ftp.cs.cmu.edu/afs/cs/project/ai-repository/ai/lang/lisp/0.html
新旧様々なプログラムが置いてある

Tiny CLOS Tutorial
http://home.adelphi.edu/~sbloch/class/272/tclos/tutorial.shtml

Schemix
http://www.abstractnonsense.com/schemix/
Linuxのkernelへのパッチで、/dev/として扱えるTinyScheme

Bibliography of Scheme-related Research
http://library.readscheme.org/
Scheme関連の論文リンク集

0007デフォルトの名無しさんNGNG
ごめん、こっちだった

過去スレ
Part1: http://piza2.2ch.net/tech/kako/987/987169286.html
Part2: http://pc.2ch.net/tech/kako/1002/10025/1002584344.html
Part3: http://pc.2ch.net/tech/kako/1008/10082/1008220265.html
Part4: http://pc.2ch.net/tech/kako/1016/10162/1016211619.html
Part5: http://pc3.2ch.net/tech/kako/1023/10230/1023091882.html
Part6: http://pc3.2ch.net/tech/kako/1031/10315/1031560687.html
Part7: http://ruku.qp.tc/dat2ch/0311/20/1042167213.html
Part8: http://pc2.2ch.net/tech/kako/1058/10582/1058263391.html
Part9: http://pc2.2ch.net/test/read.cgi/tech/1069594582/
0008デフォルトの名無しさんNGNG
その他よさそうなリンク

awkで書かれたわずか500行のLispインタプリタ
awklispを読めばLispが理解できる
ttp://www.accesscom.com/~darius/

Emacs Lisp 2
http://pc2.2ch.net/test/read.cgi/tech/1068467385/

* Hotdog Scheme http://rover.cs.nwu.edu/~scheme/
 MS が金出してたみたい
* Bigloo http://www-sop.inria.fr/mimosa/fp/Bigloo/
 CLR 用のコードを吐けるようになったらしい

継続

なんでも継続
ttp://www.shiro.dreamhost.com/scheme/docs/cont-j.html
Schemeへの道:継続
http://www.stdio.h.kyoto-u.ac.jp/~hioki/gairon-enshuu/SchemeNotes/continuation.html
継続の使い方
http://www.geocities.co.jp/SiliconValley-PaloAlto/7043/index.html#continuation
継続の使用法
http://www.ice.nuie.nagoya-u.ac.jp/~h003149b/lang/block.html
CPS(継続渡しスタイル)の説明
http://www.csl.sony.co.jp/person/masui/Forum/data/20011215023622/
0009デフォルトの名無しさんNGNG
乙彼〜

>>7
君もやっちまったか(w
0010デフォルトの名無しさんNGNG
独習 Scheme 三週間
http://www.sampou.org/scheme/t-y-scheme/t-y-scheme-Z-H-1.html
Schemeの教科書

よろずや
http://www.geocities.co.jp/SiliconValley-SanJose/7474/
lispの実用的な情報が色々。

0011デフォルトの名無しさんNGNG
Arc
ttp://www.paulgraham.com/arc.html
0012デフォルトの名無しさんNGNG

  ∧_∧
  ( ・∀・)   | | ガッ
 と    )    | |
   Y /ノ    人
    / )    <  >_∧∩
  _/し' //. V`Д´)/ ←11
 (_フ彡        /
0013デフォルトの名無しさんNGNG
仕様関係)
CLtL2: Common Lisp the Language 2nd edition
  http://www-2.cs.cmu.edu/Groups/AI/html/cltl/cltl2.html
CLHS: Common Lisp Hyper Spec
  http://www.ai.mit.edu/projects/iiip/doc/CommonLISP/HyperSpec/FrontMatter/Chapter-Index.html
R5RS: Revised(5) Scheme(ja)
  http://www.sci.toyama-u.ac.jp/~iwao/Scheme/r5rsj/html/r5rsj.html

便利な情報リソース)
The Common Lisp Cookbook: いわゆる Cookbook
  http://cl-cookbook.sourceforge.net/

小さい実装)
SECDR-Scheme: SECD machine model に基づく実装
  ttp://lily.fan.gr.jp/~kmd/adhoc/view.rhtml?n=SECDR-Scheme_woyomu
Minischeme: 1 ファイルに凝縮された Scheme 処理系
  http://tinyscheme.sourceforge.net/minischeme.tar.gz
TinyScheme: Minischeme を色々弄ったもの
  http://tinyscheme.sourceforge.net/
KI-Scheme, AM-Scheme, etc...
  http://www.nifty.com/download/dos/prog/lisp/
LispMe: Palm 上で動く Scheme 処理系. これも SECD virtual machine.
  http://www.lispme.de/lispme/
0014デフォルトの名無しさんNGNG
リンクとかはどこかに置いとけばいいんじゃないかな。
0015デフォルトの名無しさんNGNG
過去スレ
LISP Scheme http://pc2.2ch.net/test/read.cgi/tech/987169286/l50
LISP Scheme Part2 http://pc2.2ch.net/test/read.cgi/tech/1002584344/l50
LISP Scheme Part3 http://pc2.2ch.net/test/read.cgi/tech/1008220265/l50
LISP Scheme Part4 http://pc2.2ch.net/test/read.cgi/tech/1016211619/l50
LISP Scheme Part5 http://pc2.2ch.net/test/read.cgi/tech/1023091882/l50
LISP Scheme Part6 http://pc2.2ch.net/test/read.cgi/tech/1031560687/l50
LISP Scheme Part7 http://pc2.2ch.net/test/read.cgi/tech/1042167213/l50
LISP Scheme Part8 http://pc2.2ch.net/test/read.cgi/tech/1058263391/l50
LISP Scheme Part9 http://pc2.2ch.net/test/read.cgi/tech/1069594582/l50
0016デフォルトの名無しさんNGNG
MacLispスレ立てていいですか?
0017デフォルトの名無しさんNGNG
>>16
いい加減にしてください。
0018デフォルトの名無しさんNGNG
>>16
まず、LISPスレ見てる様な奴は、ほとんどが他のLISP系スレも
同時に見てる、という事を忘れないでくれ。
ここのスレタイが`CommonLISP'となった以上、話題提供したり
自分で盛り立てたりして維持できると思うのなら立てるのは自由だ。
本当に立てるならスレタイを「マイナーLISP隔離スレ」みたいな感じに
してくれると再利用しやすいと思う。
まあよく考えれ。
0019デフォルトの名無しさんNGNG
schemeでxyzzyみたいな軽いエディターを作ってくれるなら
ゆるし、う、うご、、、ごめんなさい
0020デフォルトの名無しさんNGNG
>>19 guile-emacs
0021デフォルトの名無しさんNGNG
1/29のレス 15
1/30のレス 41
1/31のレス 24
2/01のレス 89
驚異的だなw
0022デフォルトの名無しさんNGNG
>>14 どこかって? WiLiKi に置いちゃうとか?
0023デフォルトの名無しさんNGNG
>22
CL的にはこっちかとw
ttp://cgi.at.infoseek.co.jp/lambda_list/cgi-bin/lambda.cgi?name=CommonLisp#7
0024デフォルトの名無しさんNGNG
>>23
Weblog って要するに日記ツールでしょ? CLISP って遅いって聞くし。
>>22 の言うように WiLiKi みたいな Wiki のほうがまとめとか書き込めて
嬉しいんじゃないかな。でも Shiro さんとことかに書くのはマズイ予感。
2ch 色がついたら WiLiKi とかのイメージダウンになるかもしれないし…。
0025デフォルトの名無しさんNGNG
少々の2ch色だったら平気だと思うんだけど。
0026デフォルトの名無しさんNGNG
>>1
大馬鹿者はおまえ
0027デフォルトの名無しさんNGNG
>>25
2ch ねらーが数人とかならともかく,スレのまとめとか FAQ とかあるのが
少々か?世の中には 2ch 嫌いな人も居るわけで,そーゆう人が引いてしま
うんじゃないかとちょっと心配.
0028デフォルトの名無しさんNGNG
つまり、wikiが使えて、無料のウェブホスティングサービスを探せということか。
0029デフォルトの名無しさんNGNG
そんな便利なものがあるわけが
0030デフォルトの名無しさんNGNG
CGIでPerlが使えるとかありそうな気もするけどな。SourceForgeはソフトウェアだけか. 太っ腹な個人に期待か。
0031デフォルトの名無しさんNGNG
Perlで書かれたCommonLispの処理系とかって見たことありますか?
0032デフォルトの名無しさんNGNG
無料ホスティングサービスは perl ばっかりかと思っていましたが,
python, ruby が動かせるところも当たり前になってきましたね.
# もちろん重いのは禁止ですが.
lisp も...
0033デフォルトの名無しさんNGNG
つーか、システムとしてWikiが動いてりゃ、裏でそれがPerlだろうと何で書かれていても
構わないって話じゃないの?

>>32 そういう無料ホスティングサービスあるんだ。Wikiも動かせるよね、重そうじゃないし。

>>31
Perlで書かれたCLじゃなくて、Common LispをPerlに直すトランスレータの話題は
最近、comp.lang.lispであったな。
0034デフォルトの名無しさんNGNG
>>24
weblog っても /(weblog 10) ← 10 日数分の日記を表示するコマンド
みたいなのがあるだけで、基本的には Wiki だよ。データをメモリに
読みこんで動作するらしいし、ローカルで動かす分には CLISP でも
全然遅さは感じない。しかしリンクが _(Link) みたいな非標準な形式だし
HTML の生成機能とか不要な機能もついてるし、みんなで使う Wiki にはちょとねぇ。
0035flatline@Vim%Chalice ◆r6EONKKhcc NGNG
ttp://www.komaba.utmc.or.jp/~flatline/wiliki.cgi
いつまで存在するか保証はしません
0036デフォルトの名無しさんNGNG
キタ─wwヘ√レvv〜(゚∀゚)─wwヘ√レvv〜─ !!
0037デフォルトの名無しさんNGNG
>>35
onlisp.pdf頂きました。アリガトソ
0038デフォルトの名無しさんNGNG
flatlineって誰だっけ
0039デフォルトの名無しさんNGNG
R5RS に書いてある、Scheme がメッセージ送信的な記述をサポートしているという
のは、↓にある様な事が出来るという事ですよね?

ttp://www.ice.nuie.nagoya-u.ac.jp/~h003149b/lang/actor/actor.html

メッセージ送信と聞くと、オブジェクト指向言語を思い浮かべるのですが、何らかの
繋がりがあるのでしょうか。Act1 の資料を探したのですが、見つかりませんでした。
0040デフォルトの名無しさんNGNG
Act1の資料て何?
004125NGNG
>>35さん
ありがとうごさいます。
>>25は初心者スレとの勘違いした上に文章削って、
「やっぱ辞めとこ」って"キャンセルボタン"を押した
つもりが"OK"ボタンだったりする2重の誤射です。

おちゅーしゃのお気に入りの中に、旧スレとここと初心者が
並んでてついうっかりというか…。
lisp初心者どころかプログラム初心者ですが利用させて
いただきます。といってQ&Aを拾うことくらいで、
読ませて頂くことがほとんどだと思いますが。
0042デフォルトの名無しさんNGNG
>39
ちょうどbitの掲載号を読み返してた所だったりw
教えてくれてありが�d!
0043デフォルトの名無しさんNGNG
>>35 に感謝しながら >>14 はリンク切り貼りする事。
いいだしっぺにやってもらおうじゃないか。
0044デフォルトの名無しさんNGNG
基地外に感謝するのは嫌。
0045デフォルトの名無しさんNGNG
>>44 うすっぺらいやっちゃな。
0046デフォルトの名無しさんNGNG
>>44が基地外
0047デフォルトの名無しさんNGNG
>>35
> ttp://www.komaba.utmc.or.jp/~flatline/wiliki.cgi
> いつまで存在するか保証はしません
ありがとう。内容がたまってきたら、定期的にバックアップをどっかに
おいておいてくれませんか。バックアップの負担を分散しておけば、
何かあったときに、復旧できる可能性が増すでしょ。
0048デフォルトの名無しさんNGNG
つまり、tar玉かなにかを誰でもダウソできる場所においておくということね。
無理にやってくれなくてもいいけど。
0049デフォルトの名無しさんNGNG
www.komaba.utmc.or.jp/~flatline/wiliki.cgi
にすこし書いときました。Wikiは初めてなので、もっといいフォーマット
があるかも。
0050デフォルトの名無しさんNGNG
>>47
どっか CGI の使える無料鯖とかでミラーできるかもしれないしね。
閲覧だけならそっちを勧めれば本家に負荷かけずに済んでウマー
0051デフォルトの名無しさんNGNG
>>50
> どっか CGI の使える無料鯖とかでミラーできるかもしれないしね。
ミラーとなると... Wilikiってschemeで書かれているんだよね?
schemeを使わせてくれる無料サーバがあるかな?

もしかして、Wilikiって文法レベルで他の言語処理系で実装されている
Wikiシステムと互換性があるのかな?
0052デフォルトの名無しさんNGNG
>>51
基本的な構文くらいなら Perl で作っても比較的簡単でしょ。マクロは厳しいかもし
れないけど。まー最悪 HTML にしちゃうって手もあるわけで。

# でもファイルのアップロードとかできる Perl 製 Wiki も捨てがたいなー。WiLiKi
# だとスレのアーカイブをウプするのとか管理者にやってもらわなきゃいけないよね?
0053デフォルトの名無しさんNGNG
wilikiにschemeの項目を少し追加しました。
といっても項目だけなので内容はどなたか宜しう。

既存のもの(toyama-uとか本家WiLiKiとか)と同じのを作ってもしょうがないので
ここでの質問などを纏めてFAQなどを充実できたらいいなあ。
0054デフォルトの名無しさんNGNG
CMUCLのCVSにアクセスできん....

cvs -d :pserver:[email protected]:/home/anoncvs/CVS-cmucl login
-> unknown host
となるので、MLを見てどうやらマシンが不調なのか別のサーバに切り替わったらしい。
cvs2.cons.orgかtrumpet.cons.orgが使えるらしいので
cvs -d :pserver:[email protected]:/home/CVS-cmucl login
cvs -d :pserver:[email protected]:/home/CVS-cmucl login
とやってもunknown hostとなる。MLには新サーバのIPが207.22.2.3となっていたので
cvs -d :pserver:[email protected]:/home/CVS-cmucl login
とやったが、これは永遠と待たされてタイムアウト。

誰かCVSにアクセスできてる御仁はおらぬか。
0055デフォルトの名無しさんNGNG
永遠と日本語勉強するよろし。
0056デフォルトの名無しさんNGNG
>>54
> となるので、MLを見てどうやらマシンが不調なのか別のサーバに切り替わったらしい。
ほんとに ML 読んだのか? 切り替わっ *た* と? とりあえずマターリ待つかもっかい ML 読み直すか汁。
0057デフォルトの名無しさんNGNG
マシンが切り替わったかどうかははっきりと読んでいないのだが、少なくともアクセスする場所は変わったような。
"update on CVS repository"で
The new IP number for cvs2.cons.org (trumpet.cons.org) is 207.22.2.3.
I put an entry in my /etc/hosts file to map cvs2.cons.org to that new number
and was able to access the repository OK.

と、Werkowski氏が言っておられるので、この二つのドメインにアクセスしてみた。
それがunknown hostになるので、
"I put an entry in my /etc/hosts file"と言っているところからして、
グローバルなドメインには含まれていない予感がしたので、
207.22.2.3に直に
cvs -d :pserver:[email protected]:/home/CVS-cmucl login
とやってみたがタイムアウト。cmuclのwebの例に倣って
cvs -d :pserver:[email protected]:/home/anoncvs/CVS-cmucl login
としてもやはりタイムアウト。

Toy氏がupdateに15分かかる云々と言っているが、loginに5分以上かかるということはあるまい
と考えて、思案に暮れている次第。

その他、
http://www2.cons.org/ftp-area/cmucl/CVS-cmucl/
でブラウズしようとしても404。
ftp2.cons.orgやcmucl.cons.orgもやはり使えない状態。

"Status of CVS machine","Hosting the CVS machine"も読んだが解決せず。
しかし、cvs-commitにはtoy氏によるcvsアップデートの知らせが続々と届き、
そのCVSサーバはtrumpet.cons.org(207.22.2.3)
なのでもはや私には理解不能ということでここに助けを求めました。
0058デフォルトの名無しさんNGNG
なんで解決しないのか不思議だが Martin タンの↓のメールを全て読み飛したのか?
マターリ待てと逝っているだろーが。2ch で聞いてどうにかなる話じゃない。
1/16
Martin: we are still fiddling with the wires and I won't make it this weekend, sorry.
1/23
Martin: We still need more time to create the physical (cable, floor) space
for the machine but we will do it. Sorry for the delay, shouldn't be
too long anymore now.
1/27
Martin: However, I decided to exchange some of the hardware. ITA will host it
where I don't have instant physical access, so I will move the
installation/harddisk to one of my former Quakestations^H^H^H
known-good battletested PCs and while I'm at it upgrade to the newest FreeBSD.
Things are coming along, though and it looks like we get a cozy,
well-connected place.
0059デフォルトの名無しさんNGNG
>2ch で聞いてどうにかなる話じゃない。
いえ、それを聞いて理解しました。

cvs-commitの日付を読み違えていて、21日以降cvsへのアクセスがないことに気付きませんでした。スマソ。
0060デフォルトの名無しさんNGNG
Gauche release 0.7.4 リリースage
でもバグがあった為、バグフィックス版0.7.4.1を
だすそうです。
0061flatline@Vim%Chalice ◆r6EONKKhcc NGNG
例えば,Javaというプログラミング言語があります.
現在,JavaかPerlの求人多いみたいですね.
システム何とか学科の知合いによれば,猫も杓子もWebアプリって感じで(レベルは一様に低い).

Common LispがJavaに敵いそうもない分野とは?
GUIは,これだけ引きはなされてしまってはまず追い抜くのは無理でしょう.
でも,SwingだのAWTだのが使えるのはスタンドアローンアプリ.
Javaでスタンドアローンアプリ開発を大々的に行っている所ってどこよ? (あるんでしょうけど)
JavaでJEditみたいなエディタ作れると就職にいいですか?

現在のJavaは,DBやWebなどサーバサイドに活路を見出しているらしい.
それなら,Common Lispがどうして敵わないことがあろうか.
そりゃライブラリだってフレームワークだって現在ではJavaのN分の一だろうけど,
Common Lispは言語としては本質的にJavaより優れている.完全に動的なその性格からして.
(Javaさあ,クラスキャストなんぞしてるんなら静的型システムの意味ないって)
Lispは遅い? 何と比べて? Javaより遅いんですか?

Javaが狙っている分野は,Lispの主戦場ですよ.みなさん,ぜひぜひがんばって下さいよ.
0062デフォルトの名無しさんNGNG
だからflatlineって誰だっけ
0063デフォルトの名無しさんNGNG
James Goslingって、LispとCの中間的な言語を作るの好きみたいだね。
Gosling EmacsのMock Lispといい、Javaといい。

Gosling EmacsはGNU Emacsに負けたけど、Javaはどうなるかな。
Sunが潰れたら、意外と簡単に逝ってしまいそうな気もする。
それとも、もう臨界値をこえて普及したから簡単には死なない?

プログラミングしやすさで考えると、C++ならJavaでいいやって
気もするけど、それならC#のほうがもっと気持いい?
0064デフォルトの名無しさんNGNG
>>62 On Lispのボランティア翻訳者。
0065デフォルトの名無しさんNGNG
flatlineの元ネタはたぶん「ニューロマンサー」
ああ、80年代は遠くなりにけり。
0066デフォルトの名無しさんNGNG
正直 〜より優れている とか 勝つ とか 負ける とかはあんまり興味を持てないんだ
よな.他の言語の良い面は積極的に取り入れるべきだと思うし.(Java だとパッケー
ジシステムとか豊富なライブラリとか?).あと Common Lisp は完全に動的じゃな
いぞ.型とか型とか型とか.オプショナルな型システム大好きな漏れにはこれがツボ
なわけだが(必須だとウザーだけど無いと物足りない).

Web 関連とかってどうなのかねぇ? Common Lisp だと Aserve + WebAction だろう
けど趣味で遊べるようなもんでもないしねぇ.もっと気軽にあそべる環境がないと人
気でないと思われ.Portable Aserve とかもスレッド使える実装ってフリーじゃあん
まりないし.IMHO も慣れてないと使うの大変だろうし.他になんかあったっけ?
0067デフォルトの名無しさんNGNG
cl-httpってのもあるね。
cl-httpを解説してた本があったな。
0068デフォルトの名無しさんNGNG
たぶん MCL を題材にした ASCII の本だったと思われ。
cl-http が気軽に遊べるかどうかは微妙だが……
0069デフォルトの名無しさんNGNG
>>60 すでに 0.7.4.1 になってるね。インスコした記念 age
0070デフォルトの名無しさんNGNG
>>66
どの言語がどの言語に対してどんな場面で、なにがどういうふうに勝っているのか
を分析しなくては、言語が発展しないのでは? ただの印象批評で、カッタ、マケタ、ワショーイ、
ではは面白くないけど。

まぁ、俺は単純に言語の栄枯盛衰をみているだけでも楽しいけどね。

Common Lispの型システムよりも、より動的な型システムを持つ言語を教えて
くれないかな?

>>67
cl-httpってライセンスが曖昧だった気がする。大統領関連の公式ウェブサイト
の一部でcl-httpが使われていた(いる?)って話があったね。
007166NGNG
>>70
他の言語の良い面は見習うべきだと言ってるつもりなんだけど ……例えば Java だ
とインターフェースに対してプログラムするスタイルとか CLOS にインタフェースを
MOP で組み込んでみればいいわけで.

より動的な型システムってのはどーゆうのかよくわかりません.物分りが悪くてスマソ
0072デフォルトの名無しさんNGNG
>>71
> 他の言語の良い面は見習うべきだと言ってるつもりなんだけど
うまくできるのなら賛成。

> 例えば Java だ
> とインターフェースに対してプログラムするスタイルとか CLOS にインタフェースを
> MOP で組み込んでみればいいわけで.
Javaのインターフェイスというと、メソッドのシグナチャの一群をインターフェイスと
呼んで一まとめにしてあつかうやつだよね。これって、CLOSだと多重継承とGeneric関数で
実現できるのでは?

>>66
> あと Common Lisp は完全に動的じゃな
> いぞ.型とか型とか型とか.オプショナルな型システム大好きな漏れにはこれがツボ
> なわけだが(必須だとウザーだけど無いと物足りない).
上の記述を見て、66さんが好きな型システムを実現している言語ってどんなんかなと
思ったわけ。CLより、もっと「ユルイ」型システムかなとか。
007366NGNG
>>72
漏れは
Common Lisp にも(オプショナルで)静的な型がある == "完全に動的" ってわけじゃない
というつもりですた.で,これが好きだと言ってるつもりだったんです.
作るだけなら動的だけでも良いけど動かす時には性能が必要なとこもあるじゃん.
0074デフォルトの名無しさんNGNG
Gauche-0.6.8/FreeBSD で sys-access が変なので syslib.c の
if defined(FreeBSD) をはずしてみました。
一見直ってるけどいいのかな。
FAQ?
0075デフォルトの名無しさんNGNG
>>35
Wiliki のデータベースって他の環境でも使いまわせるのかな?
とりあえずダウンロード可能なところに置いて頂けると嬉しいなぁ。
0076デフォルトの名無しさんNGNG
>>74 0.7.4.1 使わないのはなんで?
0077デフォルトの名無しさんNGNG
ports が 0.6.8 で止まってるからと予想。
0078デフォルトの名無しさんNGNG
>>76
恐れ入ります。
FreeBSDで make したらなんか新しいの取りに行ったと思ったら。
0079デフォルトの名無しさんNGNG
あれ、まだこれ貼ってないの?

flatline 氏のサイト
http://user.ecc.u-tokyo.ac.jp/~g340299/

Paul Graham『On Lisp』邦訳
http://user.ecc.u-tokyo.ac.jp/~g340299/onlisp_j.pdf
http://user.ecc.u-tokyo.ac.jp/~g340299/onlisp_j.tex
(最終更新日:2004.02.01 翻訳済み:18章/全25章)

おまけ。PDF から引用。
> 翻訳に手を付けたのは2003 年の始め位だったのですがね.
> 受験勉強から逃避していたあの頃からもう1 年以上経ってしまったのか.

受験生のうちからこんな高水準の翻訳を…。


# スレ違いだが、Vim を Scheme ベースで作り直してくれる人がいたら
# 現人神として終生、たたえられると思う。
0080デフォルトの名無しさんNGNG
ついに CMUCL が Mac OS X に来たね。

http://www.pmsf.de/personal/darwin/
http://article.gmane.org/gmane.lisp.cmucl.devel/4901
0081デフォルトの名無しさんNGNG
え、まだなかったっけ?
sparcあるから既にPowerPCもあるかと思ったよ。
じゃあ残るはWindows(←なぜかportできない)だけだね。
0082デフォルトの名無しさんNGNG
>>81
"(←だれも port しない)" の間違いだろう。何故か、なんてのは自明だろ。
主要開発者がだれも Windows 使ってないから。
0083デフォルトの名無しさんNGNG
元ネタ的には、"(←なぜかportされない)" だろうね
0084デフォルトの名無しさんNGNG
まあ、cygwinでも使わないと非現実的だよな。
0085デフォルトの名無しさんNGNG
なんだっけ、ブートストラップさせるんだよな
スゲー面倒そう
処理系2つ作り置きするようなもんだろ?
0086デフォルトの名無しさんNGNG
build script 入ったのにね > ( ´д)ヒソ(´д`)ヒソ(д` ) < コマンド 4 回打つのも "スゲー面倒" なんだって

というのは冗談として、そのへんは勘弁してください。そんなに珍しい事でもないでしょう?
0087デフォルトの名無しさんNGNG
cygwinでcmuclが使用しているメモリとシグナルのシステムコールがエミュレートされているのかな?

cygwinのライセンスが多分GPL系ということで、cmuclの大部分がパブリックドメインであることを
考えると、ライセンス的に縛りがきつくなるね、cygwin使うと。

cmuclのメーリングリストへ、windowsポートに金だすよと言ってた人がいたけど、どうしたかな。
0088デフォルトの名無しさんNGNG
できたら金を払うよ〜と言われても興味ないもんはだれもやらんでしょ。Lisper を
雇うとか汁。どうしても欲しければ仕事として頼むという手もある。pmai タンを一年
も雇ってフルタイムで移植してもらえば Win32 ネイティブで移植できるんじゃねーの。
0089デフォルトの名無しさんNGNG
「Portしてくれたら金を払ってでも使う」じゃなくて
「WindowsにPortしたいので金を払うからやってくれるLisper募集」
していました。それで、元のライセンス(パブリックドメイン)から変更したくないので、
cygwinは使わない方向で考えていると言っていました。俺の知る限り、1人がやりたいと
名乗りをあげていました。あとSBCLの方へいってみれば、とも言われていました。
0090デフォルトの名無しさんNGNG
>元のライセンス(パブリックドメイン)
これが結構色々な面で障壁になってるよね。
0091デフォルトの名無しさんNGNG
>>90 そうか? パブリックドメインよりも制限のないライセンス形態ってあるの?
0092デフォルトの名無しさんNGNG
>>90 >>91
「元のライセンスを保つためには,伝播性をもつライセンスのものと組み合わせられない」
ということなら,GPLなどの伝播性が問題ということでしょう.

ところで私はGPLの要求は真っ当なものだと思う.
この辺の悩みは健全な開発に必要不可欠なコストでしょう.
0093デフォルトの名無しさんNGNG
制限がないから障壁なんじゃないか。
この意味が分からないとしたら、>>91はオープンソースライセンスをほとんど知らないんだろうね。
0094デフォルトの名無しさんNGNG
GPL キモい。他所でやってくれ。
0095デフォルトの名無しさんNGNG
>>94
煽りは他所でやってくれ
0096デフォルトの名無しさんNGNG
Kahua: 継続ベースのアプリケーションサーバー
ttp://www.kahua.org/
0097デフォルトの名無しさんNGNG
>>96
で?低脳な漏れにもわかるように、もちっと紹介してくれょぅ。
ドキュメント読んでも利点がよくわからん。どこがどうすごいの?
0098デフォルトの名無しさんNGNG
>>97 かっこいい
0099デフォルトの名無しさんNGNG
>>97
貴君はまずこの辺から。
http://www.shiro.dreamhost.com/scheme/wiliki/wiliki.cgi?Scheme%3aCPS
0100デフォルトの名無しさんNGNG
>>93
> 制限がないから障壁なんじゃないか。
> この意味が分からないとしたら、>>91はオープンソースライセンスをほとんど知らないんだろうね。
意味が分かりません。障壁とはなんですか? 具体例をあげていただけますか?
0101デフォルトの名無しさんNGNG
win32oleできるScheme処理系ってありますか?
ググったらそれらしいのが出てきたけど、いまいち手がかりが
つかめず…
0102デフォルトの名無しさんNGNG
>>101
COM/ActiveX なら DrScheme (MysterX) がサポートしていますけど。
実際にはどういうことをやりたいのかな? ドキュメントへのオブジェクト埋め込みかな。
0103デフォルトの名無しさんNGNG
>>102 WSH の完全な代替.ナンチャッテ
0104100NGNG
えーと、煽りと間違われると無念なので、少し説明。

俺は、オープンソースライセンスやパブリックドメインについての議論を
多少なりともフォローしてきているつもりです。

今後、cmuclを使用する上で、何かライセンス的にハマるといやなので、
パブリックドメインに置かれているソフトウェアが誰にどういう面で
障壁になっているのか教えてくれませんか?

>>92
> 「元のライセンスを保つためには,伝播性をもつライセンスのものと組み合わせられない」
> ということなら,GPLなどの伝播性が問題ということでしょう.
どのように組み合わせるかによって、GPLが持つ伝播性の影響がでるかどうか変わるでしょう。
0105デフォルトの名無しさんNGNG
>>100
つまりこういうことじゃないかな。
GPL,LGPLみたいなライセンスが使われているライブラリ(など)は、
まったく制限のないパブリックドメインのソフトウェアには使えないと。

例えば、cmuclが(GPLだと反発する香具師が多そうなので)LGPLでリリースされていたとすると、
cmuclの中に取り込めるコードがどのくらいあるか考えてみるといい(何もLispのコードに限ったことじゃないわけだし)。
そして、それらが現状の(パブリックドメインの)cmuclに取り込められるかどうか、をね。

オープンソースの現状は
http://sourceforge.net/softwaremap/trove_list.php?form_cat=14
になっているわけで、GPL/LGPLキモイとか言っても、無視することはできないだろ。
0106デフォルトの名無しさんNGNG
要するにこの場面で極論するとcygwinが使えないのが障壁とw

まあ、パブリックドメインなら派生ソフトウェアは自由にライセンスを選べるわけだし、
気に入らないなら派生作ってGPLにしたっていい(保守する人が少なければ廃れるのがオチだけど)。
だから、そこまで深刻な問題でもないよな。
0107デフォルトの名無しさんNGNG
SFUが.NETみたいに標準搭載になればいいのにねえ。
WinFXでWin32を順次置き換えていくらしいから、
もう既にWin32で囲い込みする必要もないだろうに。
サポートの手間がメンドクサイからまあ、なさそうだけど。
0108デフォルトの名無しさんNGNG
>GPL,LGPLみたいなライセンスが使われているライブラリ(など)は、
>まったく制限のないパブリックドメインのソフトウェアには使えないと。
まず、自分で使用するだけなら法的に問題なく使えるよね。
ソフトウェアを配布する場合でも、パブリックドメインになっている
ソフトウェアをGPL(など制限のきつい方)にライセンスしなおせば、
問題なく使えて配布できるでしょ?

> 例えば、cmuclが(GPLだと反発する香具師が多そうなので)LGPLでリリースされていたとすると、
> cmuclの中に取り込めるコードがどのくらいあるか考えてみるといい(何もLispのコードに限ったことじゃないわけだし)。
パブリックドメインにあるソフトウェアはいつでも、ライセンスを変更する自由があるという点が一つ。
これから、もしGPL, LGPLと互換性がないソフトウェア群が非常に多くなったときにどうするか?
FSFと一蓮托生でいいのか。

そこらへんを考えると、パブリックドメインにあるソフトウェアが障壁になっているという
言い方はあべこべだと思う。
0109デフォルトの名無しさんNGNG
GPL厨的には、プロプラエタリで非オープンなものに転用できてしまう
パプリックドメインなソフトは、GPLの普及にとって障壁になっていると
考えられるんじゃないの?
0110デフォルトの名無しさんNGNG
ああ、そういう視点ですか。
0111デフォルトの名無しさんNGNG
>まず、自分で使用するだけなら法的に問題なく使えるよね。
もちろんそう。
これはデベロッパサイドの問題。すなわち>>89の"cygwinが使えない"とか他にも"readlineが使えない"とかね。

>ソフトウェアを配布する場合でも、パブリックドメインになっている
>ソフトウェアをGPL(など制限のきつい方)にライセンスしなおせば、
>問題なく使えて配布できるでしょ?

GPLでリリースしたらそれはGPLのソフトウェアであってパブリックドメインではないからそもそも前提が違う。
CMUCLプロジェクトがGPL/LGPLを選択するか否かという問題ではcygwinの件で既に蹴っているではないか。

>パブリックドメインにあるソフトウェアはいつでも、ライセンスを変更する自由があるという点が一つ。

これも上に同じ。ライセンスを変更したらそのソフトウェアはパブリックドメインではない。
そのソフトウェアがパブリックドメインを続ける限りはcygwinもreadlineも使えないし、"GPLに変えたら使えるじゃん"というのは"cmuclがパブリックドメインを続けようとしていて、その方針をとることによるcmuclプロジェクトへの制限"という話のすり替え。

>これから、もしGPL, LGPLと互換性がないソフトウェア群が非常に多くなったときにどうするか?
>FSFと一蓮托生でいいのか。
明らかなプロバガンダ。GPLでリリースしたソフトウェアはFSFに支配されるようになるみたいな言い方だな。
0112デフォルトの名無しさんNGNG
>>99
スマソそれは読んだ事あるんだ。で、ついに継続ベース Web アプリケーション鯖デターーー
とおもったんだけどサンプルとかあんま載ってないからさ。こうスゲーとわかるような
サンプルキボンヌ。
0113デフォルトの名無しさんNGNG
>GPLでリリースしたらそれはGPLのソフトウェアであってパブリックドメインではないからそもそも前提が違う。
いいたいことが分かりにくいな。cmuclプロジェクトに加わっていない人が、
cmuclの成果だけ持って来て、ライセンスだけGPLにして定期的にリリースするとか
できるでしょ? つまり、フォークしてもGPL側はいつでもパブリックドメインのコード
を利用できると。

>CMUCLプロジェクトがGPL/LGPLを選択するか否かという問題ではcygwinの件で既に蹴っているではないか。
これも分かりにくいな。CMUCLプロジェクト内での議論でcygwinはライセンスが問題だから
cygwin使うのよそうやという意見の一致はないと思うよ。ただ、cygwin使ったらパブリックドメイン
のままにはできないかもねという認識があるだけ。

> そのソフトウェアがパブリックドメインを続ける限りはcygwinもreadlineも使えないし、
> "GPLに変えたら使えるじゃん"というのは "cmuclがパブリックドメインを続けようとしていて、
> その方針をとることによるcmuclプロジェクトへの制限"という話のすり替え。
なんか陰謀説みたいな話だけど、単純にcygwinかreadline使いたい人は使えばいいし、それを
配布したい人は、GPLかLGPLでcmuclをフォークすればいいだけでしょ? だれもだれかを制限しようと
なんてしていないでしょ?

> >これから、もしGPL, LGPLと互換性がないソフトウェア群が非常に多くなったときにどうするか?
> >FSFと一蓮托生でいいのか。
> 明らかなプロバガンダ。GPLでリリースしたソフトウェアはFSFに支配されるようになるみたいな言い方だな。
じゃあプロパガンダを消した残りの部分はどう?
0114101NGNG
>>102
ありがとうございます!
Excel, Word文書の自動作成をSchemeで書いてみたかったので。

とりあえず、こんなことができました。
(require (lib "mysterx.ss" "mysterx"))
(require (lib "class.ss"))
(define excel (cci/progid "Excel.Application"))
(com-set-property! excel "Visible" #t)
(com-invoke excel "Quit")
0115デフォルトの名無しさんNGNG
面白そうですね.Dr. Scheme って日本語ダメポって聞くけど,文字列としてなら
Excel とかに渡せるのかな?その辺が可能なら Dr. Scheme インスコしてみようかな.
0116デフォルトの名無しさんNGNG
>>113 そもそも議論の前提がちょっと。GPLの第0項を引用しておく。

0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License.

著作権保持者でなければGPLに出来ない。PDSには著作権保持者がいないのでそ
のままGPLではリリースできない。GPLに限らずライセンスは通常、著作権保持
者との契約なので、PDSに無改変のままでライセンスを付けるのは問題がある。

もう一つ考えとく必要があるのは、日本のように著作権を完全には放棄できな
い国があること。アメリカで権利を放棄して著作権表記をしなくても、同じも
のが日本の法律では著作権が自動的に発生して保護の対象になる。

Lisp関係では書き手が研究者のことがままある。研究者にはええかげんな人間
が多い。著作権表記がないものでも、ヒモつき研究活動の成果で実は著作権保
持者は勤務先なんてことがありがち。だから、ホントにPDSかは不安。GPL で
も修正BSDでも何でもいいからライセンス付けてくれれば善意の第三者ぶれる
ので少しは安心。

# あ〜、不安になってきた。明日勤務先の規定調べないと。確か委託研究以外
# はコピーライト俺でいいはずなんだけど。
0117デフォルトの名無しさんNGNG
>cmuclの成果だけ持って来て、ライセンスだけGPLにして定期的にリリースするとかできるでしょ?
...
>なんか陰謀説みたいな話だけど、単純にcygwinかreadline使いたい人は使えばいいし、それを
>配布したい人は、GPLかLGPLでcmuclをフォークすればいいだけでしょ? だれもだれかを制限しようと
>なんてしていないでしょ?
それを"出来る"(=GPL/LGPL/BSD...に出来る)というのはお前の云う通り。
しかし、例えば、誰かが"cmuclをcygwinに移植しようかな"と言い出したとき、技術がそこそこあってそれが可能な人達というのは
まさにcmuclプロジェクトの彼らのことだろ(他にもたくさんいるだろうが、まず注目されるの彼ら)。
cmuclが現在パブリックドメインであることはこれ(=cygwinに移植しようかな)を多少なりとも足踏させる結果になっただろ?
可能論じゃなくって実際にそれをやる人が居るかを考えたときに、cmuclがオープンソースであることとcmuclがパブリックドメインであることには意識の違いが出てくると思わないか?

>じゃあプロパガンダを消した残りの部分はどう?
とりあえず
>>FSFと一蓮托生でいいのか。
についてはっきりと釈明しろと。で、これ
>これから、もしGPL, LGPLと互換性がないソフトウェア群が非常に多くなったときにどうするか?
別に何もしないでしょ。何か問題になる?
これまでの資産は
http://sourceforge.net/softwaremap/trove_list.php?form_cat=14
莫大にあるというのに。
0118デフォルトの名無しさんNGNG
ライセンス話ウザイ。
0119117NGNG
>もう一つ考えとく必要があるのは、日本のように著作権を完全には放棄できない国があること。
これは忘れてたな。そういえばsourceforge.jpにはpdsがなかったなあ。

これって、もしかしてcmuclプロジェクトに参加できない...ってことじゃないよな。
0120デフォルトの名無しさんNGNG
ライセンスの話でlispがスレが埋まる現状はちょっと.....

頼むから、お 前 ら C o m m o n L i s p の 話 題 に 戻 ってくれ。
スレが伸びてもライセンスについての議論じゃあ、lispスレとしての価値がない

↓新鮮な話題を希望
0121デフォルトの名無しさんNGNG
>>112
CVSに入ってるnqueenが面白いですよ
0122デフォルトの名無しさんNGNG
S c h e m e の 話 題 に 戻 っ て く れ

>>121
マンセーこいつぁ面白そうだ。最初っからこのくれー宣伝汁 !
でもまだ Anonymous CVS はないのか。今後に期待〜
0123デフォルトの名無しさんNGNG
---新鮮な話題---

新しいlispの実装ができましたよ。
(defun lisp ()
(loop
(format t "~%* ")
(prin1 (eval (read)))))
0124デフォルトの名無しさんNGNG
cygwin上のgaucheとWindowsのapacheでWilikiを動かすと
書き込みのときに
unbound variable: alist-delete
って出るんですけど 対処法ありますか?
(リロードすると書き込めてるんですが・・・)
0125デフォルトの名無しさんNGNG
誰か解答求む
0126デフォルトの名無しさんNGNG
あります
0127デフォルトの名無しさんNGNG
教えてください
0128124NGNG
wilikiのdb.scmの
(define-module wiliki.db
(use srfi-13)
の部分に
(define-module wiliki.db
(use srfi-1)
(use srfi-13)
てやったら オケーぽいけど
これでいいのかな?
012992@Vim%Chalice ◆r6EONKKhcc NGNG
藻前らこっちにきなさい

ライセンスあれこれ
http://pc.2ch.net/test/read.cgi/unix/1032702590/

たまたま別スレの都合で数日前に書き込んだんですけど.
0130デフォルトの名無しさんNGNG
>>129
誤爆? 宣伝?
0131 NGNG
(define make-structure
(lambda (n) (lambda (d) (lambda (m) ((m n) d)))))
(define select
(lambda (c) (c (lambda (a) (lambda (b) a)))))

の意味がいまいちわかりません。
例えば、
(select ((make-structure (+ 7 5)) (- 9 3)))
とした時のラムダ計算の課程を教えてくれませんか。
0132デフォルトの名無しさんNGNG
>>131
n := 7 + 5 => 12
d := 9 - 3 => 6
c := (lambda (m) ((m 12) 6)) => #<closure>
m := (lambda (a) (lambda (b) a)) => #<closure>
a := 12 => 12
b := 6 => 6
=> 12
0133 NGNG
>>131
ありがとうございます、ホントに。助かりました。
0134デフォルトの名無しさんNGNG
.net系でlisp.netみたいなものってないの?
誰か作ってそうなもんだが。
0135デフォルトの名無しさんNGNG
http://common-lisp.net/
0136デフォルトの名無しさんNGNG
これのことですか.

ttp://dotlisp.sourceforge.net/

Activity Percentile (last week): 19.2626%
0137デフォルトの名無しさんNGNG
ecl をインストールしてみた。ドキュメントに書いてあるように hello world の
スタンドアローンプログラムを作ってみたら約 3MB の実行ファイルが出来た @
Mac OS X. こんなもんかな。

ところで、数ある Lisp レベルのスレッドの実装ってマルチプロセッサ下でどの位
スケールする物なのでしょうか? 実装依存 && 環境依存でしょうか。
0138デフォルトの名無しさんNGNG
clisp と ecl をたらいまわし簡易ベンチで比較してみました。ソースはここから。

最速スクリプト言語決定戦!
http://pc2.2ch.net/test/read.cgi/tech/1074996153

結果)
非コンパイル:
clisp tarai.lsp 101.07s user 0.36s system 96% cpu 1:44.59 total
ロード -> コンパイル -> 実行:
clisp -C tarai.lsp 9.30s user 0.03s system 99% cpu 9.380 total
コンパイル済:
clisp tarai.fasl 9.28s user 0.06s system 99% cpu 9.342 total

ロード -> コンパイル -> 実行:
ecl -load tarai.lsp 67.55s user 19.54s system 93% cpu 1:33.05 total
コンパイル済:
./taraiecl 1.89s user 0.05s system 100% cpu 1.935 total

バージョンとか)
gcc (GCC) 3.3 20030304 (Apple Computer, Inc. build 1495)
GNU CLISP 2.32 (2003-12-29) (built 3285246448)
ECL (Embeddable Common-Lisp) 0.9c
0139デフォルトの名無しさんNGNG
>>137
C で書いたプログラムを動かすには C のランタイムが必要だ。
Java で書いたプログラムを動かすには java のランタイムが必要だ。
Lisp で書いたプログラムを動かすには Lisp のランタイムが必要だ。
で、通常 C のランタイムはシステム標準で付いてくるので意識する人が
少ないだけ。

寡聞にして Lisp レベルのスレッドの実装が複数あるとは知らなかった。
商用 Lisp は大抵 OS のネイティブスレッドだろうしなぁ……。まぁ
Lisp レベルのスレッドだとあんまりマルチプロセッサだから〜とか
期待しないほうがいいんじゃないかな。ネイティブスレッドのほうが
どう見ても有利だろう。
0140デフォルトの名無しさんNGNG
>>139
>寡聞にして Lisp レベルのスレッドの実装が複数あるとは知らなかった。
すんません。嘘書きました。CMUCL 以外の処理系がネイティブである
事をあまりにも強調してるので、混乱してました。

>商用 Lisp は大抵 OS のネイティブスレッドだろうしなぁ……。まぁ
>Lisp レベルのスレッドだとあんまりマルチプロセッサだから〜とか
>期待しないほうがいいんじゃないかな。ネイティブスレッドのほうが
>どう見ても有利だろう。
御意。

ファイルサイズの件について、ECL はデフォルトで共有ライブラリ化
されるみたいなので Mac 以外でも試してみます。現状でも特に不満は
無いです。
0141デフォルトの名無しさんNGNG
ttp://boost.cppll.jp/HEAD/libs/preprocessor/doc/topics/techniques.html キモッ
0142デフォルトの名無しさんNGNG
>>141
俺にゃぁこーゆうのは複雑怪奇に見えるが,それでも、lisp よりはマシだとか思う
人も多いのだろうな。
0143デフォルトの名無しさんNGNG
GNUがm4なんて捨ててGuileをGNUツールの中心に据えるなんて話を
大分昔に聞いたんだけど、どうなったんだろう。親分の思惑とは
離れて、LISP嫌いのUNIXユーザが多すぎるんだろうな。arcなんてのも
最近は更新されてないし。
0144デフォルトの名無しさんNGNG
多過ぎるって程でもないんじゃないのかな。elispは結構使われてるし。
0145デフォルトの名無しさんNGNG
>>141
##の使い方見てて切なくなった(w
0146デフォルトの名無しさんNGNG
俺は元大したことないLisper。CLOSなんかでprogramming。
今はC++のtemplateを使ったgeneric programmingに萌え。
0147デフォルトの名無しさんNGNG
漏れは大したことのないC++コード書き。template使ってgeneric&generativeなprogramming。
最近興味本位で触ったLispのマクロにくらくらしてる。
0148デフォルトの名無しさんNGNG
リストが循環構造かどうか、って判定する方法ある?
いちいち全部比較してくよりは、GCのマーク&スイープみたいに
マーク付けながら辿っていった方がいいかな。
0149デフォルトの名無しさんNGNG
>>148
hare and tortoise
0150デフォルトの名無しさんNGNG
"tortoise and hare" algorithm は
guile/libguile/list.c の scm_ilength() を見たらよいよ。
0151デフォルトの名無しさんNGNG
SICPの例題をこなすのにお勧めのSchemeの処理系はありますか?
環境は、Win2000 です。
0152デフォルトの名無しさんNGNG
何でもいいに決まってる。
0153デフォルトの名無しさんNGNG
>>151
DrSceme が簡単でいいんじゃないの?
cygwin + gauche という手もあるけど。
0154デフォルトの名無しさんNGNG
>>153
漏れ、最初DrScheme使ってt-y-schemeやったけど、
売りのトレースとかが、初心者モード(ほとんど何にもできない)でしか使えなくて泣いた。
0155デフォルトの名無しさんNGNG
>>151
SICPのサンプルコードはSCMかMIT-Schemeだった気がするので、
Cygwinで動くようならこれが無難?

win2kならPetite Chez + ChezEditも良いかもしんない。
0156151NGNG
MIT-Schemeってこれ http://www.gnu.org/software/mit-scheme/ ですか?
Windows binary 版をインストールしてみました。
EDwinって言うEmacs見たいなエディタも付属してます。

つか、殆どEmacs。。。
Lisp/Scheme やるには Emacs も覚えなあかんの。 _| ̄|○

Schemeの処理系って小さいイメージがあったけど
MIT-Schemeって一式で35Mbyteもあるのね。
0157デフォルトの名無しさんNGNG
>Emacs も覚えなあかんの。 _| ̄|○
Win環境の人からすると異常だけど、
UNIXのソフトって全体的にemacsのキーバインドに沿ったものが多いからね。
0158デフォルトの名無しさんNGNG
>>156
さあ、*nix文化へいらっしゃい。
今までM$に飼い頃されてたのはなんだったんだ、と開眼するから。
0159デフォルトの名無しさんNGNG
vi>>>>>>>>>>>>>>>>>>emacs
0160デフォルトの名無しさんNGNG
秀丸>>>>>>>vi
0161デフォルトの名無しさんNGNG
Emacs>>>>>秀丸

さてどうしよう。
0162140NGNG
Scheme についても調べてみました。ネイティブコードコンパイル可能な処理系では、chicken と
mzScheme は Lisp レベルでの thread みたいでした。RScheme はサイトが落ちていて不明。

ECL で --enable-threads するとビルド出来ない(最新 CVS 版)のですが、Linux 限定なのかな。
0163デフォルトの名無しさんNGNG
>>157, 158
一応、vi (ex, ed) は使えるんですけどね。漏れって vi 信者。w
などと言いながら emacs のマニュアル本買って来ました。


0164デフォルトの名無しさんNGNG
Kahua セミナー逝った香具師、レポートしてください。
地方在住 lisper は逝きたくても逝けないのです。おながいします。
0165デフォルトの名無しさんNGNG
>>158
ウイソのプログラムでメシを食ってる漏れとしてはそんな事は口が裂けても・・・
0166これってどうよ?NGNG
Pythonによるcommon lispのフロントエンド "lython"
http://www.caddr.com/code/lython/

スラドの記事
http://slashdot.jp/developers/04/02/15/1528254.shtml?topic=93

0167デフォルトの名無しさんNGNG
あくまで、Common Lisp風ね。だからScheme風といってもいいだろうし。
(import os)

(:= out "/tmp/lythontest")
(if (os.path.exists out)
    (os.unlink out)
  (print "target file does not exist"))

(:= f (open "/tmp/lythontest" "w+"))
(f.write "Hello World from Lython!")
0168デフォルトの名無しさんNGNG
pythonのライブラリが使えるlispモドキかな。
ちょっと前に話になったスクリプト云々の話は
これに食われそうだね。
ポータブルな実装としてはベースがpythonなら問題ないだろうし。
0169デフォルトの名無しさんNGNG
前も話題に出たけど、pythonと共存できて何か意味あるのか?

速度: pythonはバイトコード
ライブラリ: pythonよりもC/C++のライブラリの方が膨大
0170デフォルトの名無しさんNGNG
> ライブラリ: pythonよりもC/C++のライブラリの方が膨大

FFI が面倒なので Python のライブラリでウマーって事でしょう.
まぁ,中途半端な Lisp モドキよりは普通に Python 使ったほうが
いいような気がしますがね…
0171デフォルトの名無しさんNGNG
#define BEGIN { と似たような一抹の虚しさがただような。
ライブラリを手軽に使うのだけが目的なら、Common LispかSchemeと言語仕様を同じにしなくちゃね。
ただ、ここから新しい言語として羽ばたかせようというなら話は別だけど。
Arcみたいにね。

まぁ、ただ面白そうだからやってみたんだろうけど。
0172デフォルトの名無しさんNGNG
おまえらこんなとこでケチつけてないで、今 後 に 期 待 し と け
0173デフォルトの名無しさんNGNG
>>172 そんな言い方じゃ、話が面白くならないよ。今後に期待できるようなことは何かあるの?
0174デフォルトの名無しさんNGNG
pythonが超ポピュラーになってライブラリが暴発的に増えるとかいう展望を抱けw
0175デフォルトの名無しさんNGNG
lythonダウンロードしてみました。ウェブサイトやコードを見た限り、まだまだ、
孵化する日は先で、生まれたてのホヤホヤという感じです。

みんなが作るのが好きな俺Lispの1つですね。

しかし、よくSlashdotが取り上げたね。それが悪いというわけじゃないけど。
0176175NGNG
あっ、つけるの忘れてた。最後にwをつけて読んでください。
0177デフォルトの名無しさんNGNG
(´-`).。oO(孵化してないのに産まれたて。。。)
0178デフォルトの名無しさんNGNG
(・A・)lython!!
0179デフォルトの名無しさんNGNG
大蛇は卵生だから、産まれてから孵るまで時間がかかるんじゃないの。

しかし、インデントのかわりにS式使ってる感じだね。

そういえば、Parrot上のSchemeはどうなったんだろ。Parrot自体が資金ショー
トという噂も聞いたこともあるけど。
0180デフォルトの名無しさんNGNG
えーとguileやgaucheは「組み込みLispライブラリ」としての用途も意図されているわけですが,
実際に組み込むためのHOWTO文書とかチュートリアルってあります?
けっこう検索したんだが見付からない.

guileを組み込んだGNUプロジェクトのアプリはいくつかあるけど,大き過ぎて見る気がしない.
なんか「Schemeで拡張できるtail(1)を作ってみました」みたいな文書ないもんですかね.
0181デフォルトの名無しさんNGNG
>>180 guileの現状は知らないんですが、すこし前までは、guile自体の発展速度が
速すぎて、非互換な変更とかがけっこうあって、アプリに組み込んだ人が苦労した
という話がありました。とかいうふうに一度、レッテルを貼られると、それを取り除く
のに苦労しますよね。GNUはマニュアルをちゃんと書く習慣があると思うんだけど、
guileのマニュアルにアプリへの組み込みチュートリアルないのかな?

>>179 つーか、Parrotをやってる人たちって金もらっているのですか?
ParrotがJVMレベルのバーチャルマシンとしてみんなに認められれば、オモロ。
0182デフォルトの名無しさんNGNG
>>181
とりあえず去年の今ごろのParrot/Perl6の紹介には金が足りないというのがあっ
た。http://www.newsfactor.com/perl/story/20748.html

CVSにはscheme用もあったけど動くのか不明。ぱっと見、まだ途中かなという
感じがした。H"なんで下して試す元気がないから、誰が試してくれるとうれし
い。

;; 遅れぎみ(婉曲的な表現)なんで、逆に誰かがどれでもいいから別のVM上に
;; Perl6を実装しちゃえば英雄になれるかも。
0183180NGNG
>>181
GuileのinfoのPart 3がそれっぽいんですが,どうもイマイチ実感が...
マトモなサンプルになってないんですよ.
ドローソフトの組み込みにするために,いかに「図形」をSchemeオブジェクトとして
Cレベルで定義するかが主眼らしいんだけど.
そんな高尚なことよりとりあえずS式の設定ファイルを読みたいだけなのにな.
ま,がんばったらできそうなので文書にするかも.
0184デフォルトの名無しさんNGNG
>>180
Gaucheはドキュメントはまだ無いみたいだけど、インタプリタであるgoshが
「Gaucheライブラリのサンプルアプリ」という位置付けらしいのでソース見るのが早い。
goshはlibgaucheを初期化してrepl起動してるだけだから本当に小さいし。
0185デフォルトの名無しさんNGNG
Gauche0.7.4.1 で gdbm はどうやって使うのでしょうか。
gdbm.so が ext/Makefile から外されてる
gdbm.c はコンパイルできない。エラー多すぎ
までは調べました
0186デフォルトの名無しさんNGNG
半分解決

ndbm 使うと perl コンパチのファイルができたみたい・・
なので gdbmは不要となりました。
0187デフォルトの名無しさんNGNG
確か、configure時にgdbmの存在をチェックしてると
思うので、それが見つけられていないのでは。
gdbmが/usr/localとかにインストールしてあるなら、
./configure --with-local=/usr/local みたいにするとか。
0188デフォルトの名無しさんNGNG
恐れ入ります。
config.log 見て納得しました。
perl は p5-GDBM 入れないと駄目なんですね。
gdbm はあまり使われてないと。
0189デフォルトの名無しさんNGNG
multiple-value-bind の属性リスト版を書いたんですけど、
どうやったら gensym を使うように改良できますか?

使い方は、(setq alist '((a 2) (b 3))) と代入しておいてから
(alist-bind alist (print (+ a b)) (* a b)) を評価すると、
5 を印字してから 6 を返すような関数です。

現状はこんな感じです。
(defmacro alist-bind (alist &body body)
 (let ((alist-bind-internal-variable (eval alist)))
  `(multiple-value-bind
   ,(values (mapcar #'car alist-bind-internal-variable))
  ,(cons 'values (mapcar #'cadr alist-bind-internal-variable))
   ,@body)))
バッククオートを入れ子にして使うのがどうしてもうまくいかなくて
ほかと重ならない変数名で逃げてます。実用上は問題ないんですが
もっとスマートな解決策はないものでしょうか。
0190デフォルトの名無しさんNGNG
>>189
>5 を印字してから 6 を返すような関数です
マクロの typo です。
0191デフォルトの名無しさんNGNG
>>189
ちょっとあなたのと仕様が違いますが、昔書いたものを。

(defmacro alist-bind ((&rest vars) alist &body body)
(let ((tmp (gensym)))
`(let ((,tmp ,alist))
(let ,(mapcar #'(lambda (var)
`(,var (cdr (assoc ',var ,tmp :test #'eq))))
vars)
,@body))))

(setq data '((a . 1) (b . 2) (c . 3)))

(alist-bind (b c a) data
(list b c a))
=> (2 3 1)

(macroexpand-1 '(alist-bind (b c a) data (list b c a)))
=> (LET ((#:G219 DATA))
(LET ((B (CDR (ASSOC 'B #:G219 :TEST #'EQ)))
(C (CDR (ASSOC 'C #:G219 :TEST #'EQ)))
(A (CDR (ASSOC 'A #:G219 :TEST #'EQ))))
(LIST B C A)))
0192189NGNG
>>191
let の変数定義をマクロ展開の結果に置き換えるマクロを書くわけですね。
勉強になります。alist-bind がレキシカルコンテキストを参照できるので、
こちらの方が優れてますね。その代わり、vars に与える変数一覧を事前に
与えないといけないので、今やりたい用途には使えないですね。

いま欲しいのは、destrucuring-bind の複数版で、1個の値に対して
パターンを複数与えることができるようなマクロです。最初のパターンに
うまくマッチしなければ次のパターンを試し、マッチしたパターンがあれば
そこで変数を束縛して、対応する式を順次評価して最後の式の値を返すと
いうような物です。最後のパターンにもマッチしなかったばあいは nil と
いうことで。
(let ((x 2))
 (dbind* (list (+ 3 4) 5)      ; 最初に評価して(7 5)を得る
  ((a b c) (list a b c))       ; マッチしないので実行されない
  ((a b) (incf x) (list a b x))))   ; (7 5 3) になる
というような dbind* がうまくできなくて困ってます。
まず値を集めて、後から展開するという方針が間違ってるのかもしれません。
どうしても評価のレベルが一致しないんですよね。
0193デフォルトの名無しさんNGNG
先に進んじゃってるとろスマンけど、>>189 ってちゃんと動くのか?
(setq alist '((a 1) (b 2)))
(alist-bind alist (print (+ a b)) (* a b))
とかいたファイルをコンパイルしたら、alist-bind の展開時に
まだ alist がバインドされてないとかでエラーになるような…。
0194デフォルトの名無しさんNGNG
>>192
パターンが単純であればこんな感じかな?
destructuring-bind と同等のことがしたい場合は、
もっと複雑なことをしなければならないが。

(defmacro dbind* (list &body forms)
 (let ((vals (gensym)))
  `(let ((,vals ,list))
    (case (length ,vals)
     ,@(mapcar #'(lambda (form)
            (let ((vars (car form)))
             `(,(length vars)
              (let ,(mapcar #'(lambda (var)
                       `(,var (pop ,vals)))
                     vars)
               ,@(cdr form)))))
          forms)))))
0195189NGNG
>>193 やってみたら、compile-file でエラーが出ました。load したら 3 が印字されて t が
返りましたけど。>>192 がうまく動かないはそのせいなのかもしれません。
0196189NGNG
>>194 すみません、調べてみたら destructuring-bind よりもっと複雑な仕様でした。
例えば (dbind* '(a (2 3 4)) (('a (b 3 c)) (+ b c))) がマッチして、6 が返されます。
シンボル以外のアトムや quote されたシンボルをネストした S 式の中に書くことができ、
パターンの同じ場所に eq になるアトムが存在するときに、マッチするものと見なされます。
上の例の 3 や a がそれです。このとき、a はシンボル a に束縛されます。
0197デフォルトの名無しさんNGNG
>>196
ふむ、若干面倒だね。とりあえず、パターンのシンボルに
リストがマッチするものとして書いてみた。

(defun match (vars vals)
 (do ((vars vars (cdr vars))
    (vals vals (cdr vals)))
   ((or (null vars) (null vals))
    (not (or vars vals)))
  (let ((var (car vars))
     (val (car vals)))
   (unless (cond ((eq var val) t)
          ((symbolp var) t)
          ((atom var) nil)
          ((eq (car var) 'quote)
           (eq (cadr var) val))
          ((atom val) nil)
          (t (match var val)))
    (return)))))
0198197NGNG
続き

(defmacro dbind* (list &body forms)
 (let ((dummy (gensym))
    (vals (gensym)))
  (labels ((bind (vars vals)
        (mapcan #'(lambda (var)
              (cond ((atom var)
                 `((,(if (symbolp var) var dummy)
                   (pop ,vals))))
                 ((eq (car var) 'quote)
                 `((,(if (symbolp (cadr var)) (cadr var) dummy)
                   (pop ,vals))))
                 (t (let ((temp (gensym)))
                   `((,temp (pop ,vals))
                    ,@(bind var temp))))))
            vars)))
   `(let ((,vals ,list))
     (cond ,@(mapcar #'(lambda (form)
               (let ((vars (car form)))
                `((match ',vars ,vals)
                 (let* (,@(bind vars vals))
                  ,@(cdr form)))))
             forms))))))
0199デフォルトの名無しさんNGNG
Gauche0.7.4.1をインストールして
(string-concatenate-reverse '(" must be" "Hello, I") " going.XXXX" 7)
っていう式を評価させたらエラーになったんだけど、
SRFI-13ではそういう実装も許されてるの?
それともインストール失敗しただけ?
0200デフォルトの名無しさんNGNG
>>199 バグじゃん? wilikiにでも報告するよろし。
0201デフォルトの名無しさんNGNG
perlのスクリプトとをgaucheに移植してるんだけど
perlとgaucheの対応表なんてどっかにありませんか。
とりあえず
open(STDERR, ">&STDOUT")
$| = 1
$!
がわからない。
0202デフォルトの名無しさんNGNG
>>199
ttp://www.shiro.dreamhost.com/scheme/gauche/man/gauche-refj_236.html
optionalついてないのがGaucheでの仕様なんじゃないの?
0203デフォルトの名無しさんNGNG
つーかトランスレーター作ろうぜ
perlよくわからない
0204デフォルトの名無しさんNGNG
Perl を勉強して書き直すほうがためになるよ。きっと。
0205デフォルトの名無しさんNGNG
Perlを知らずにトランスレータもないだろうに
0206デフォルトの名無しさんNGNG
>>201
$| = 1 と $! の例を強引に考えてみた(dup は不明)。詳しい人のフォロー希望。

(with-error-handler
(lambda (e) ;; e は例外オブジェクト($! のようなもの)
(format (current-error-port) "ERROR: ~a¥n" (ref e 'message)))
(lambda ()
;;(with-input-from-file *program-name* ;; 正常パターン
(with-input-from-file "nowhere file" ;; エラーパターン
(lambda ()
(set! (port-buffering (current-output-port)) :full) ;; $| = 1 ?
(port-for-each
(lambda (line)
(display line)
(newline))
read-line)))))

C がわかるなら、リファレンスの C と Scheme の対応一覧が役に立つかも。
0207デフォルトの名無しさんNGNG
勘で。

----
$|=1;
open IN, "foo.pl";
print while (<IN>);

-----
(call-with-input-file "foo.scm"
(lambda (in) (copy-port in (current-output-port)))
:buffering :none)
0208こゆことかな...?NGNG

------------------------------
#!/path/to/gosh

(display "Content-type: text/plain\r\n\r\n")
(display "Test.\r\n")

(with-error-handler (lambda (e) (print #`"***ERROR: ,(ref e 'message)") (exit 1))
(lambda () (with-input-from-file "no_such_file" (lambda () (print "File opend.")))
))

------------------------------
#!/path/to/perl

open(STDERR, ">&STDOUT");
$| = 1;

print "Content-type: text/html\n\n";
print "This is a test.<BR>";

open(IN, "no_such_file") || die "***ERROR: ", $!;
close(IN);
0209デフォルトの名無しさんNGNG
恐れ入ります。
簡単に行かないというのがわかりました。
dup と flush は gosh本体に仕込んで起動時オプションで処理する。
$! もグローバル変数に組み込んでしまうのが簡単か
0210デフォルトの名無しさんNGNG
別の言語なんだし全部直訳はできないのは当然じゃん。
いろいろ解説してくれた人がいたんで代わりにまとめ。

open(STDERR, ">& STDOUT") なら
(with-error-to-port (current-output-port) THUNK)

$| = 1 じゃなくて autoflush を使うべきなんで
((setter port-buffering) PORT :none)

$! でメッセージが欲しいのなら with-error-handler
でエラーをキャッチして (slot-ref ERR 'message)。
これは eval で die をキャッチするのをイメージ。
0211189NGNG
>>197-198
ありがとうございました。遅くなりましたが、自分の欲しい内容への改造が
やっとできたのでお伝えします。
比較対象がアトムやquoteされたアトムの場合の動作を改善するため、
トップレベルだけを別扱いにすることにしました。
(defun match0 (vars vals)
(cond ((symbolp vars) t)
((atom vars) (eq vars vals))
((atom vals)
(and (eq (car vars) 'quote) (null (cddr vars)) (eq (cadr vars) vals)))
((eq (car vars) 'quote) nil)
(t (match vars vals))))
という関数を追加し、dbind* の labels で定義している局所関数にも
((bind0 (vars vals)
(cond ((atom vars) (if (symbolp vars) `((,vars ,vals))
`((,dummy ,vals))))
((eq (car vars) 'quote) `((,dummy ,vals)))
(t (bind vars vals))))
という定義を追加します。そして dbind* 末尾から3,4行目の
`((match ',vars ,vals)
(let* (,@(bind vars vals))
をそれぞれmatch0, bind0 の呼び出しに置き換えます。

動作の変わった例としては、以下のようなものがあります。
(dbind* 3 ((4) 5)) ; エラーにならずにnilを返すようになった
(dbind* '(3 7) (any any)) ; (3 7) を返すようになった
(dbind* '(3 7) ('any t) ; 7 を返していたのがnilを返すようになった
0212嵩NGNG
131 : :04/02/10 19:06
(define make-structure
(lambda (n) (lambda (d) (lambda (m) ((m n) d)))))
(define select
(lambda (c) (c (lambda (a) (lambda (b) a)))))

の意味がいまいちわかりません。
例えば、
(select ((make-structure (+ 7 5)) (- 9 3)))
とした時のラムダ計算の課程を教えてくれませんか。

132 :デフォルトの名無しさん :04/02/10 19:17
>>131
n := 7 + 5 => 12
d := 9 - 3 => 6
c := (lambda (m) ((m 12) 6)) => #<closure>
m := (lambda (a) (lambda (b) a)) => #<closure>
a := 12 => 12
b := 6 => 6
=> 12

となっているけど、もう少し詳しく説明できる人いますか?
ラムダ計算が今一よくわからないもんで。
0213デフォルトの名無しさんNGNG
>>212
詳しく説明できるが

聞 き 方 が 気 に 食 わ な い
0214デフォルトの名無しさんNGNG
関数適用で束縛変数を引数で置き換えればいいんだよ。
0215デフォルトの名無しさんNGNG
make-structure = λn.λd.λm.((m n) d)
select = λc.(c λa.λb.a)

(select ((make-structure (+ 7 5)) (- 9 3)))
= (select ((make-structure 12) 6))
= (select ((λn.λd.λm.((m n) d) 12) 6)) ; nを消す
= (select (λd.λm.((m 12) d) 6)) ; dを消す
= (select λm.((m 12) 6))
= (λc.(c λa.λb.a) λm.((m 12) 6)) ; cを消す
= (λm.((m 12) 6) λa.λb.a) ; mを消す
= ((λa.λb.a 12) 6) ; aを消す
= (λb.12 6) ; bを消す
= 12
0216デフォルトの名無しさんNGNG
私はslot-refでCLOS止めました
letで囲めばいいじゃん!
0217デフォルトの名無しさんNGNG
なんか物凄い基本的なことかもしれないですが、
Schemeの末尾再帰の動きが良くわからないのです。
どなたか教えてくださいませんか

(define fact-tail
(lambda(n x)(if( (= n 0) x
(fact-tail(- n 1)(* n x)))))

階乗を求めようとしているのはわかりますが、
これに対して、(fact-tail 5 1)
を与えたら何で120が導けるのかいまいちわからないです。

(fact-tail 3 1) として
どういう風に再帰展開されるのかわかるかた
教えていただけませんでしょうか。
0218デフォルトの名無しさんNGNG
>>217
1ステップずつ考えれば分かるだろ
0219デフォルトの名無しさんNGNG
>>217
(fact-tail 3 1)
(fact-tail (- 3 1) (* 3 1))
(fact-tail 2 3)
(fact-tail (- 2 1) (* 2 3))
(fact-tail 1 6)
(fact-tail (- 1 1) (* 1 6))
(fact-tail 0 6)
(= n 0) が真になるので 6 を返す

末尾再帰は C などの for ループと本質的に同じ
int fact(int n){
    int x=1;
    for(; n--; 0!=n) x*=n;
    return x
}
0220217NGNG
>>219
ありがとうございます。ぼけてました。引用もとの文には
(if (= n 0) x
と書いてあるのに手持ちのメモに
(if (= n 0) 1
と書き写してしまいそっちをみていてはまってしまいました
すっきりしました。おさわがせしてすみません。
0221217NGNG
>>219
引用元はSoftwareDesign の2000年9月号のScheme特集でした。
「末尾再帰を使うとスタックを消費しない」
と書いてあったけどイメージしにくかったんですが
for ループに対応してると考えるとわかりやすいですね。
0222デフォルトの名無しさんNGNG
繰り返しを末尾再帰に直すと、変数代入の様な
明示的副作用を書なくて良いというのがあって、
Schemeではset!をほとんど使わずにコードが書ける。
0223デフォルトの名無しさんNGNG
schemeに限ったことじゃないような。
まあ、"俺Lisp"的な実装はは末尾再帰最適化がなかったりするけど。
0224デフォルトの名無しさんNGNG
>>223
Schemeは言語仕様上いつでも安心して使えるってことだよ。
例えばtail recursionがproperじゃないCommonLispで
「常に末尾再帰を意識しながら書く」って奴がいるとも思えないが。
0225デフォルトの名無しさんNGNG
>>216
言いたい事が良くわかりまらないんだが with-slots あたりで満足ですか?

>>224
大抵のプログラマは意識はしてると思いますが。
末尾再帰の話が出てこない CL の入門書は見たことないですし。
CL だと最適化オプション下げれば末尾再帰の最適化が
OFF になってデバッグしやすくなるし。
0226デフォルトの名無しさんNGNG
Emacs LispやCommon Lispを主に使って、Schemeはあまり使わない俺の場合だと、
再帰呼び出しが末尾にあるかどうかは最初はほとんど気にしません。

読みやすさや見ための綺麗さを優先して最初はコーディングします。

再帰を使う時は、スタックの消費量が問題になるほど、呼び出しが深くなるか
どうかには注意します。そして、CLを使っているときは、もし再帰呼び出しが
末尾位置にあれば、ああ、スタックの消費量を気にしなくてもいいかな、という
考えが頭に浮かびます。
0227225NGNG
> 言いたい事が良くわかりまらないんだが with-slots あたりで満足ですか?
いかん、丁寧に直したら副作用で日本語が壊れている……

>>226
末尾再帰って末尾位置に再帰があれば良いってもんじゃないんだけど。
0228デフォルトの名無しさんNGNG
>>227
>末尾再帰って末尾位置に再帰があれば良いってもんじゃないんだけど。
R5RSに定義されている「末尾位置」のつもりだったんですけど?
0229デフォルトの名無しさんNGNG
>>227
> 言いたい事が良くわかりまらないんだが with-slots あたりで満足ですか?
あんた、いい人だ!
でもgoshに無いのでやっぱりCLOS止め
0230デフォルトの名無しさんNGNG
>>228
スマン。末尾位置ってはじめて聞いたもんで。tail context の事なのか?

>>229
なんだそりゃ! 無いならお前が作れ!
0231デフォルトの名無しさんNGNG
>>230
> tail context の事なのか?
そうです。不正確でしたね失礼しました。今、R5RSで確認したんですけど、
tail contextが正しい用語みたいですね。覚えておこう。ちなみにtail contextの
日本語定訳はあるのかな?

gaucheでゴーシュ。俺はしばらく「ガウチェ」と発音していたよ。
0232デフォルトの名無しさんNGNG
>>225
末尾呼び出しを思いっきり使えるかどうかって、
コーティングスタイルがまるで変わってくると思うんですが、

>ttp://www.swiss.ai.mit.edu/~jaffer/hobbit_4.html
(define (cpstak x y z)
 (define (tak x y z k)
  (if (not (< y x))
    (k z)
    (tak (- x 1)
       y
       z
       (lambda (v1)
        (tak (- y 1)
          z
          x
          (lambda (v2)
           (tak (- z 1)
              x
              y
              (lambda (v3)
               (tak v1 v2 v3 k)))))))))
 (tak x y z (lambda (a) a)))
;;; call: (cpstak 18 12 6)

たとえばこういう内包挟んだ末尾再帰もCommonLispコンパイラが
ちゃんと末尾として認識するのかなと。
0233デフォルトの名無しさんNGNG
>>230
いや、おれは「letで囲めば良い」を布教させる事に全力を傾けたい
だから、もう一度、キョンキョンにこの歌を歌ってもらおう

(キョンキョン)おまえら!一緒に歌ってくださーい

♪defineの次に、letで囲めばぁー
いーじゃん♪ (見逃してくれよー)
いーじゃん♪ (見逃してくれよー)

♪作ったlambdaの引数はいつもこれ→(msg . args)
いーじゃん♪ (メッセージ送れよー)
いーじゃん♪ (メッセージ送れよー)


(キョンキョン)よし、分かったな。じゃあ解散!
0234デフォルトの名無しさんNGNG
↑バカ?
0235デフォルトの名無しさんNGNG
>>232
大抵のコンパイラは普通に認識するよ。
0236デフォルトの名無しさんNGNG
徹夜で気でも狂ったか?
0237デフォルトの名無しさんNGNG
ワロタ
0238デフォルトの名無しさんNGNG
>>232 俺はこういうコーディングは思いつかないと思うけど、schemerの人って
こういうコーディングをよくするの? 見ためは、綺麗だよね。
0239デフォルトの名無しさんNGNG
>>232
そういうコードが安心して使えるかどうかっていうと駄目だろ。
CommonLispはコンパイラの最適化って点でインプリメンタの気まぐれなわけだし。
コーティングスタイルにまでは及ばない。
0240デフォルトの名無しさんNGNG
>>238
CPS(232みたいなk=continuationを渡していくやつ)はよく使うよ。
0241デフォルトの名無しさんNGNG
♪defineの次に、letで囲めばぁー
0242デフォルトの名無しさんNGNG
春はまだ先だぞ
0243デフォルトの名無しさんNGNG
最適化部分は処理系依存なだけで。 C とかだって最適化は規格で決まってなくても
プログラマは処理系のマニュアル見て安心して使うだろう?末尾再帰の最適化が完全
に良い事づくめなら Scheme みたいに規格で決めちゃってもいいかもしれんけど,デ
バッグがやりにくくなるからなぁ……

でも普通は処理系が対応してりゃ安心して使えるだろう。大抵のコンパイラは末尾再
帰の最適化機能を備えているわけだ。以前 c.l.l でも出ていたがやっぱ最適化オプ
ションに「末尾再帰の最適化」を設けるべきだろうなぁ。規格以外は一切使わないと
いうポリシーもありだと思うけどね。
0244sageNGNG
(見逃してやれよー)
0245デフォルトの名無しさんNGNG
>>243
デバッグがやりにくくなる?
どんなデバッグしてるのさ
ログ出すだけじゃないの?
0246デフォルトの名無しさんNGNG
アセンブラ出力しておっかけてるんだろ
0247デフォルトの名無しさんNGNG
xyzzy で tail recursion が遅いのは大変残念な思いがします.
0248デフォルトの名無しさんNGNG
関数トレースしたり、エラーがでたらバックトレースみたり、
スタックフレームのぞくだけだけど…。ひょっとして「ログ出す」
ってのが普通なの?漏れ Lisp の正規の教育受けてないので
常識には自身がないんだよね。
0249デフォルトの名無しさんNGNG
s/自身/自信/
どうやら国語も勉強しなおしたほうがいいようだ。吊ってくるわ。
0250デフォルトの名無しさんNGNG
所詮はエディタだし。
0251デフォルトの名無しさんNGNG
Lispの正規の教育受けてる人なんてほとんどいないだろ。
Java/C/C++でさえ書籍orWebの情報だけでやっていく人がたくさんいるし。
0252デフォルトの名無しさんNGNG
正規の教育ってなんだ?(w
0253デフォルトの名無しさんNGNG
>>245 のデバッグ手法を教えてください。漏れも最適化したらデバッグ用
情報が減るのは当たり前だと思ってたんだけど。Scheme では関数呼び出し
情報とかはあんまりデバッグに使わないんですか?
0254デフォルトの名無しさんNGNG
schemeも、トレース実行すると末尾再帰の呼び出しが
普通の再帰みたくツリー上に出るんじゃない?
デバッグでなんか大きな違いってあるの?
0255デフォルトの名無しさんNGNG
>>253
ログ出しについての説明か?
ループの中で変化する変数を表示するだけですが。
0256デフォルトの名無しさんNGNG
>>254
え、何という処理系ですか?デバッグ周りって処理系依存ですよね。
トレース実行って特定の関数だけとか全体とか指定できるんですか?
>>255
それだけじゃキツイなぁ。再帰がふか〜い所でエラーな時とか。
やっぱエラーになってデバッガが立ち上がったところから手繰って
いけたほうが便利だと思いますが。私の使ってる処理系は debug レベル
を 2 以上にすると末尾再帰の最適化が行われなくなるのでエラーに
なった時点からフレームをたどっていけますが…。
0257デフォルトの名無しさんNGNG
traceなら処理系というかマクロでできるよ
0258デフォルトの名無しさんNGNG
デバッグがらみの話題で、処理の流れを目で追うことができるソースレベルデバッガが
売り物の処理系でも付いていないというのは、要望が少ないからなのかな? たしかに
バックトレースの表示などの伝統的なやり方でもデバッグできるけどね。あと、要所
要所に(format t "my-var = ~S~%" my-var)を挿入とか。俺はPerlでもこのやり方で
デバッグするね。Data::Dumperという便利なものもあるし。

俺はEmacs Lispではソースレベルデバッガであるedebugをもっぱら使ってdebugはほとんど
使ったことがない。
0259デフォルトの名無しさんNGNG
stepじゃ駄目なの?
0260デフォルトの名無しさんNGNG
>>259 いや、stepでもたぶん同じことができると思うけど、エディタでコード全体を
見渡しながらデバッグできると気持がいいんだよね。ついでに、監視したい式なんかを
複数登録しておいて常時、その値を表示させておくとか。ブレーク時に画面上で変数の
上にマウスポインタを置くだけで、値が表示されるとか。

つまり、昔かたぎの人からみれば、俺は現在のIDEに毒されているヘタレということか。プ
0261デフォルトの名無しさんNGNG
slimeに期待かな。
現時点でもエラー箇所の表示とか凝ったことできるし。
0262デフォルトの名無しさんNGNG
名前がスライムっぽくて嫌
0263デフォルトの名無しさんNGNG
メタルスライムがあらわれた
メタルスライムAは逃げ出した
0264デフォルトの名無しさんNGNG
バックトレースってデバッグでは便利だと思うんだけど Scheme の人は
要らないのかな?拾ってきたプログラムがエラー吐いてとまったときと
かバックトレースが空だとちょっと悲しいんだけど。

>>257
なんか安心して使える trace の実装とかあります?処理系によっては
付いてるみたいだけど。付いてないのも結構あるので困るんですが。
0265デフォルトの名無しさんNGNG
>>264
そういうのはどう転んでも処理系依存だしなあ。
いつでも外せるassertみたいなの埋め込むぐらいしか。
昔さわったminischemeのトレースはトレース対象を出力用の
フック関数で挟む方式だった。後付けマクロ。
関数突入・脱出でトレース出力するので、
トレース対象関数は自然と末尾再帰が外れて山形の出力になる。
ただし内部関数、名無し関数には使えない。
0266デフォルトの名無しさんNGNG
foo,bar,baz,mumble,glorp
これって何に由来してんだぁ?
0267デフォルトの名無しさんNGNG
>>266
foo と bar は RFC で定義されているよ
0268デフォルトの名無しさんNGNG
RFCは冗談も混ざっているからなぁ。
0269デフォルトの名無しさんNGNG
MLの有名な本より写経
A Lisp hacker says: 'Since the integers are a subset of the
real numbers,the distinction between them is wholly artificial
--foisted on us by hardware designers.ML should simply provide numbers,
as Lisp does, and automaticaly use integers or reals as appropriate.'
Do you agree? What considerations are there?

MLerはいろいろ言うだろうが、Lisperはどう答える?
0270デフォルトの名無しさんNGNG
なにを勿体つけてるんだ? ML for the working programmer の ex2.2
って言えばいいじゃん。翻訳もせずに丸投げなあたり宿題か何か?

まぁ実際 ML にまでそうしろと言う Lisper は少ないと思うよ。
NetNews でも ML の数値周りが気に食わないと噛み付いてた Lisper
は居たけど ML に Lisp 式の数値にしろ!とまで言うやつぁ少ないだろ。
理由はなんで ML がそうしてるかを考えればわかるだろ。
0271デフォルトの名無しさんNGNG
まあ、そう熱くならんでも。
型無しのありがたみって何だろうな、というネタフリなんよ。
0272デフォルトの名無しさんNGNG
本からのコピペ程度でいちいち age るのがウザイんだよ。
ML スレでやれば?型無しのありがたみは無いってことでいいからさ。
デバッグ方法が聞けてウマーと思ってたのに、そんなつまらんネタ振るな。
だいたいここは Lisp 総合スレなんだ、型有りの Lisper 連中からすりゃ
ハァ?って話題だろーが。全部の LISP 型無しという狭い見識をなんとか
してから出直してきてくれ。
0273デフォルトの名無しさんNGNG
dat 落ちした前スレを html 化してもらいました。

LISP Scheme Part9
http://ruku.qp.tc/dat2ch/0403/01/1069594582.html
0274デフォルトの名無しさんNGNG
強い型付けのないSchemeのような言語には
良いところもあるよなぁ、ということを言いたかった
だけなんだがなぁ...
0275デフォルトの名無しさんNGNG
まぁ、あんまり気にすんなや。
0276デフォルトの名無しさんNGNG
健全なマクロ VS 不健全なマクロ

1 :デフォルトの名無しさん :04/03/02 19:14
(ちょっと入れ子でスレ立たせてくれや)
健全なマクロって不便だし、不健全なマクロの貸しコートもささくれ立っていてなんかイヤ。
だから、健全なマクロに「不健全」ていうオプション欲しいよな?
お前ら、どう思いますか。

0277デフォルトの名無しさんNGNG
健全なマクロ VS 不健全なマクロ

2 :デフォルトの名無しさん :04/03/02 19:15
2get
0278デフォルトの名無しさんNGNG
「不健全」というと健全なのより悪いイメージがあるからな〜。
個人的にはつまらないマクロと楽しいマクロだな。変数キャプチャ
があった方がいろんな意味で楽しい。はまるとデバッグも愉快な事
になるしな。アヒャヒャヒャヒャ。
0279デフォルトの名無しさんNGNG
define-unhygienic-syntax ;-)
0280デフォルトの名無しさんNGNG
defmacro/define-macroの方が簡単だし構造見えるし作りやすい。
gensym命。でもSRFIのhygienicマクロそのまま読めない罠。
まあhygienic作る暇あったら正規表現でも統一しなさいってこった。
0281デフォルトの名無しさんNGNG
>>278
define-boring-macro/define-amusing-macro とか?
まぁ変数キャプチャを防いだところで世間の見る目はかわらんよね。
R... な言語の作者だってマクロはダメポって言ってたけどこれは
変数キャプチャ云々の話じゃないわけだし。
0282デフォルトの名無しさんNGNG
>>281
世間の見る目って?どんな風に見られてるの?
m@zはどうしてマクロはダメポって言ってるの?
0283デフォルトの名無しさんNGNG
>>282
「神聖なる構文を一般利用者が触るなんてとんでもない。そんなの混乱の元だよ!」
ユーザビリティの問題だとかいってたあたりの事だと思われ。確認してないから
不正確かも知れんが探すのマンドクサ(括弧の話だったかも?)
0284デフォルトの名無しさんNGNG
あのひとはユーザビリティって言葉好きだよね
0285デフォルトの名無しさんNGNG
その割にRubyて妙な構文だらけだね
え、LISPには劣るって!?
0286デフォルトの名無しさんNGNG
あぁ!?神聖なる構文?

しゃらくせえ。

おれ様が欲しいのは圧倒的な自由なんだよ!
Schemeは聖域無き言語だぜ!

ユーザビリティーだと?

ヌルイ!ヌルイよそれ!
ちょーヌルイよ!

あーヌルイ。母さーん、火ぃつけてくれ。

ふぅー、ぬるぽ。
0287デフォルトの名無しさんNGNG
C言語みたいな、ちょっと小汚い言語の方が好かれるかもなあ
0288デフォルトの名無しさんNGNG
vimのVIlispってプラグインまともに動かせてる人いる?
設定のコツを教えてくれ。
\esで評価しようとするとvimが固まるんだけど…
0289デフォルトの名無しさんNGNG
  ( ・∀・)   | | ガッ
 と    )    | |
   Y /ノ    人
    / )    <  >__Λ∩
  _/し' //. V`Д´)/
 (_フ彡        /  ←>>286

0290デフォルトの名無しさんNGNG
Lispをよく知る前は、Lispは再帰が命と聞いた。
↓
Common Lispを習ったら、再帰はC++と同じくらいしか使わないなと思った。
↓
Schemeを習ったら、「やっぱりLispは再帰が命?」と思った。
0291デフォルトの名無しさんNGNG
CPS (continuation passing style)ってSchemerの人達が発明したコーディングスタイルなのかな?
末尾再帰の最適化が保証されていないと、いやがる人がいそうな書き方だよね。

実際は、メモリを結構積んでいるマシンが増えたから、再帰が多少深くなったって、困る場面ってそうそう
ないような気もするけど。
0292デフォルトの名無しさんNGNG
コンパイラ関連でよく出てくるよ>CPS
0293デフォルトの名無しさんNGNG
>>291
CPS ってもう少し汎用的な概念だと思う。
state パターンも原始的な CPS だと言えなくもない。

末尾再帰を使うのはたまたま scheme が末尾再帰を正当化してくれているから。
0294デフォルトの名無しさんNGNG
http://www.lispworks.com/reference/HyperSpec/Body/t_std_cl.htm
> System Class STANDARD-CLASS
> Class Precedence List: standard-class, class, standard-object, t
(subtypep 'standard-class 'standard-object)
=> NIL T ;; clisp
=> NIL T ;; cmucl
=> T T ;; ecl
=> T T ;; lispworks
なにこの処理系たち…

久しぶりにaclをインストールしたら、
./alisp
dlopen(/tmp/acl62_trial/libacli623t.so, mode) error: /tmp/acl62_trial/libacli623t.so: symbol errno, version GLIBC_2.0 not defined in file libc.so.6 with link time reference
と言って立ち上がらない…
0295デフォルトの名無しさんNGNG
CVS 鯖のトラブルで遅れれてるけど CMUCL 19a は↓だよ.がんがれ Martin !
(Martin は週末に時間があったらがんがるそうです)

CLOS based on Gerd's PCL 2003/06/18 09:23:09
* (subtypep 'standard-class 'standard-object)
T
T
0296294NGNG
clisp 2.28 (released 2002-03-03)
cmucl CLOS 18e (based on PCL September 16 92 PCL (f))
ecl 0.9c
lispworks Version 4.3.6
でした。

そういえば、cmuclはCLOSをだれか(Martinていう人?)が速くなるように書き直し
ているという話を聞きました。

clispとか報告したほうがいいのかな…。fixも一緒じゃないとなんとなく気が引ける
んだよね。一般的にconformance bugって重箱の隅をつつきだしたら結構あるし。
0297デフォルトの名無しさんNGNG
あれっ、clisp 2.28って古すぎですね。今は2.32か。
0298デフォルトの名無しさんNGNG
GNU CLISP 2.32 (2003-12-29)
[1]> (subtypep 'standard-class 'standard-object)
NIL ;
T
0299デフォルトの名無しさんNGNG
いや今 CMUCL はメインの CVS 鯖がダウンしてて Martin タソが準備してるってだけ。
はやくなおらないなか〜。PCL をいじってたのは Gerd Moellmann です。だから Gred's PCL。
19a からこっちになる予定。
0300デフォルトの名無しさんNGNG
今、cl-ppcreをDebianシステムにインストールしたんだけど、
apt-get install cl-ppcre
で、clisp、cmucl、sbcl-mtなどインストールされているコンパイラ用にちゃんと
コンパイルしてインストールくれるんだね。

しばらくDebianにさわってなかったけど、なんだか、とんでもなく便利になってきている気がする。
debパッケージになっているライブラリも多いし。Debian使っているLisperが多いのかな。
たしかcmuclの開発者もdebianの人が多かったよね。

あと、Redhat(Fedora?)だとメモリチェッカか何かの影響でcmuclが動かない(かった)という話も
きいたことがあるね。今でもそうなのかな?
0301デフォルトの名無しさんNGNG
>>299
同意。
早く復活しないとSBCLに(ry
0302デフォルトの名無しさんNGNG
たしかに、現状でSBCLの方が開発に勢いがあると言ってた人がいたな。
0303デフォルトの名無しさんNGNG
CMUCL派生なのに、ベンチマーク結果が大きく違うのは何でだろ。
http://www.cons.org/cmucl/benchmarks/index-print.html
0304デフォルトの名無しさんNGNG
>>303 俺にはだいたい同じような結果に見えます。sbcl vs cmucl
0305デフォルトの名無しさんNGNG
block compile って何ですか?
0306デフォルトの名無しさんNGNG
>>305 どんな文脈で、でてきた言葉ですか?
0307デフォルトの名無しさんNGNG
たぶんcmuclじゃないかな。
ftp://ftp.averillpark.net/cmucl/doc/cmu-user/compiler-hint.html#toc161
を熟読。
0308デフォルトの名無しさんNGNG
Gaucheはmingw用でいいからWindows向けのmakefile書いて欲しいなあ。
cygwin入れてconfigure環境作るのマンドクサ
0309デフォルトの名無しさんNGNG
>>309
確かに。漏れもGaucheのためにcygwin入れたよ。
0310305NGNG
>>306-307
レス遅くなりまして済みません。SBCL と CMUCL の比較で、SBCL はまだ block compile
が出来ないよみたいな記述があったので、お聞きしました。

>>307
どうもありがとうございます。読ませて頂きます。
0311デフォルトの名無しさんNGNG
block compileには何のメリットが?
0312189NGNG
以前、>>197-198 でコードを提供していただいた者です。
>>211 の後で、ドットリストも扱えるように改造して、欲しい仕様の物ができました。
それを、いま移植作業を進めているプログラムに同梱したいのですが、著作権表記や
ライセンスなどでご要望がありましたらお知らせください。
(元プログラムがBSDライセンスなので、それと同じで配布できるとありがたいのですが)
0313197NGNG
>>312
好きにしていいよ。
0314デフォルトの名無しさんNGNG
このスレ廃れたな....
0315デフォルトの名無しさんNGNG
わざわざ言うほどでもない
0316デフォルトの名無しさんNGNG
いや、初心者スレの登場でレスが分散して、ここ数日何か寂しいなあと感じたので。
0317デフォルトの名無しさんNGNG
淋しがりやさんなのね
0318デフォルトの名無しさんNGNG
新ネタがくれば ワッシワッシ盛り上がるよ
0319デフォルトの名無しさんNGNG
両方見てれば別に寂しくないじゃん。
ところで >>189 は何を移植してるんだろ。
期待して待つぞ〜
0320デフォルトの名無しさんNGNG
↓新ネタ登場!
0321189NGNG
>>319
http://khdd.net/kanou/kangae/2003/Apr.html#12.1.4 をご覧ください。
0322デフォルトの名無しさんNGNG
>>321 リンク先みても(12.1.4というアンカー名が見つからない)、いまいち分からないのですが、フォント関連のアプリですか?
0323デフォルトの名無しさんNGNG
http://khdd.net/kanou/kangae/2004/Mar.html#12.1.4
と間違えたんだろ
0324デフォルトの名無しさんNGNG
なるほろ
0325デフォルトの名無しさんNGNG
#+cmu
(loop for i from 128 to 255 do (set-syntax-from-char (code-char i) #\a))
みたいに処理系固有の処理は *features* を使うとイイと思われ。
0326デフォルトの名無しさんNGNG
こういうのを高階関数を使って綺麗に書けませんか?
(lambda (a b) (> (car a) (car b)))
0327デフォルトの名無しさんNGNG
>>326
逆に汚いかも
(lambda (a b) (apply > (map car (list a b))))
0328デフォルトの名無しさんNGNG
(> a b :key #'car)

みたいに書きたいということじゃないの。
0329326NGNG
説明不足ですみません。↓こういう用途で使いたいのです。
(sort '((5 a) (3 b) (4 c))
(lambda (a b) (> (car a) (car b))))
map,cut,apply,compose等を使って相当考えたんですが
lambdaを使わないで表現できません・・・
綺麗or簡潔にするのは無理な気がしました。
でも汚い例ですら考えつかなかったので悔しいです。
0330 NGNG
(define (cons x y)
(lambda(m)(m x y)))

(define (car z)
(z (lambda (p q) p)))

としたとき、(car (cons x y)) が x を生じることを
証明せよ、とSICPに言われたんですけど、よくわからんのです。
頭がこんがらがって。
mzscheme というのを使ってるのですが、動きを追うための
機能ってないんでしょうかね。
0331デフォルトの名無しさんNGNG
言語レベルを落とせばトレースできたような気がしなくもないが
普通に式変形してけばOKかと
(car (cons x y))
=> (car (lambda (m) (m x y)))
=> ((lambda (m) (m x y)) (lambda (p q) p)))
=> ((lambda (p q) p) x y)
=> x
0332 NGNG
>>331
あ〜、なるほど。ありがとうございます。
すっきりしました。わたしまだ基本ができてないっすね。
精進します。
0333デフォルトの名無しさんNGNG
>>329
(sort '((5 a) (3 b) (4 c)) #'> :key #'car)
0334326NGNG
>>333
おおっ ありがとうございます。
Schemeは無理ですか?
0335デフォルトの名無しさんNGNG
sort関数自体の仕様による。
どうしても必要なら
(sort '((5 a) (3 b) (4 c)) > car)
という引数を受け付ける様にするとか。
car>という関数でも作るとか。
0336デフォルトの名無しさんNGNG
(lambda a (apply > (map car a)))
0337326NGNG
>>336
こんなことができたのですか。これなら満足です。
皆さんどうもありがとうございました。
0338 NGNG
(define (reverse ls)
(if (null? ls)
ls
(append (reverse (cdr ls))(list (car ls)))))

とやると、リストがさかさまになるらしいのですが、動きは
どうなるのでしょう。
最初の引数が(1 2 3)として、
(append (reverse (cdr (1 2 3))(list (car (1 2 3))))
(append (reverse ((2 3))(list (1)))
(append (reverse ( (cdr (2 3)))) (list (car (2 3))))
(append (reverse (3))(list (2)))
となって、あれ?となります。けど実行するとさかさまになっている
なんかわからないです。だれか動き方を教えてください!
0339デフォルトの名無しさんNGNG
>>338
(reverse '(1 2 3))
(append (reverse '(2 3)) '(1))
(append (append (reverse '(3)) '(2)) '(1))
(append (append (append (reverse '()) '(3)) '(2)) '(1))
(append (append (append '() '(3)) '(2)) '(1))
(append (append '(3) '(2)) '(1))
(append '(3 2) '(1))
'(3 2 1)
0340 NGNG
>> 339
あ!
append 自体が入れ子になるわけですね!
やっとわかった!ありがとうございました!
0341デフォルトの名無しさんNGNG
だれか、これ知っていますか? ECLと似たアプローチだと思うけど、評判はあまり聞かないな。
WCL 3.0 - Embeddable Common Lisp for Linux
http://wcl.kontiki.com/
何でもいいから情報キボンヌ
0342デフォルトの名無しさんNGNG
前スレ 422 からの Y combinator は面白い。
関係ないけど、クロージャをオブジェクトと見立てて self や this 相当の機能を実現しようと
するとマクロを使うか引数で渡してあげるしかないのかな。
0343デフォルトの名無しさんNGNG
>>342
letrec とか使えば、とりあえず自分を参照できるけど。

(let* ((foo (let ((val 1))
(define (self sym)
(cond ((eq? sym 'val) val)
((eq? sym 'self) self)))
self))
(bar (let ((super foo)
(val 2))
(define (self sym)
(cond ((eq? sym 'val) val)
((eq? sym 'self) self)
((eq? sym 'super) super)
(t (super sym))))
self)))
(list (bar 'val) ((bar 'self) 'val) ((bar 'super) 'val)))

=> (2 2 1)

とか、こういう話?
0344デフォルトの名無しさんNGNG
>>343
そっか、let で括ってあげれば良いんですね。lambda だけでと考えてました。
0345デフォルトの名無しさんNGNG
頼むから、CMUCLのCVS早く復旧してくれよ。
もう二ヶ月以上も経過してるぞ。
0346デフォルトの名無しさんNGNG
ミラーは全部生きてるわけだし普通のユーザーにはそれほど不都合は
無いでしょ。Martin タンだってボランティアなんだしあまりワガママを
言うもの気の毒じゃん。どうしても文句言いたきゃ cmucl-devel で騒ぐ
ほうか良いと思われ。
0347デフォルトの名無しさんNGNG
>Martin タンだってボランティアなんだしあまりワガママを言うもの気の毒じゃん。
なのに
>どうしても文句言いたきゃ cmucl-devel で騒ぐほうか良いと思われ。
ってのは一番ヤバい選択なような。
0348デフォルトの名無しさんNGNG
自分では何もする気がないのにただ「さっさと復旧汁」とか言いたいだけなら
黙ってたほうが賢明かと。別に配布が完全停止ってわけでもなくデベロッパーは
黙々と作業してるわけで。でも建設的な提案(回線とセットアップ済みハードウェア
を提供とか)があるなら言ってみれば。
0349デフォルトの名無しさんNGNG
>自分では何もする気がないのにただ「さっさと復旧汁」とか言いたいだけなら黙ってたほうが賢明かと。
俺はそうは思わない。以上

>でも建設的な提案(回線とセットアップ済みハードウェアを提供とか)があるなら言ってみれば。
なんで建設的な話?
不毛な雑談を認めないのかよ。
建設的な提案があればこんなところではなくcmucl-develへ投稿するところだが。
0350デフォルトの名無しさんNGNG
Lisperはまじめっこが多いから不毛な雑談はできません
0351デフォルトの名無しさんNGNG
         ナ ゝ   ナ ゝ /    十_"    ー;=‐         |! |!   
          cト    cト /^、_ノ  | 、.__ つ  (.__    ̄ ̄ ̄ ̄   ・ ・   
                                             
            ,. -─- 、._               ,. -─v─- 、._     _
            ,. ‐'´      `‐、        __, ‐'´           ヽ, ‐''´~   `´ ̄`‐、
       /           ヽ、_/)ノ   ≦         ヽ‐'´            `‐、
      /     / ̄~`'''‐- 、.._   ノ   ≦         ≦               ヽ
      i.    /          ̄l 7    1  イ/l/|ヘ ヽヘ ≦   , ,ヘ 、           i
      ,!ヘ. / ‐- 、._   u    |/      l |/ ! ! | ヾ ヾ ヽ_、l イ/l/|/ヽlヘト、      │
.      |〃、!ミ:   -─ゝ、    __ .l         レ二ヽ、 、__∠´_ |/ | ! |  | ヾ ヾヘト、    l
      !_ヒ;    L(.:)_ `ー'"〈:)_,` /       riヽ_(:)_i  '_(:)_/ ! ‐;-、   、__,._-─‐ヽ. ,.-'、
      /`゙i u       ´    ヽ  !        !{   ,!   `   ( } ' (:)〉  ´(.:)`i    |//ニ !
    _/:::::::!             ,,..ゝ!       ゙!   ヽ '      .゙!  7     ̄    | トy'/
_,,. -‐ヘ::::::::::::::ヽ、    r'´~`''‐、  /        !、  ‐=ニ⊃    /!  `ヽ"    u    ;-‐i´
 !    \::::::::::::::ヽ   `ー─ ' /             ヽ  ‐-   / ヽ  ` ̄二)      /ヽト、
 i、     \:::::::::::::::..、  ~" /             ヽ.___,./  //ヽ、 ー        
0352デフォルトの名無しさんNGNG
別に 348 の見解をそんなに気にする事はないだろう。
不毛な雑談でもオモシロければイイ。同じネタのループはイクナイ。
で CVS の復旧マダーな話は「こんなところ」でも既出なわけだが。
0353デフォルトの名無しさんNGNG
じゃあ、次はCVSのクラッキンg(ry
0354デフォルトの名無しさんNGNG
>>344
展開してみた。

((lambda (foo)
((lambda (bar)
(list (bar 'val) ((bar 'self) 'val) ((bar 'super) 'val)))
((lambda (super val)
((lambda (self) (self self))
(lambda (self0) ((lambda (self1) (lambda (sym)
(cond ((eq? sym 'val) val)
((eq? sym 'self) self1)
((eq? sym 'super) super)
(#t (super sym)))))
(lambda (sym) ((self0 self0) sym))))))
foo 2)))
((lambda (val)
((lambda (self) (self self))
(lambda (self0) ((lambda (self1) (lambda (sym)
(cond ((eq? sym 'val) val)
((eq? sym 'self) self1))))
(lambda (sym) ((self0 self0) sym))))))
1))

=> (2 2 1)

; ところで、 closure を object と見立てるって、こういうので合ってるの?
0355デフォルトの名無しさんNGNG
まぁ正直 let 使ったほうが見やすいわけだが。わざわざ展開してあげるとは
>>354 も人が良いねぇ。let や let* は lambda で書けるだろゴルァ!! で
終わりそうなもんだが。まぁ >>344 よ、基本的に

(let ((x 1) (y 2)) (+ x y))
=>
((lambda (x y) (+ x y)) 1 2)

(let* ((x 1) (y 2)) (+ x y))
=>
((lambda (x) ((lambda (y) (+ x y)) 2)) 1)

でも流石に let 使ったほうがわかりやすいので大抵の Lisp にゃ
let や let* が用意されてるわけだ。
0356デフォルトの名無しさんNGNG
むしろ define(= letrec) を展開してることに意味があったり。
0357デフォルトの名無しさんNGNG
The Seasoned Schemerってどうかな。安いから買おうかな。littleは持ってるんだけど。
http://www.amazon.co.jp/exec/obidos/ASIN/026256100X/249-6997664-7938729

と思ったら、The Little Mler などというもっと面白そうな本が...
0358デフォルトの名無しさんNGNG
Lispがそんなにすごいなら ---If Lisp Is So Great---
http://www.shiro.dreamhost.com/scheme/trans/iflisp-j.html
0359デフォルトの名無しさんNGNG
JavaとかC++とか手続き型で一般的なオブジェクトの
メソッド呼び出し形式が書ける様になれば普及すると思うんだけど、
どうかな。
シングルメソッドディスパッチでいいし。

つまりこういうこと
(object.method param) ;; object->method(param)
(object->method param) ;; object->method(param)
(setf object->prop value) ;; object->prop = value
.と->はどっちでもいいけど。.はdot-pairと被るから->かな。
マクロ文字でなんとかなったりする?

でもメソッド呼び出しをネストさせると
((object->method param1)->method param2) ;; object->method(param1)->method(param2)
変な違和感がある。

そもそも->はsuffix演算子だから、本来ならLISP流に書くと
(-> (-> object method param1) method param2)
こうなる。

でもこれじゃ使う人いないだろう。
まいった。
0360デフォルトの名無しさんNGNG
>>358
>(だが、気をつけ給え。その論理の行き着く先はWindowsだ。)
ワロタ
広まるのが悪いみたいな言い方だな(w
0361デフォルトの名無しさんNGNG
>>359
. や -> は繋ぎの役割しかしてないから、括弧と両方あるのは冗長。省こう。
object と getter や method の順序は、lisp だと procedure が前だから、
(setf (prop obj) value) と ((method obj) param)

あと方のは中の括弧はなくてもいいか。そうすると、(method obj param)。

あれ、両方とも今のままだ。
0362デフォルトの名無しさんNGNG
(だが、気をつけ給え。その論理の行き着く先はloopだ。)
0363デフォルトの名無しさんNGNG
loop keywordをリスト中にいきなり出てくるキーワードではなくて、ローカルマクロ
みたいに見えるように定義したら、loop嫌いな人も減ったかな。
(loop (for item in list) (collect item))
0364デフォルトの名無しさんNGNG
> (* 1.05 12)
12.600000000000001
> (* 1.05 12.0)
12.600000000000001

Gaucheでこの誤差をなくす方法を教えてください。
(プログラム初心者板ものですね。申し訳ないです)
0365デフォルトの名無しさんNGNG
そんなもの
(* 105/100 12)
とすれば、、、
12.600000000000001
あれ???
0366デフォルトの名無しさんNGNG
浮動小数点の仕様。
十進数使え。Gaucheにあるかどうかはしらんが。
0367デフォルトの名無しさんNGNG
gaucheはexact rationalないみたいだからね。
formatで桁指定できれば助かるんだが。
0368デフォルトの名無しさんNGNG
clisp なら (* 105/100 12) => 63/5 でウマー!! というは置いといてだ,
#include <stdio.h>
int main(int argc, char *argv[])
{
double f = 1.05*12;
printf("%f\n", f);
printf("%.14f\n", f);
printf("%.15f\n", f);
printf("%.16f\n", f);
return 0;
}
の結果が
12.600000
12.60000000000000
12.600000000000001
12.6000000000000014
になる事について,どう思う?
0369デフォルトの名無しさんNGNG
What Every Computer Scientist Should Know About Floating-Point Arithmetic
http://docs.sun.com/source/806-3568/ncg_goldberg.html
日本語訳は腐っていた記憶あり。

他にも浮動小数点数の入門文書あったら紹介してください。
0370デフォルトの名無しさんNGNG
IEEE double precision floating pointで、
1.05の最良近似は丸めが入って (* #x10cccccccccccd (expt 2 -52))。

仮数部を12倍すると #xc999999999999c。
これは54bitになるから、仮数部53bitに収めるにはまた丸めなくちゃ
ならない。ちょうど中間の値に来るときは仮数部が偶数になるように
丸めるから、演算結果はこうなる。
(* #xc99999999999a0 (expt 2 -52))

一方、12.6, 12.600000000000001の最良近似は、桁を揃えればそれぞれ:
(* #xc9999999999998 (expt t -52))
(* #xc99999999999a0 (expt t -52))

だもんで、正確さを言うなら12.600000000000001の方が正確やね。
見にくいことは否定しないが。
0371デフォルトの名無しさんNGNG
>>364
gosh> (* 1.05 1.2 10)
12.6
0372デフォルトの名無しさんNGNG
>>359
(obj 'msg args) という形で Smalltalk のメッセージ式風に記述するとか。

キーワード引数付きのメッセージ式って Lisp 等の関数呼び出し式と同様に
一貫した記述(条件分岐とか、繰り返しとかもメッセージ式風に記述出来る)
が出来て、尚かつ読み易くて イイ! と思うんだけどどうかな?
0373デフォルトの名無しさんNGNG
>>359,372
そんな簡単なことで普及するなら Dylan はとっくの昔にメジャーになっとるがな。
要するに、マクロで書式を自由にできることがウリの LISP で駄目だってことは、
(なにが駄目だかわらかんが)問題は(あるとすれば)書式にあるんじゃないっ
てことなんだよ。(で、なにが駄目で問題なんだ…?藁)
0374デフォルトの名無しさんNGNG
他の言語で満足してるからじゃないの?
0375デフォルトの名無しさんNGNG
足りないこと
・(すでに)C/C++言語並みに広まっていること
・C/C++のようにどこでも動くこと(最近のPCでも、組み込み機器でも)
0376デフォルトの名無しさんNGNG
それは言語が普及する原因ではなく、結果ですよ
0377デフォルトの名無しさんNGNG
>>373
お前、括弧の使い方が下手だな。
その文章、激しく読みにくいぞ。
0378デフォルトの名無しさんNGNG
>>376
分からないかな。
"普及すれば普及する"というロジックが。
最初の出発点は些細なことでしょ。(Lispは重すぎたとか)
0379デフォルトの名無しさんNGNG
>>378 言いたいことは、分かるよ。原因と結果が循環するということね。
ただそれは、ある言語が普及しだして、一応、人気が軌道にのってからの話しでしょ。

>最初の出発点は些細なことでしょ。
最初の一撃ってけっこう大切なことでしょ。それが些細なことであっても。
0380デフォルトの名無しさんNGNG
しかし、今となってはLispが重いとか言っている年寄りは、そろそろ引退してくれる頃だよね。
0381デフォルトの名無しさんNGNG
(だが、気をつけ給え。その論理の行き着く先はIf Lisp Is So Greatだ。)
0382デフォルトの名無しさんNGNG
>>380
いいから、携帯でLisp動かしてみろ。GBAでもいいよ。
PCとかワークステーション以外は、始める前から年寄り引退確定か
0383デフォルトの名無しさんNGNG
多分動かすだけなら難しくはないな
>382 は自分でLisp処理系を作ったことがないのか?
0384デフォルトの名無しさんNGNG
動かすだけなら難しくないと思う。
>382 はILC2003で絶賛された湯浅センセのXSでも勉強すれ。
hxxp://www.xslisp.com/
0385デフォルトの名無しさんNGNG
・動かすだけなら難しくない
・処理系作れ

馬鹿の一つ覚えですか?
Cだったらすでにコンパイラがあったりするわけですよ。
お前らは、新しい環境が着たらそのたびに、コンパイラ作ってるのかと小一時間・・・
もう、Lisperとやりあうのは疲れた
0386デフォルトの名無しさんNGNG
「新しい環境」が来たらそのたびに、 C だって移植作業してるんじゃないかな。
「新しい環境」を作った人達が一緒に開発するかもしれないけど。

「すでに」あるかどうかは、その環境と言語がどれだけ普及してるかって話でしかないと思う。
0387デフォルトの名無しさんNGNG
>>382
> いいから、携帯でLisp動かしてみろ。GBAでもいいよ。
たしか、LispMeという処理系がPalm PilotというPDAで動いていたな。
携帯とかGBAとかでも、開発環境が入手しやすければ、だれかが動かしても
おかしくないね。LispといってもCommon Lispのようにライブラリ的な機能が
豊富にそろっている言語から、Schemeみたいに山椒は小粒で…みたいなものまで
色々あるんだよ。

>>385
>Cだったらすでにコンパイラがあったりするわけですよ。
たしかに最初から使えれば便利だね。Cでそのままプログラミングするか、
Lispのようなもう少し抽象化が行われた言語を実装してから作業するか、
そのコストの見積りだろうね。

>お前らは、新しい環境が着たらそのたびに、コンパイラ作ってるのかと小一時間・・・
だれかが作業をやってくれていなければ、自分でやるか、人にやってもらうしかないでしょう。
それは、Cでも変わらないよ。ただCとLispの守備範囲はあまり、かぶらないと思うけど。
0388デフォルトの名無しさんNGNG
最近は組み込み用途にも、C++やJavaを使う事があるらしいね。ここらへんならLispとかぶるかね。
0389デフォルトの名無しさんNGNG
>>385
ならバックエンドにはすでにある C コンパイラを利用するような
拡張をするという手もあるよ.C のソースを出力すりゃいいわけで
仲良くやってけるじゃん.なんで勝手に対決姿勢になってんの?
0390デフォルトの名無しさんNGNG
390 名前:デフォルトの名無しさん[sage] 投稿日:04/03/25(木) 23:04
そういやKCLはオブジェクト言語がCだったような。
0391デフォルトの名無しさんNGNG
391 名前:デフォルトの名無しさん[sage] 投稿日:04/03/25(木) 23:54
ターゲット用の専用言語(GC 無しとかね)を作るのも楽だな.S 式ベースで構文考
える手間が少ないし.C のソース出力でもアセンブラ出力でもバイナリ出力でも気合
いと時間に応じて自由に選べるし.
0392デフォルトの名無しさんNGNG
392 名前:デフォルトの名無しさん[sage] 投稿日:04/03/26(木) 23:54
あれ?誰もいない・・・
0393デフォルトの名無しさんNGNG
393 名前:デフォルトの名無しさん[sage] 投稿日:04/03/26(木) 23:59
ジリリリリリリリリーン
0394デフォルトの名無しさんNGNG
結局Schemeに戻ってきてしまった.
0395デフォルトの名無しさんNGNG
slime のマニュアル。既出じゃなかったような気がするので一応。
ttp://www.bluetail.com/~luke/misc/lisp/slime.pdf
0396デフォルトの名無しさんNGNG
slime のマニュアル。既出じゃなかった気がするので一応。
ttp://www.bluetail.com/~luke/misc/lisp/slime.pdf
0397デフォルトの名無しさんNGNG
slime のマニュアル。既出じゃない気がするので一応。
ttp://www.bluetail.com/~luke/misc/lisp/slime.pdf
0398デフォルトの名無しさんNGNG
slime のマニュアル。既出でない気がするので一応。
ttp://www.bluetail.com/~luke/misc/lisp/slime.pdf
0399デフォルトの名無しさんNGNG
(gc)
0400デフォルトの名無しさんNGNG
荒らし?
0401デフォルトの名無しさんNGNG
('A`)
0402デフォルトの名無しさんNGNG
「警察だ。ドンドンドン。開けろ。荒しの容疑で逮捕する。開けなさい。」
「ふぁ〜(眠)け、けいさつ〜?」
「そうだ。警察だ。早く開けなさい。」
「け、けいさつ〜?ここは、けいさつじゃないよ〜。」
「ふざけるな。私は警察だぞ。いつまで寝たふりしてるんだ。早く開けろ。」
「ふぁ〜(眠)ね、ねた〜?ね、ねたなんて、ふってないよ〜」
「ネタ振りじゃないよ!寝たふりだよ!このやろう!無駄な抵抗は止めろ!」
「ね、ねたふり〜?こ、ここは、ネタスレじゃないよ〜。」
「ここはネタスレじゃないよ!ここをネタスレ化している荒らしはお前だろ!いいから開けろ!」
「あらし〜?」
「そうだ。容疑を認めるならさっさとここを開けなさい!」
「こ、ここは、ゲームセンターじゃないよ〜」
「俺はアラシじゃないよ!!お前が荒らしなんだよ!なんだよっゲームセンターって!!!炎のコマかよ!・・・」
「・・・」
「・・・」

(;´∀`)
0403デフォルトの名無しさんNGNG
(;´∀`)
nil
0404デフォルトの名無しさんNGNG
>>403
うれピー!!!
(;`∀`) 韮韮韮韮韮韮韮韮韮
      韮韮韮韮韮韮韮韮韮
韮韮韮韮韮韮韮韮韮
韮韮韮韮韮韮韮韮韮
0405デフォルトの名無しさんNGNG
春爛漫
0406デフォルトの名無しさんNGNG
>>405
>>春爛漫
1/2 なんちゃって!
0407デフォルトの名無しさんNGNG
Kahua使ってる人いる?
感想聞かせて
0408デフォルトの名無しさんNGNG
cmucl19a期待age
0409デフォルトの名無しさんNGNG
cmuclの新しいCLOSで以下の式を評価すると何が返りますか?
(class-name (class-of (class-of #'make-instance)))

ちなみに、cmucl18eだとstandard-class、clisp 2.33だとbuilt-in-class
ですが、MOP的には、funcallable-standard-classが正しい気がします。
0410デフォルトの名無しさんNGNG
初心やスレからやってきました。
LISP初心者です。

ここのスレの皆様方に教えっていただきたいことがあるのですが、
WINDOWS版のCL-HTTPを落としたいのですが、MITのHPのダウンロード
できそうなリンクがほとんどエラーになるのですが、CL-HTTPを
ダウンロードするにはどうすればいいんでしょうか?
よろしくお願いします。
0411デフォルトの名無しさんNGNG
ハァ
0412デフォルトの名無しさんNGNG
    〃〃∩  _, ,_
     ⊂⌒( `Д´) < WINDOWS版のCL-HTTPを落としたいよ〜!
       `ヽ_つ ⊂ノ
              ジタバタ
0413デフォルトの名無しさんNGNG
>>409
[gcl 2.5.3]
Error: The function CLASS-NAME is undefined.

[ecl 0.9c]
STANDARD-CLASS

[sbcl 0.8.6]
SB-PCL:FUNCALLABLE-STANDARD-CLASS

0414デフォルトの名無しさんNGNG
やさしいLisp入門
ttp://www.cutt.co.jp/book/4-87783-102-9.html

こんなもん出てるようだけど、どうなん?
0415デフォルトの名無しさんNGNG
4200円! たっか〜。
どうみても入門書でたいして面白そうな例題もないこの内容で、この値段。うーむ。

0416デフォルトの名無しさんNGNG
CLOSどころかマクロのマの字もないな。
0417デフォルトの名無しさんNGNG
ネタじゃないんだよね?
他のやさしいシリーズの倍近い値段は置いておくとして
(ページ数も倍の480だし)、
よりによってCommonも何もついてないLISPとは、
いったいどういうことなのか。
読んでみないことには何とも言えないけど、
最終章にコンパイラとローダとリンカがあるということは、
やっぱりCommonLISPなのか。
日本のLISP業界にとって歴史的事件となるのかどうか。
0418デフォルトの名無しさんNGNG
>>409
>(class-name (class-of (class-of #'make-instance)))
LispWorksPersonalEditionで試してみると

FUNCALLABLE-STANDARD-CLASS
だね
0419デフォルトの名無しさんNGNG
The Evolution of Language
ttp://homepages.inf.ed.ac.uk/wadler/language.pdf
0420デフォルトの名無しさんNGNG
>>417
> よりによってCommonも何もついてないLISPとは、
> いったいどういうことなのか。

書店で立ち読みしたところ第一章にCommon Lispと明記してあったのだが。
何を見当違いのことで騒いでいるのかね。
0421デフォルトの名無しさんNGNG
>>420
内容はどうだったの?
0422デフォルトの名無しさんNGNG
>>409
手元ではこんなんですが.
CMU Common Lisp pre19a 20040410, running on lavie
With core: /home/lambda/local/lib/cmucl/lib/lisp.core
Dumped on: Sat, 2004-04-10 11:20:09+09:00 on lavie
See <http://www.cons.org/cmucl/>; for support information.
Loaded subsystems:
Python 1.1, target Intel x86
CLOS based on Gerd's PCL 2004/01/09 04:34:17
* (class-name (class-of (class-of #'make-instance)))

PCL:FUNCALLABLE-STANDARD-CLASS
*
0423409NGNG
情報を頂いたみなさん、ありがとうございました。

FUNCALLABLE-STANDARD-CLASSの方が、MOP的に「正しい」とまでは言えないかもしれないけど、
「そのほうが自然」とは言えるかな?

clispの開発者の人が1、2年前にMLで、「FUNCALLABLE-STANDARD-CLASSをサポートしないの?」と
尋ねられて、「自分で書いても同じような事を手軽にできるし、ANSI規格でもないから、今のところ
作業予定はないよ」と言っていました。
0424デフォルトの名無しさんNGNG
>>423
ACL がでてないみたいなので一応書いておく。

CL-USER(1): (class-name (class-of (class-of #'make-instance)))
ACLMOP:FUNCALLABLE-STANDARD-CLASS

ACL 6.2 にて。
0425デフォルトの名無しさんNGNG
scheme age
0426デフォルトの名無しさんNGNG
xyzzyでLispをやり始めたんですが
(- 1)
はなぜ-1になるのでしょうか?

引数が一つの時は引数に-を付けて返す、というのが関数として定義されてるから
という理解でいいのでしょうか?
0427デフォルトの名無しさんNGNG
>引数が一つの時は引数に-を付けて返す、というのが関数として定義されてるから
>という理解でいいのでしょうか?
いいです。

Function `-'
http://www.lispworks.com/reference/HyperSpec/Body/f__.htm
> If only one number is supplied, the negation of that number is returned.
0428デフォルトの名無しさんNGNG
>>427
関数定義されてるから、という理解でよかったみたいですね。
どうもでした。
0429デフォルトの名無しさんNGNG
(*)
は1
(+)
は0
0430デフォルトの名無しさんNGNG
>>428
-を付けて返すと、the negation of that number is returned は全然違うぞ
0431デフォルトの名無しさんNGNG
428さんじゃないけど、具体的に結果が違ってくる例みたいなものを教えていただけますか?
0432428NGNG
>>430
その数の否定を返す→正負反転して返す、という理解ではどうしてダメなんでしょうか?
0433デフォルトの名無しさんNGNG
negateは正負反転の意味で普通に使われてるし、
the negation of taht number は正負反転した数のこと。
negative numberというぐらいだから、負は正の「反対」だと
自然に思っているのだろうね。
0434デフォルトの名無しさんNGNG
>>432
「-を付けて返す」と「正負反転して返す」は全然違うぞ
0435デフォルトの名無しさんNGNG
だから馬鹿みたいに違う違うって言わずに431が言ってるみたいに例をもってくるとか
何が、どう違うかいいなよ。
0436デフォルトの名無しさんNGNG
つまり430=434がこれから始めたい事とは、
「-を付けて返す」という言い回しに対しての、
無益な重箱の隅を突く日本語講釈ですか?

(最近、関数型関連スレはこの手の変な人が増えて悲しいですね。)


ところで、
(- -1)
この式は何が返ると思いますか?
0437デフォルトの名無しさんNGNG
-を90度回転させてから前につけて +1
0438デフォルトの名無しさんNGNG
予想1:絶対値の符号反転したもの。 (- -1) => -1
予想2:文字通り (- -1) => "--1"
0439デフォルトの名無しさんNGNG
>(- -1)
>この式は何が返ると思いますか?

>予想2:文字通り (- -1) => "--1"

字面レベルでの議論だとは気がつきませんでした。
複素数の場合かなとも想像していました。
0440デフォルトの名無しさんNGNG
(- -1) => (^_^)
('A`) => (-_-)
(゚д゚) => (゚∀゚)
(* ゚▽゚) => ゚▽゚
0441デフォルトの名無しさんNGNG
バッククォートって、list や cons で書いたのと等価じゃないんですか?
なんだか処理系によって値が違うんですが。
(defun bq (x) `(,x nil))
(defun ls (x) (list x nil))
(let ((l nil) (m nil))
(push (bq 1) l) (push (bq 2) l) (push (bq 3) l)
(rplaca (cdar l) t) (print l)
(push (ls 1) m) (push (ls 2) m) (push (ls 3) m)
(rplaca (cdar m) t) (print m))
を評価すると、clisp では
((3 T) (2 NIL) (1 NIL))
((3 T) (2 NIL) (1 NIL))
となるんですが、CMUCLでは
((3 T) (2 T) (1 T))
((3 T) (2 NIL) (1 NIL))
と異なる結果になるんです。言語仕様上どっちが正しいんでしょうか?
0442デフォルトの名無しさんNGNG
>>441
このへんかな

Once again, it is emphasized that an implementation is free
to interpret a backquoted form as any form that, when evaluated,
will produce a result that is equal to the result implied by
the above definition. In particular, no guarantees are made
as to whether the constructed copy of the template will or
will not share list structure with the template itself.

cltl2
22.1.3. Macro Characters
0443デフォルトの名無しさんNGNG
Common Lisp Hyperspec 2.4.6 Backquote
http://www.lispworks.com/reference/HyperSpec/Body/02_df.htm

によると、`(,x nil) = (append (list x) (list 'nil)) = (list x nil)
となり、さらに、side-effectについて、

>An implementation is free to interpret a backquoted form F1 as any form F2 that,
>when evaluated, will produce a result that is the same under equal as the result
>implied by the above definition, provided that the side-effect behavior of
>the substitute form F2 is also consistent with the description given above.

になるから、cmuclは間違いの気がする。

... share list structure ... のくだりは、backquoted formからreaderが作るform自体が
templateと相似構造なformである必要はないと言っているのであって、template自体を構成する
consを共有して使いまわしていいと言っているわけではないと思う。
0444デフォルトの名無しさんNGNG
バッククォートの解釈は、結果が(equalの意味で)等しければ実装は自由。

`(,x nil) は次の何れにも解釈できる。
(append (list x) (list 'nil) 'nil)
(append (list x) (list 'nil))
(append (list x) '(nil))
(cons x '(nil))
(cons x (list 'nil))
... etc

したがって、規格ではどちらも正しい。
side-effectはこの場合関係ない。
0445443NGNG
>>444 了解。規格の例をもっと読むべきでした。
最初は、俺もquoteの一種だから変更するべきじゃないと、
正しく解釈していたんですが規格を誤読して解釈を変えてしまいました。

書き直さなきゃならないコードがあるな。ありがとう。

この場合、cmuclは以下のような事をやって、consしないようにしていると
いうわけね。
(let ((list (list nil nil)))
(defun bq (x)
(setf (car list) x)
list))
0446デフォルトの名無しさんNGNG
>この場合、cmuclは以下のような事をやって、consしないようにしていると
>いうわけね。
例が間違っていました。忘れてください。
0447441NGNG
トップレベルのリストも全て cons とは限らないというわけですね。
(defun bq1 (x) `(,x 1 2))
(defun bq2 (x) `(,x 1 2 ,x))
(let ((l nil) (m nil))
(push (bq1 0) l) (push (bq1 0) l)
(rplaca (cdar l) 3) (print l)
(push (bq2 0) m) (push (bq2 0) m)
(rplaca (cdar m) 3) (print m))
を CMUCL で評価したら
((0 3 2) (0 3 2))
((0 3 2 0) (0 1 2 0))
となりました。リストの末尾に定数リストが来ていると使い回されるようです。
0448デフォルトの名無しさんNGNG
>リストの末尾に定数リストが来ていると使い回されるようです。
そうみたいですね。それで、その分、consする回数が減ってリソースの節約になり、
それは規格で許された動作であると。
0449デフォルトの名無しさんNGNG
一応貼っておく。Emacs Common Lisp。
http://www.lisp.se/emacs-cl/
0450デフォルトの名無しさんNGNG
外国でxyzzyのこと知っている人は、どれくらいいるのだろう?
0451デフォルトの名無しさんNGNG
とりあえずぐぐってみてはどうか。
0452デフォルトの名無しさんNGNG
Windows マインスウィーパーの隠しコマンドが
xyzzy なんだけどなんか関連ってあんの?
0453デフォルトの名無しさんNGNG
とりあえずぐぐってみてはどうか。
0454デフォルトの名無しさんNGNG
foo bar
0455デフォルトの名無しさんNGNG
>>452 魔法の呪文として「xyzzy」を使うことがあるみたい。出典知っている人いる?

>>451 >とりあえずぐぐってみてはどうか。
googleで調べてみたけど、結果を絞りきれなかった。Emacs系エディタリストには記載が
あったけど、情報は名前だけ。Common Lispのサブセットを搭載しているという情報はなし。
0456デフォルトの名無しさんNGNG
ADVENT(初期のコンピュータゲーム)の魔法が出典。
Jargon Fileの
ttp://www.catb.org/~esr/jargon/html/X/xyzzy.html
を参照。
0457デフォルトの名無しさんNGNG
すんません、cmucl19のソースを入手するにはどうしたらいいんですか?
cmucl web siteの指示どおりanonymous cvsで入手しようとすると、
/home/anoncvs/CVS-cmucl: no such repository
と言われて失敗します。
0458デフォルトの名無しさんNGNG
>>457
hxxp://common-lisp.net
0459デフォルトの名無しさんNGNG
>>458
ありがとう、入手できました。
linuxのfirefoxでcommon-lisp.netを表示すると、トップページの横一列になった項目に
打ち消し線がかかっているように見えるので、ずっと、改装中なのかと思っていたよ。
たぶん、単なる下線の表示がおかしくなっているのね。
0460デフォルトの名無しさんNGNG
stklosとstkはwindows98でも使えますか?
0461デフォルトの名無しさんNGNG
>>460 STk は動くはず。stklos は Windows はダメなはず。
0462マグデジニウム偏角線NGNG
schemeの継続についての質問です。
処理系はgaucheを使っています。

(begin (call/cc (lambda (x) (set! cont1 x)))(display "山崎13\n"))
でcont1に代入される継続と、
(call/cc (lambda (x) (set! cont2 x)))(display "山崎13\n")
でcont2に代入される継続が違うのは何故ですか?

cont2には、
「(display "山崎13\n")を評価する」
と云う継続が代入されるのではないかと思ったのですが、なぜそうではないのでしょうか?
0463デフォルトの名無しさんNGNG
トップレベルまでだから。
0464462NGNG
>>463
そういう解釈で良いのですね、

ありがとうございました。
0465デフォルトの名無しさんNGNG
http://www.asahi-net.or.jp/~ia7k-ismr/lisp_contents/ansi_commonlisp_a2.txt
暇に飽かせてANSI CommonLispの解答っぽいものを作ってみました。
誤り、勘違いなどあったら教えて頂けるとありがたいです。
0466デフォルトの名無しさんNGNG
>>465 あんたは、えらいっ!
0467デフォルトの名無しさんNGNG
atom: a
list: (a b c)
tree: (a (b) ((c))))
graph: #1=(a #2=(b . #1#) . #2#)
graphのもっとよい表記法を希望します。
0468デフォルトの名無しさんNGNG
ttp://www.geocities.co.jp/SiliconValley-Cupertino/6957/bibliography.ja.html
Scheamて。
それにDrShcemaとはなんや?

>私が読んで良かったなー、と思っている本を紹介します。
ほんとに読んだのか?


・・・まあそれはともかく、
紙媒体の参考資料集としては使えるかも。
0469デフォルトの名無しさんNGNG
>C++を使うために絶対読まなければならない本
11冊は多すぎ。一冊読めば使えるだろ。しかもC++を使う⇒=Windowsユーザと勘違いしてるし、
他の項目も同様。
0470デフォルトの名無しさんNGNG
誰?
0471デフォルトの名無しさんNGNG
俺だよ俺!
0472デフォルトの名無しさんNGNG
schemeで循環参照を印字する方法って規定されてるのでしょうか。

(define x (cons 'x 'x))
(set-car! x x)
(set-cdr! x x)
x
==> ???
0473デフォルトの名無しさんNGNG
srfi-38のwrite/ss (write-with-shared-strcture)
http://srfi.schemers.org/srfi-38/srfi-38.html

x => #0=(#0# . #0#)
0474デフォルトの名無しさんNGNG
schemeの局所関数について質問です.
(define (f x)
(define (g x) (* x x))
(g (* x x)))
とした場合gはfの定義時に定義されるのでしょうか,
それとも実行時でしょうか.
もし実行時だとすると次の式と等価なのでしょうか.
(define (f x)
(let ((g (lambda (x) (* x x))))
(g (* x x))))
0475デフォルトの名無しさんNGNG
letではなくletrecだろ?

(define (f x)
(letrec ((g (lambda (x) (* x x))))
(g (* x x))))
0476デフォルトの名無しさんNGNG
>>475
let でいい
0477デフォルトの名無しさんNGNG
>>476
この場合は、だろ
0478デフォルトの名無しさんNGNG
>475 に賛成.
; (define (f x)
; (let ((g (lambda (x) (* x x))))
; (g (* x x))))
は
(define f
(lambda (x)
((lambda (g) (g (* x x)))
(lambda (x) (* x x)))))
と等価だからこのgは定義されてるとはいえない.
例えば,
(define (f x)
(define (g x) (if (= x 0) 0 (+ x (g (- x 1)))))
(g (* x x)))
か
(define (f x)
(let ((g (lambda (x) (if (= x 0) 0 (+ x (g (- x 1)))))))
(g (* x x))))
かのどちらをとるかで
(let ((g (lambda (x) x)))
(f 3))
を評価した結果が違う.
0479デフォルトの名無しさんNGNG
>>476は当然この場合の話をしているのだと思うが。
そんなことより、質問の答えが知りたい。
0480デフォルトの名無しさんNGNG
答えは等価。でも質問の前提の実行時とか定義時という
考え方がおかしい。定義は実行されない。
0481479 != 474NGNG
>>480
(define (f x) ..
    (define (g x) .. 
だと、fが定義されるときにgも定義されそうだが、
(define (f x) ..
    (let ((g ..
だと、gに値が束縛されるのは実行時ではないか、
ということだと思うが、結局何が違うのかは俺にはよくわからん...
0482デフォルトの名無しさんNGNG
(define (f x)
(define (g x) (+ 1 x))
(set! g (let ((g g)) (lambda (x) (+ 1 (g x)))))
(g x))
こんなんだったら違いがでるんじゃない?
0483デフォルトの名無しさんNGNG
パフォーマンスを意識したプログラミング
Programming as if Performance Mattered
http://www.dadgum.com/james/performance.html
0484デフォルトの名無しさんNGNG
>>473
ありがとうございます。
SRFIにあったとは気づきませんでした。
英語読まないとだめですね・・・。
0485デフォルトの名無しさんNGNG
>>481
トップレベルのdefineとinternal defineは、字面は同じ
"define"だけど、全然別物だよ。
前者はトップレベルの束縛を定義するもの。後者はレキシカル
変数の束縛を定義するシンタックスシュガーでletrecと同じ。
0486デフォルトの名無しさんNGNG
>>485
それで納得。CommonLispのdefunとは違うんだね。

>>484
Schemeで、REPループがwrite/ssを使うように指示するにはどうすんのかな。
CommonLispなら変数*print-circle*をtrueに設定すればいいのだけれど。
0487474NGNG
みなさん回答ありがとうございました.
局所関数定義(internal define)とletrecが等価だということは,
パフォーマンスが要求される部分では局所関数定義を避けた方がいいということですよね.

(define (f x)
(define (g x) (* x x))
(g (* x x)))
↑は↓こうした方が速い
(define (f x)
(f-g (* x x)))
(define (f-g) (* x x))

0488デフォルトの名無しさんNGNG
>>487
そんなのは処理系依存
多少賢い処理系ならどっちもパフォーマンス的には同じかと
さらに賢く最適化をする処理系なら前者の方が良くなるはず
0489デフォルトの名無しさんNGNG
>>487
Internal defineが毎回コンパイルされると思ってるみたいだが、
そんなペナルティはない。evalじゃないんだから。安心して使え。
0490474NGNG
>>488-489
純粋に言語仕様だけを見れば,gのinternal defineの定義はfの実行時に毎回行われますよね.
でもそれなりの処理系を使っている限り,最適化してくれるので意識する必要はないということかな.
最適化というのは>>487のような変換を処理系が自動でやってくれるということでしょうか.
0491デフォルトの名無しさんNGNG
>>490
> 純粋に言語仕様だけを見れば

どこにそんな仕様が?

> 最適化というのは>>487のような変換を処理系が自動でやってくれるということでしょうか.

違う
後者の場合、f のコンパイル時には f-g は再定義される可能性があるため特定できないが、
前者の場合、f のコンパイル時には g が再定義される可能性は無いため (g (* x x) をインライン展開できる。
0492デフォルトの名無しさんNGNG
>>490
> 純粋に言語仕様だけを見れば,gのinternal defineの定義はfの実行時に毎回行われますよね.
確かに、インタープリタの場合、あなたの言う通りに遅くなる処理系が
存在する可能性もあるけど、そのレベルの事を心配して、コーディングを変える必要は
ないことが多いのでは。
0493474NGNG
>>491-492
ありがとうございます.
なるほど,インライン展開ですか.考えていませんでした…
中身をある程度知っていないと効率的にしようと思った対策が
逆効果ってことはよくありますよねぇ.
0494デフォルトの名無しさんNGNG
効率なんてのはSchemeをもっと理解してから考えろよ。
外したレスなんでアドバイスに困る。
0495デフォルトの名無しさんNGNG
インライン展開は抜きにしても、
「gのinternal defineの定義はfの実行時に毎回行われますよね」
と書いている時点でclosureというものを激しく誤解している予感。

最も単純な(最適化しない)実装でも、closure g作成のコストは
f実行一回あたりcons一個分。
0496デフォルトの名無しさんNGNG
>>495
closure g作成のイメージは、
(define g (list 'closure '(lambda (x) (* x x)) current-lexical-environment))
みたいな感じでいいのかな。
0497デフォルトの名無しさんNGNG
変数xというのを残してもいいけど、それだと毎回
環境からxを探すコストがかかってしまう。

レキシカルスコープでは毎回同じxが発見される
ことになるんだから、ローカルにバインドされた
識別子はコンパイル時に参照に置き換えられるのが普通。
実行時には、レキシカル変数はもはやシンボルや
identifierではなく、名前のわからない、ただの参照になってる。
0498デフォルトの名無しさんNGNG
guileを検索したら↓がpageRankの上位にあったのだが、、

http://www.guile.jp
0499デフォルトの名無しさんNGNG
ガイルがいる
0500デフォルトの名無しさんNGNG
【誰でもできる47氏支援運動!】
【以下の文章を、各種掲示板にコピペして47氏を救おう!】

すみません、貴サイトには直接は関係のない話題ですが、
広くネットに携わるものとして、いや、日本国民として、真剣に考えるべき事案であると考え、あえて宣伝させていただきます。
管理者様、もし、不適切とお感じならば、どうぞ削除なさってください。

先日、著作権違反の幇助との名目で、ファイル交換ソフトwinnyの製作者で、東京大学助手の金子勇氏(通称47氏)が逮捕されました。
しかし、winnyそれ自体は、違法なファイルの流通だけでなく、合法なファイルの流通も可能なものであり、著作権を違反するか否かは、ソフトの作成者ではなく、ソフトの使用者に、その責任がゆだねられるべき問題であります。
さきに、winnyを使用して、著作権違反で逮捕された二人のユーザーは、47氏と何らつながりのない人間であり、「幇助」の理由を付して逮捕するには、あまりにも無理があります。
以上の観点から、私たちは、Winny開発者、47氏に対する不当逮捕に強く抗議します!!
京都府警は、逮捕の理由として、「『著作権法への挑発的態度』が逮捕理由」に挙げたと、報道されています。この報道が真実であるとすれば、これは思想信条の自由の侵害であり、「思想犯」として不当逮捕したものと断ぜざるを得ません!!
これはもはや著作権の問題ではなく人権問題です!!皆様のご協力をお願いいたします。

詳しくは、下記ページをご覧下さい!
Winny開発者 47氏を救う為に
http://77483.org/47/
ネットワークの自由防衛同盟
http://www.netfreedom.tk/
プログラマ仲間の新井氏が設置したblog(47氏支援運動など)
http://www.moodindigo.org/blog/archives/cat_kaneko.html?page=%B6%E2%BB%D2%CD%A6%BB%E1%BB%D9%B1%E7

また、本運動に賛同される方、お知り合いの掲示板などに、本文章を掲示していただけると幸いです。
0501デフォルトの名無しさんNGNG
Scheme美しすぎ
0502デフォルトの名無しさんNGNG
Scheme かわいいよ Scheme
0503デフォルトの名無しさんNGNG
"on lisp"の翻訳は最近すすんでるの?
0504デフォルトの名無しさんNGNG
ごめんなさい、すすめますた
0505デフォルトの名無しさんNGNG
いや、催促じゃなくて、応援しているよってことね。
0506デフォルトの名無しさんNGNG
普通に読めば催促だわな
0507デフォルトの名無しさんNGNG
そりゃ、考えすぎ。普通に読めば、現状を聞いているだけ。
0508デフォルトの名無しさんNGNG
字面だけをみれば聞いてるだけ
だが、普通に読めば催促にしか読めないだろう。
0509デフォルトの名無しさんNGNG
おっ、雑談か。「普通」ね。

まず、尋ねている人が翻訳版「On Lisp」の読者かどうかさえ、分からないでしょう?
それに、翻訳者に向けて書いたのかさえ分からないし。自分でチェックするのが
面倒だから、誰かに聞いたとか。

あんまり自分の「普通」を信用しすぎないほうがいいよ。
0510デフォルトの名無しさんNGNG
みんなが「普通」に「普通」と言う言葉を使っているから俺も「普通」と言ってみただけだよ
509を発言したのが507だったら笑い話にしかならないけど。
0511デフォルトの名無しさんNGNG
509=507が、
「みんなが「普通」に「普通」と言う言葉を使っているから俺も"揶揄をこめて"「普通」と言ってみただけだよ」
と言ったら?
0512デフォルトの名無しさんNGNG
それならわざわざ「普通」議論を持ち出す意味が無いな。
0513デフォルトの名無しさんNGNG
その程度か、君はもっと出来る人のはずだ。
507のような意見を「普通」と考える人もいる。
また、507は出来るだけ「字面」のみで判断しようとしている点で、
できるだけ広い「普通」をカバーしようとしている。

「ことほどさように"普通"には同じ日本語を使う者の中でも差異がある」と
509は"普通"議論をもちだしたのではないの?

506が「"俺"には催促に聞こえるな」と言っていれば"普通"の意見だろうけどな。
0514デフォルトの名無しさんNGNG
雑談うぜえ。
0515デフォルトの名無しさんNGNG
いくら広い「普通」をカバーしようとしたところで
裏づけが無ければその「普通」は507の中での「普通」でしかないわけで
507自身が509の発言をするのは結局のところ自分の中の「普通」を
棚に上げた都合のいい「普通」感の押し付けでしかないということだ。
0516デフォルトの名無しさんNGNG
lisp> (eq '俺:普通 'みんな:普通)
nil
lisp> (in-package :俺)
#<The 俺 package>
lisp> (use-package :みんな)
Error: Using package `みんな' results in name conflicts for these symbols: 普通
[condition type: package-error]
0517デフォルトの名無しさんNGNG
普通の奴らの上を行けよ、おまいら。
0518デフォルトの名無しさんNGNG
これからは、「CommonLisp」を「普通のLisp」と呼ぶことを推奨します。
0519デフォルトの名無しさんNGNG
http://jp.franz.com/base/seminar-2004-06-10.html
0520デフォルトの名無しさんNGNG
>>519

けっこう、おもしろそうだ。つーか、まとまった資料を読みたく思う。
0521デフォルトの名無しさんNGNG
行きたかったけど、平日か・・・
誰か実況たのむ
0522189=312NGNG
ようやく和田研フォントキットの Common Lisp への移植ができました。
http://cvs.sourceforge.jp/cgi-bin/viewcvs.cgi/efont/wadalab-fontkit/
>>191 さんに助けていただかなければ絶対あきらめていました。ありがとう
ございます。

>>519 のセミナーに行かれる方がいらっしゃいましたら、>>189 が感謝して
いたと和田先生にお伝えいただければ望外の喜びです。
0523デフォルトの名無しさんNGNG
>>519
>ACL7.0の新しい正規表現ライブラリ 講演者: 川合史朗
Shiroさんはgaucheの開発をしながら、こんなライブラリを書いているのか。すごいね。

Edi WeitzさんのCL-PPCREとの比較レビューを読みたいな。
ACL Trial Editionはまだ6.2か。
0524デフォルトの名無しさんNGNG
>>523
あと Kahua もやってるでしょ
0525デフォルトの名無しさんNGNG
Common Lisp から RDB を利用した∈ですが,何か良い
フリーのライブラリってありますか?
ACLだとあるみたいですが,フリーはなかなか見つからない・・・
0526デフォルトの名無しさんNGNG
CLSQL, Uncommon SQLとかかな。
0527525NGNG
>>526
ふたつもあるんですね.
とりあえず Uncommon SQL のほうから試してみようと思います
ありがとうございました
0528デフォルトの名無しさんNGNG
shiroは有名だか、折れ的には新山を応援したい所だ。なんつーかアホの新山の
ページ見ていると同じ人種だなっていうか、哲学とか高度な話題をさりげなく
振ってしまう高学歴lisperの中でもヒトキワ庶民派って言うか、アホな記事を
読んでいたりすると、(例えばメリケンは飯の味はわからねぇと文句タレる新山)
Oh,Pretty!なんて感じたり。ヒヒヒッ。
同じ穴のムジナっていうかにほいがするんだよね。っーつわけで新山センセもがんばって
メリケンのように弾けまくっってください。
0529デフォルトの名無しさんNGNG
シソヤマは自意識つよすぎで恐いよ。
0530デフォルトの名無しさんNGNG
lisperじゃなくてpythonerだと思うけどな。
最新のアホ GtkYes http://www.unixuser.org/~euske/silly/gtkyes/ の
無意味さにはワラタ (ダイアログ全てにビシバシ [Yes] を押してくれる
ランチャーのような単なる実用プログラムを彼が作るはずがない)。
0531デフォルトの名無しさんNGNG
ブサイクフィルターとか美人フィルターというネタもあるが、アレは新山じゃ
なかったか。

新山ネタをフりつつ真面目な話をして恐縮なのでありますが、Symbolicsのマシン
を知って思ったのです。lispでレンダリング(行列計算や座標計算)までやって
いるのだろうか?と。例えばcのmallocのようなヒープの確保をするような場面
ってあるじゃないですか。ピットマップを操作する場合などですが、その場合
lispではどのように処理しているのだろう?と疑問に思ったのです。
GIMPのスクリプトもscheme系らしいですが、Cやfortranならば配列とかmalloc
である程度のメモリーを確保してそのメモリーへの各種操作という形になります
よね。lispだとリスト処理や記号処理のイメージが強くてどうしてもSymbolicsの
ようなCGのビットマップ操作や座標変換、行列の計算のイメージが全く頭に浮かばない
のですが、詳しい人この辺りの話しりませんか?
0532デフォルトの名無しさんNGNG
組み込みでそういう操作を入れればいい。
0533デフォルトの名無しさんNGNG
Symbolicsは知らないけど、Common Lispには配列型やベクタ型が用意されていて、
bit-vector型なんてのもあるから、ビットマップ操作は普通にできる気がします。

行列型はないけど、多次元配列は使えるので、行列の操作関数群もだれかがすでに
書いて公開している気がします。
0534デフォルトの名無しさんNGNG
Symbolicsは使ったことないけど。
optimizeでspeed最高、safety最低にしてちゃんと型宣言すれば、
simple-vectorやbit-vectorのアクセスはCで配列使った場合と
変わらないよ。そのかわり配列の境界チェックや型のチェックは
プログラマの責任になるけどね。
0535デフォルトの名無しさんNGNG
現在でも、Lisperに渡したら、ハマるような代物かなSymbolicsは?
そのくらい、プログラム開発システムとして完成度が高い?

それともWindowsとVisual Studioなんかと比べたら見劣りする?

経験者の人、いねーかな。
0536デフォルトの名無しさんNGNG
ILC2003に居合わせた人達が言うには商業的に失敗しただけで現存するどの処理系も
あのレベルに到達できていないらしい。本当かどうかは知らんけど。
アレをオープンソース(システム?)として公開しようとかいう動きもどっかにあったような。
0537デフォルトの名無しさんNGNG
配列でつか。いやてっきりコンスセルを2Mbyteほど確保してハイリツとしたりするかと
思ってしまいました。何らかのツリー型データベースも一旦ファイルからリストへロードして
などするのかと。

もう一つ聞きたい事があるのですが、Lisperの人たちは手続き型プログラミング
で言うところのフローチャートのような図は書いたりしないのですか?
オブジェクト指向となるとUMLなどありますし、Lispだとどんな図を日常的に
書いているんでしょう?リストか?、再帰のツリーかな?
Symbolicsの画面キャプチャにはそれっぽい図も見かけたりしますが。(class継承の
ずのようなもの)

>ILC2003に居合わせた人達が言うには商業的に失敗しただけで現存するどの処理系も
>あのレベルに到達できていないらしい。本当かどうかは知らんけど。
という事は、現物を触った人はここには誰も以内と?
昔の第五世代コンピュータプロジェクト辺りでLispマシンを研究していたと
言うような話を聞いた事があるんですが、サイ(psy)のあれは推論マシンだしたか?
0538デフォルトの名無しさんNGNG
よくわからんが
http://www.pfu.co.jp/hhkeyboard/kb_collection/images/symbolics.gif
このキーボードは使いやすそう
0539デフォルトの名無しさんNGNG
>>538
使った人によればAの隣のRUBOUTは一度慣れると病みつき
だそうです。

オレの代の頃にはハードがいかれてたんでほとんど置物と
化していて残念だった記憶が。いじり倒してみたかった...

0540デフォルトの名無しさんNGNG
UNIXの仕事だけではないのでファンクションとWindowsキーはないと困る
0541デフォルトの名無しさんNGNG
>>537
もしかして、Lisperはリストしか使わないとか思ってた?

自分でコード書くときに図を書くことってほとんどないな。
コードが大きくなりそうな時に全体の構成をコメント中にメモったりはするけど。

他人のコードを読む時には、Allegro Composerだと関数の呼び出し関係や
クラス階層をグラフ表示してくれるんでたまに使うかな。
0542デフォルトの名無しさんNGNG
>>531 それは hirax.net の人かと。
http://shibuya.pm.org/blosxom/techtalks/bkcon_reviews.html
で最近講演してますね。
0543デフォルトの名無しさんNGNG
cygwin-1.5.5 に scm-5d9 インストールしたのですが、
バックスペースでプロンプト文字 "<" を超えて
行頭までカーソル移動してしまいます。

動作は問題ないのですが何かと不便で困っています。
何かお気づきの点がありましたらお願いします。
0544デフォルトの名無しさんNGNG
>>543
stty の設定か何かで、改行コードが CR+LF (Carriage Return + Line Feed) に
なってるからでは?
勘違いだったらスマソ。
0545537NGNG
チンボリクスの神がコノスレに降臨しますやうに(・∀・)ニヤニヤ
0546デフォルトの名無しさんNGNG
Interlisp-Dがフリーでダウソできるみたい。
ttp://www.sra.co.jp/smalltalk/SML/archives/2004-May/006503.html
0547デフォルトの名無しさんNGNG
http://user.ecc.u-tokyo.ac.jp/~g340299/
flatline氏の日本語訳『on Lisp』、第20章「継続」の説明がすばらしい。
いろいろ読んだけど、これほどすっきりと理解できたことは無かった。
ありがとうございます。

ところで、pdf版の図109(P148)、TeX のタグが残ってしまっているようです。
ご報告まで。
0548543NGNG
>544 氏

今色々キータイプしてみたら Ctrl + BS で
バックスペースが出来て,プロンプト文字 "<" でブロックされました。
何か分かりますでしょうか?
0549デフォルトの名無しさんNGNG
新山氏のサイトに、かなりショッキングな文章が登場。

http://tabesugi.net/memo/2004/61.html
> 新山は、汎用プログラミング言語としての Lisp (Scheme) はもう信用していない。
> だって、現在のたいていのアプリケーションで大変なのはデータ構造の設計と
> 入出力の扱いで、そういう部分はふつう圧倒的に手続きだらけなんだもん。
…(略)…
> いまでは自然言語処理っつうと、ほとんどが「どーやって大量のデータを収集・
> 変換・学習・適用するか」につきているので、これはおそろしく手続き的な操作で、
> Scheme なんか使ったらほとんど begin と let* だらけになる。


新山氏が以前言っていた
http://tabesugi.net/memo/2003/92.html
> だいたい新山はもともとストイックな Scheme が好きだったのだが、あまりに
> 実用的でないから Python に「逃げてきた」のである。

って、そういうことだったのね。ライブラリの少なさの問題ではないのね。


ちなみに、COBOL の代わりにこそ Java ではなく LISP を、という主張もされていて、
(最初の引用元を参照)、こちらも非常に興味深い。
0550デフォルトの名無しさんNGNG
beginとlet*使えばいいじゃん。
0551デフォルトの名無しさんNGNG
ってか新山って誰?
0552デフォルトの名無しさんNGNG
>「どーやって大量のデータを収集・変換・学習・適用するか」につきているので
と
> Scheme なんか使ったらほとんど begin と let* だらけになる
に論理の飛躍を感じるのは漏れだけですか?
ブブカもびっくりですよ。
『Schemeはプログラマを映す鏡』だなあと思う今日この頃、おまえら、いかがお過ごしですか。
0553デフォルトの名無しさんNGNG
日記なんだから論理は飛躍しても仕方ないと思うけど...
>> 552
ところで「begin, let*を使うコードだらけになるじゃん」と言う主張は
新山さんが明らかに何か分かってないという証拠になるのかな?
もしそうならどうしてそうなのか教えて欲しいなぁ。
0554デフォルトの名無しさんNGNG
Interlisp-D試した人いないの?
0555デフォルトの名無しさんNGNG
>>554
普通に動いたよ。ドキュメント読む暇が無いんで後回しになってるけど。
0556デフォルトの名無しさんNGNG
>>554
http://squab.no-ip.com:8080/collab/76
0557デフォルトの名無しさんNGNG
>>555-556
レスサンクス。試してみる。
古参Interlisperの話を聞いてみたいな…
0558デフォルトの名無しさんNGNG
>>553
つまるところ、ストイックな Scheme で全てをやろうとすると、
begin や let* の嵐になるということではないか。言いかえれば、gosh などの
現実的(または妥協的)な Scheme 処理系を使ったことがないのかもしれない。

日記は良く読んでないので外してるかもしれんけど、新山氏は普段 Python を
使ってるらしいからね。

# ほら、Python ってライブラリが充実してるじゃん
0559デフォルトの名無しさんNGNG
>>557
おれも聞いてみたい。どうしてもSymbolicsとかの統合環境への夢が捨てがたい。
いま良くあるような保護指向のOSのモデルと、統合環境指向のシステムを
うまく統合させる方法ってないのかねぇ。
0560デフォルトの名無しさんNGNG
>>558
たぶん、「ストイック」の意味が違うと思う。
変数をできるだけ使わず、関数のネストだけで
コーディングするのがストイックなScheme流なんだと
思う。
0561デフォルトの名無しさんNGNG
>>560
それは Scheme 限定というより、Lisp 族の一般的な慣習のような。
ああでも、elisp やってる人達はちょいと違う気もするけど。
まあどうでもいいか。
0562デフォルトの名無しさんNGNG
なぜ人間の脳はオーバーロードしないのか。
0563553NGNG
>>560
に賛成。でも個人的には、関数型プログラミングの作法と手続き型の作法をまぜこぜに使えるのがLISPの強みの1つだとおもうので、新山さんの意見には賛同できないんだけど。
0564デフォルトの名無しさんNGNG
ecl で thread 使えている方いらっしゃいますか?
CVS の CHANGELOG には Linux で pthread サポートしている様に書いてありますけど。
0565デフォルトの名無しさんNGNG
fibonacci 数列について質問です。
これを関数型の記述のまま、計算量を減らすことはできないでしょうか?


まず、定義どおりに関数型で記述してみました。
(define (fib x)
 (if (< x 2)
   1
   (+ (fib (- x 1)) (fib (- x 2)))))

これだと、定義がそのままコードになっていて、とてもわかりやすいのですが、
x の小さな項を何度も計算しなおすので、x が大きくなると計算量が膨れ
上がってしまいます。
Chez Scheme では x=35 ぐらいが限界でした。


手続き型で、小さい項をまず求めて、それをもとに大きな項を求めるように書くと、
計算量がはるかに少なくて済むのですが、わかりづらくなります。
定義がそのままコードになっている、関数型の記述とはだいぶ違います。
(define (fib2 n)
 (if (< n 2)
   1
   (do ((x1 1 (+ x1 x0))
      (x0 1 x1)
      (m 2 (+ m 1)))
     ((<= n m) (+ x1 x0)))))
0566デフォルトの名無しさんNGNG
末尾再帰であらわしたコードも見かけましたが、わかりにくさでは似たようなものです。と言うか、これは手続き型のロジックを末尾再帰に無理に書き換えただけだと思います。
(define (fibo num)
 (let loop ((num num)
       (p2 1)
       (p1 1))
  (cond ((= num 0) 1)
     ((= num 1) 1)
     ((= num 2) (+ p2 p1))
     (else (loop (- num 1) (+ p2 p1) p2)))))


もしかして、(よく知らない)遅延評価を使えばよいのかと思い、頭の悪いコードを
書いてみましたが、かえって遅くなるだけでした。
(define (fib3 x)
 (if (< x 2)
   1
   (+ (force (delay (fib3 (- x 1)))) (force (delay (fib3 (- x 2)))))))

遅延評価に関して、Shiro さんのところも見てみたのですが、
http://www.shiro.dreamhost.com/scheme/gauche/man/gauche-refj_86.html
これも結局、手続き型と同じ、小さい項をまず計算して、徐々に大きい項を求めていく
やり方でした。定義がそのままコードになるような書き方ではないと思います。


ということで、質問をもう一度まとめますと、
定義がそのままコードになるような書き方で、fibonacci 数列の一般項を求める関数の
計算量を減らすことはできないでしょうか?

以上です。どうかよろしくお願いいたします。
0567デフォルトの名無しさんNGNG
memo関数使ったら?
一度計算した値をとっておくだけで、再帰的な「素直な」定義はそのまま。
0568デフォルトの名無しさんNGNG
>>567
ありがとうございます。memo関数とは、これのことでしょうか?勉強してみます。
http://www.sampou.org/scheme/sicp/mailingList/msg00130.html

それにしても、delay/force は、一度計算したものはキャッシュされるということでしたが、
それは、同一の約束オブジェクトに関する話なのですね。
(define (fib3 x)
 (if (< x 2)
   1
   (+ (force (delay (fib3 (- x 1)))) (force (delay (fib3 (- x 2)))))))
において、
(fib3 1) が何回現れても、それは毎回、別の約束オブジェクトとみなされるから、
再計算するしかないのですね。まだまだ勉強が足りないなあ。
0569(define (´∀`) 'マターリ)NGNG
(define (fib x)
 (define fib (let loop ((y 1) (lst '(1 1)))
        (if (>= y x) (lambda (x) (list-ref (reverse lst) x))
          (loop (+ y 1) (cons (+ (car lst) (cadr lst)) lst)))))
 (if (< x 2) 1
   (+ (fib (- x 1)) (fib (- x 2)))))
0570デフォルトの名無しさんNGNG
>>566
> 末尾再帰に無理に書き換えた

そうか?俺には自然に見える。
末尾再帰 = ループ という概念に慣れていないだけでは?
0571デフォルトの名無しさんNGNG
http://www.iijlab.net/~ew/ptt.html
の最後に載ってるfibがO(log n)でなかったかな
0572デフォルトの名無しさんNGNG
>>569
面白いコードをありがとうございます。ただ、fibonacci 数列の定義をこのコードから
読み取るのは難しいと思います。
また、最後の2行は実質的に不要で、コードのわかりやすさに寄与していないのではないでしょうか?
(define (fib x)
 (define fib (let loop ((y 1) (lst '(1 1)))
        (if (>= y x) (lambda (x) (list-ref (reverse lst) x))
          (loop (+ y 1) (cons (+ (car lst) (cadr lst)) lst)))))
 (fib x))
と書いても結果は同じです。


>>570
すみません、私の言葉が正確でありませんでした。
手続き型の記述をループに書き換える方法としては、私も自然だと思います。
(実は、>>566 の関数 fibo は、既存のそのままのコードではなく、自分がわかりやすい
ように書き直したものです。)
ただ私は、もとの定義どおりの>>565 の関数 fib の方を末尾再帰にしたかったのです。
手続き型のロジックを元にしたため、定義から大きく違った形になっている、という意味で
「無理に」という言葉を使いました。


>>571
恥ずかしながら、このコードは私には難しいです。
慣れた人になら、このコードも関数型らしい「定義を書くだけでそれがそのままコードになる」
記述に読めるのでしょうか?
0573デフォルトの名無しさんNGNG
訂正。
×自分がわかりやすいように書き直した、
○自分にわかりやすいように、自分なりに書き直した
0574デフォルトの名無しさんNGNG
自分で末尾再帰にする言語を作れ。
0575デフォルトの名無しさんNGNG
>>572
"関数型らしい「定義を書くだけでそれがそのままコードになる」"
ってだれに聞いたのか知らないけど、幻想入り過ぎなのでは。
0576デフォルトの名無しさんNGNG
>>565
計算機プログラムの構造と解釈 
問題3.27 メモ化
問題1.19 対数的
0577デフォルトの名無しさんNGNG
>>565
その書き方のまま、高度なキャッシングをするよう最適化するような処理系があったらうれしいな。
仕様としては、R*RSには入らないだろうけどSRFIになら入りそう。
でもこれは夢のような技術っぽい。
0578デフォルトの名無しさんNGNG
Schemeは、どれをDLすればいいんだ?
0579デフォルトの名無しさんNGNG
>>576 ありがとうございます。
http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-22.html#%_sec_3.3.3 と
http://www.geocities.co.jp/SiliconValley-PaloAlto/7043/index.html#memoize
を参考にして、以下のコードを書いてみました。

(define (memoize proc)
 (let ((cache '()))
  (lambda args
   (let ((hit (assoc args cache)))
    (if hit (cdr hit)
      (let ((result (apply proc args)))
       (set! cache (cons (cons args result) cache))
       result))))))

(define memo-fib
 (memoize (lambda (n)
       (if (< n 2)
         1
         (+ (memo-fib (- n 1))
          (memo-fib (- n 2)))))))

大変うまくいきました。コードはほぼ定義どおりで、しかも (memo-fib 10000)でも
即時に演算が終わるようになりました。memoize って素晴らしいです。

数年前、Java で数値計算をしていて、再帰で書いたら同じ問題に遭遇して、仕方なく
ループで書き直したことがあります。あのときに memoize を知っていたらなあ。

http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-11.html#%_sec_1.2.4
は私には難しいので、時間をかけて考えてみます。


ということで皆さま、いろいろありがとうございました。
0580デフォルトの名無しさんNGNG
>>578
http://www.sci.toyama-u.ac.jp/~iwao/Scheme/scheme.html
ここに処理系のリンク先あり

Windowsなら
  DrScheme 
  あるいは
  Petite Chez Scheme + ChezEdit
が簡単
0581デフォルトの名無しさんNGNG
>>580 ありがとう
DrSchemeを入れてみました。
40Mってのには驚きましたよ。
0582デフォルトの名無しさんNGNG
今日のセミナーに参加した人いる?
午前中は完全に雑談だった。せっかく早起きしたのにちょっと鬱。
明日に期待しよう。
0583デフォルトの名無しさんNGNG
>>582
まあそう言うな、生CEO や生和田先生や生Shiroさんが見れただけでもオレは満足だ
もっとちゃんと時間をとって役に立つ話をやって欲しいとは思ったけど
0584デフォルトの名無しさんNGNG
>>582, 583
漏れ行きたくても行けない地方在住者。
レポートキボンヌ!キボンヌ!
0585デフォルトの名無しさんNGNG
http://www.shiro.dreamhost.com/scheme/wiliki/wiliki.cgi?Seminar%3aCommonLisp
0586デフォルトの名無しさんNGNG
CL-USER(2): (require :regexp2)
; Fast loading /opt/franz/acl70b/code/regexp2.fasl
;;; Installing regexp2 patch, version 0
; yacc constructing #<GRAMMAR-CLASS REGEXP> ...
; Finished
T
CL-USER(3):

regexp2キター
0587デフォルトの名無しさんNGNG
これからはJavaよりもLispだと確信しました。
しかしACLの値段は高いのお…
0588デフォルトの名無しさんNGNG
現在プログラム板にはHSP関連スレに凶悪な荒らしどもが住みついています。

・HSPに関係の無い話題でスレッドを上げまくる
・HSPオフィシャルサイトの住人を名指しで誹謗中傷する
・重複スレを乱立させる

などの荒らし行為を行っています。
みんなで団結してム板のゴミどもを追い出しませんか?

【HSP関連スレ】
【皆のレイプ魔】HSP初質P25【WWEヲタ=ハゲ】
http://pc5.2ch.net/test/read.cgi/tech/1086878505/
HSP>>>>>>>>>>>>>C=糞w
http://pc5.2ch.net/test/read.cgi/tech/1071899663/
今日もどこかでHSP初心者が質問ですP19
http://pc5.2ch.net/test/read.cgi/tech/1084089079/
HSPについて
http://pc5.2ch.net/test/read.cgi/tech/1085149790/
0589デフォルトの名無しさんNGNG
scmutilsについて教えてくだされ。
Structure and Interpretation of Classical Mechanics
を読み進むのにScmutilsを使いたいのだが、MITScheme
は苦手だ。他の処理系に移植されていないだろうか?
Chez Scheme にあるとうれしいのだが。
0590デフォルトの名無しさんNGNG
>>589
私もぜんぜん知らないのだけど、Google で検索すると、
ChezEdit-NT の作者である 笹川さんが出てくる。
http://www.sampou.org/scheme/sicp/mailingList/msg01408.html

その結果は
http://chabo.kingdom.biglobe.ne.jp/93453084312522391/bbs/index9.html
> SICMのためのScmutilsを動かしたいんだけど、MIT-Schemeはどうも苦手だなぁ。
> かといって移植するのは大変な労力だ。どうしたもんだろう。

どうも移植はされていないっぽい。

Gauche 方面では、
Scheme:ライブラリ -> scmutils
http://www.shiro.dreamhost.com/scheme/wiliki/wiliki2.cgi?Scheme%3a%a5%e9%a5%a4%a5%d6%a5%e9%a5%ea#H-jmimjv
> MIT Scheme べったり。Gauche に移植しようとして途中で挫折。-- skimu

こちらもだめっぽい。
あきらめて Debian GNU/Linux と MIT-Scheme に行くしかなさそう。
0591589NGNG
>>590
ありがとう。
MIT-Schemeでなんとかやってみるよ。
0592デフォルトの名無しさんNGNG
CPS(継続渡し)が今までどうしても理解できなかったのだけど、
このページの例を見て、目がさめるようによく分かりました。
http://www.namikilab.tuat.ac.jp/~sasada/diary/200308.html#d28

なあんだ、まず最初に巨大にネストした無名関数をこしらえて、
それを一気に実行するだけじゃないか。
それだったら、普通にスタックが積まれる再帰とコストが等しくて当然。

しかし、Petite Chez Scheme は CPS の方が二倍ほど速いのですね。
自分の手元で試してみても同様でした。不思議ですね。
0593デフォルトの名無しさんNGNG
すまねぇ、誰か助けてくれ。
こないだAllegroCommonLispのウワサを聞きつけトライヤル版を試してみたくて
ダウンロードしたんだが、さっきFranz.comのSalesManagerのクレイグから
いきなしメール来て、ACLを何処で知ったか、とかいって幾つか質問が
書かれたハードオファーなメールが来たんだよ。英語だし意味ワカンネエし、
毎日にチャンネルしかやってない俺にとって非常に恥ずかしいっていうか、
何で俺のようなアホにメールよこすんだよ!っていうか、「読んでくれて
ありがとう。私はあなたからすぐに便りをもらうことを期待します」とか
クレイグ書いてるし、そういう訳で困っています。
普段アホの新山とかblog読んでアヒャヒャと喜んでいるアホなのですが、天才新山名誉
教授でもなんでも良いのでだれか知恵を貸して下さい。
知名みにlispは初心者で、本当はAllegroCommonLispよりもGaucheを使って
半日ほどハアハアしてたりDを使っていました。
0594デフォルトの名無しさんNGNG
>>593
相手は単に商売なんだから、ほっといたらいいんではないかー?
0595デフォルトの名無しさんNGNG
どれシニョリーナ
「ウミネコ」の魔術をといてやるよ
0596デフォルトの名無しさんNGNG
>>593
トライアル版落とすとそのメール来るよね。
前に落としたときは日本の法人から営業担当者のメールが来ますたよ。
そんな高いもん個人で買えないからご遠慮メール出しちゃったら、担当が変わりましたメールが忘れた頃に(w
そこまで売りたいなら値段下げれ!とか思た(藁
0597デフォルトの名無しさんNGNG
とりあえずexe作る権限だけでも売れると思うんだけどなあ。
0598595NGNG
すみません595 は誤爆…良スレを汚してごめんなさい

0599デフォルトの名無しさんNGNG
確かに個人で買えるような値段ではないよね。学生なら研究室の予算で買ってもらえるかも
知れないから指導教員に頼んでみるのもいいと思うけど。
0600デフォルトの名無しさんNGNG
かえなければほかのつかったらいいじゃん、ってきもするんだけど。
使ったことがある人のAllegro CLの「これはべんりだ」ってあたりを
聞かせてもらえるとうれしいかも。
あと、個人的にはAlleglo Storeがすごそうなんだけど、そのへんも。
0601デフォルトの名無しさんNGNG
Trial版しか使ったことないけど、日本語の文字がちゃんと扱えてWindows上でちゃんとした
処理系があるのはACLだけかな。Trial版でもちょっとしたプログラム開発には十分使えますよ。
0602デフォルトの名無しさんNGNG
VBやObjectPascalのイベントハンドラがLispで書かれていて萌えた(w
0603デフォルトの名無しさんNGNG
>>13
で紹介されているSECDR-Schemeですが、配布元のサイトが
無くなっているみたいです。
私が利用しているDNSが悪いのでしょうか?
誰か親切な人うぷしていただけませんか?
0604603NGNG
今、鯖落ちてる?
0605デフォルトの名無しさんNGNG
>>601
LispWorksは?

>>603
覚えてたら暇なとき発掘してみるよ。flatlineさん(だっけ?)が上げてたサイト使わせて
もらってねら〜Lisper用ポータルでも作ろうか。
先週のセミナーでも思ったんだけど、Lisp興味あるけどどこから手を付けたらいいのか
わからないって人も結構居るみたいだし。
0606デフォルトの名無しさんNGNG
>Lisp興味あるけどどこから手を付けたらいいのか
わからないって人も結構居るみたいだし

禿げしく力強くうなづきつつ、同意。
0607デフォルトの名無しさんNGNG
そういえば初心者スレ無くなっちゃったね。
とりあえず c.l.l と Blog と wiki と *-dev 系の ML はチェックしてる。
0608デフォルトの名無しさんNGNG
>>606
そうだよなぁ。
Schemeに関して言えば、そういう情報を集積する場所としてWiLiKiがあると
思うのでがしがし「こんな情報はないのか?」って書き込んでみるといいかも。
0609デフォルトの名無しさんNGNG
>>607
次スレは
【common lisp】(S式のみで語らう漢のスレ)【scheme】
でお願いしm
0610デフォルトの名無しさんNGNG
>>609
(だが気をつけ給え。
((その論理)の行きつく先は)
(激しく読み難い(スレ)だ))
0611デフォルトの名無しさんNGNG
>>610
(and (気をつけ給え。 インデント)
(equal (修正すると >>610)
(気をつけ給え。
(equal (行きつく先 (その論理))
(激しく読み難い スレ)))))
0612デフォルトの名無しさんNGNG
このスレを見て思い出した・・・

去年、プログラミング言語2(Scheme)の単位落としたんだよな・・・
今年の後期プログラミング言語2(Lisp)取らないと・・・
0613デフォルトの名無しさんNGNG
おまいさんの大学は Scheme -> Lisp に変わったのか
おれんとこは2年前から逆になったわけだが
0614デフォルトの名無しさんNGNG
(age)
0615605NGNG
>>603
Secdr.tar.bz2っての拾ってきたけど多分コレだろ。
ドコに置けばいいか教えれ。288KBくらい。
0616デフォルトの名無しさんNGNG
皆さんは、LISP を習得することで、他の言語でのプログラミングにどういう
メリットを感じましたか?

私は Scheme をある程度おぼえて、簡単なプログラムなら書けるようになったの
だけど、この知識が例えば Java でのプログラミングに生かせるかというと、
今のところ、よく分からない。
関数プログラミング、ファーストクラスクロージャ、継続、マクロなどはとても
面白いと思ったけれど、Java では使えないし。

今のところ、JavaScript で何かできるかな?と思うぐらいです。JavaScript には
ファーストクラスクロージャがあるから。

エリック・レイモンドが
http://cruel.org/freeware/hacker.html
「LISP は、それをモノにしたときのすばらしい悟り体験のために勉強しましょう。
 この体験は、その後の人生でよりよいプログラマーとなる手助けとなるはずです。
 たとえ、実際には LISP そのものをあまり使わなくても。」

と言っていたのはどういう意味なんだろう?
0617デフォルトの名無しさんNGNG
>>616
> たとえ、実際には LISP そのものをあまり使わなくても。」

LISP を直接扱う仕事が少ない、LISP の技法が C に直接マッピングし辛い(クロージャとか)って
事ですよね。Java でも無名クラスとか CPS とか使う機会はそれほど無いのではないでしょうか。
0618デフォルトの名無しさんNGNG
>>615
Secdr.tar.gz が 313KB なんでそれくらいでしょうね。ライセンスは GPL みたいなんで
うぷろださえあれば私もうぷ出来ます。

ところで、SECD マシンじゃなくて SGCD マシン(G-Machine)というのがあるみたい
ですが、これってどういう物なのでしょうか?
ググって見たらグラフ理論と関係あるみたいですが、グラフ理論って最適化とかでよく
聞く物の、中身が良く分かりません。。。
0619デフォルトの名無しさんNGNG
>>617
 ちょっとメール欄が気になりますが、まあ、まさにその通りです。それだけでは
Java のプログラミングスタイルが大きく変わる、という気がしないんです。

 Lisp の良さは、どのようにも書けることだと思うんです。手続き型風にも、オブジェクト
指向風にも、関数型風にも書ける、何でもそろう百貨店のようです。

 ところが他の言語は専門店なんです。例えば Java はクラスベースの型制限のきつい
オブジェクト指向言語として書く以外に、あんまりできることがない。そうすると、
結局デザインパターンに従って書くより他にないのかな、ということになってしまう。

Java 捨てろ、と言われても、Lisp でやらせてもらえる仕事なんてないし。
皆さんはどのように考えていらっしゃいますか?


>>618
私もグラフ理論はぜんぜん知らないんですが、n次空間での点と線の組み合わせの性質を
研究する学問だと聞いたことがあります。応用としては、回路図を基盤に起こすとき、
どのように回路を取り回せばよいかを検討するのに役立つそうです。
レゲエ数学者の秋山仁先生が、日本における第一人者だそうです。

『秋山仁の 落ちこぼれは天才だ 』
http://www.amazon.co.jp/exec/obidos/ASIN/4062739623/
0620デフォルトの名無しさんNGNG
>>619
んー。逆方向で。
Lisp が百貨店だとしたら、他の言語で初めて触れるような機能に出くわしたとき、
「ああ、これは Lisp で言ったら○○だな」
て風に(Lisp にマッピングして)理解してみる、ということがやり易い、
ていう具合に考えてみるのはどうでしょう。
0621デフォルトの名無しさんNGNG
>>618
G-Machineは、lazyな言語向きの仮想機械で
実行にグラフ書換えを利用してるものだったような。
うろ覚えだけど。

グラフ書換えについては、
『コンピュータ基礎理論ハンドブック』のたぶん2巻に解説があった気がする。
0622デフォルトの名無しさんNGNG
>>620
確かにそれはできるかも知れません。実は Lisp を源流としている技術はこの業界には
すごく多いみたいですから。

Java には、フレームワークだとか、EJB とかさまざまな新技術が次々導入されて
いますが、「あ、これは Lisp のアレに相当するな」と分かれば習得は早いでしょうね。

しかし、もともと Lisp のエキスパートだった人はそれで良いでしょうが、今から
Lisp を学ぼうという人はどうでしょう?遠回りをせず、Java の新技術を学んだ
方が早いのではないかという気がします。

何しろサーバサイド・プログラミングは Java の一人勝ちで、Java だけ覚えれば
それで済んでしまうような状況ですから。代わりに Lisp が普及していてくれたらなあ。
0623デフォルトの名無しさんNGNG
それにしても、Scheme の世界観は本当に美しいと思います。
以前、「継続というのは、靴下を裏返すようにして、ひっくり返した ラムダ」
という話を聞いて感動したのですが、

この下のほうの Shiro さんの説明
http://www.shiro.dreamhost.com/scheme/wiliki/wiliki2.cgi?Seminar%3aKahua
「値を返す ≡ 値を継続手続きに渡す」
これを聞いて、さらに感動しました。
結局 Scheme の制御構造は ラムダしかない。関数もブロックも環境も、全部
ラムダ。なんか世界の見え方が変わってしまいますよね。

しかし、これを Java でのプログラミングに、どのように生かせばいいのだろう…。
0624デフォルトの名無しさんNGNG
例えば,今まで C しか知らず,そのままでいると:

1. 再帰を恐れる.再帰で考えられない.再帰のコーディングの仕方に慣れていない.
2. 配列ばっかり.
3. スコープについてしっかり理解できていない.
4. なぜか速度ばかり気にして,少ないステップ数を重視した見辛いコードを書く.

といった感じになると思います.
でも,これは「言語はいくつか学べ」の理由でしか無いかも.
0625デフォルトの名無しさんNGNG
>>624
お前、C使いに物凄い偏見を持っていないか?

または、たまたま >>624 の周りでCを使う奴は皆
その程度にしか使えないだけなのか?
0626デフォルトの名無しさんNGNG
scheme 使う人に質問です。

何故 scheme は list の末尾が nil ではないのですか?

末尾は nil にしておいた方が美しい設計だと思うのですが・・・
0627デフォルトの名無しさんNGNG
nil が存在しないからです。
0628デフォルトの名無しさんNGNG
scheme を知ってからは C でも alist もどきを多用するようになった。
0629デフォルトの名無しさんNGNG
>>626
リストの末尾は他と区別できる単一の要素(空リスト)があればいいだけなので、特にnilだと
美しいという根拠がわかりません。それよりも真偽値と区別のないLispよりはSchemeの方が
すっきりしているのではないでしょうか。そもそも真偽値とリストは型が違うわけですから。
0630デフォルトの名無しさんNGNG
>>626
名前が欲しいだけなら(define nil '())で。
0631デフォルトの名無しさんNGNG
>>630
'(a . nil) が (a) にならない罠
0632630NGNG
あうち。リーダーマクロでなんとかとか...
ごめん、忘れてください。
0633603NGNG
>>618
有難う御座います。↓とかにうpして貰えれば嬉しいです。
ttp://www.uploda.net/cgi/uploader2/index.php

>>605 = 615
ご親切に有難う御座います。
bz2でうpできる場所は、見つかれませんでした。
拡張子を誤魔化してうpするという方法が、可能かどうかまで調べていません。
気が向いたら、うpしてください。
0634デフォルトの名無しさんNGNG
うう…結局、Lisp を学んで、Java のプログラミングスタイルが変わった人は
いらっしゃらないのでしょうか。この言語はとても魅力的だけど、仕事にほとんど
生かせないのなら、なんとも悲しいものがあります。

Namazu の高林さんが
「Scheme を学んでからは、他の言語でプログラムを書くときの切れ味もずいぶん変わった
 気がする。」
http://namazu.org/~satoru/unimag/10/
と言っていたから、すごく期待していたんだけどなあ。

そう言えば高林さんは、Java が嫌いだとも言っていたか…。
http://www.ogis-ri.co.jp/otc/hiroba/others/OORing/interview20.html
0635デフォルトの名無しさんNGNG
所詮その程度の人間だったということだ
0636デフォルトの名無しさんNGNG
>>633
上げといた。こういうの使うの初めてなんだけど、これで良いのかな。
0637デフォルトの名無しさんNGNG
>>634
今どきLispをやろうなんて物好きは、趣味で楽しんでやってるだけなんだから
仕事に生かそうなんて期待するな。
0638603=633NGNG
無事↓できました。有難う御座いました。

勝手に想像していたものより良い意味で裏切られました。
まだ、ちょろっと読んだだけですが、付属のLibも一通り揃っている感じですし
SECDRのRを何故Sから分離したのか、勉強してみたいと思います。

そういえば、どこかでSECDH machineというのが有ると聞いたときがありますが
ここでのHの意味って、何なんでしょうね?
0639デフォルトの名無しさんNGNG
>>634
プログラミングスタイルが変わらないんだとしたら、要するにLispで
やってるような抽象化が必要とされるようなプロジェクトをやってない
ってことでは。実際、Paul Grahamがなんと言おうと、世の中の
プログラムの9割はそんな「力」を必要としないんだしさ。

漏れは、どうしても仕事でLisp以外の言語で書かざるを得ない時は、
人間コンパイラになったつもりで頭の中の高階関数のコードを静的な
クラスに展開したり、人間マクロエクスパンダになったつもりで
パターンに沿ったコード書いたりしてるけど。つくづく無駄なことを
してると思うが、そのぶん金払うのはお客さんだしね。
ただ、どうしても我慢ができなくなった時は、LispでJavaやらCやらの
簡易マクロプロセッサを書くこともある。
0640デフォルトの名無しさんNGNG
>>637
そう割り切ればいいのかもしれませんけど、仕事しんどいし、何かこの知見を
利用して楽になれないものかと思っちゃうんです。


>>639
> 要するにLispでやってるような抽象化が必要とされるようなプロジェクトをやってない
ああ、それはありますねえ。
せっかく CPS を理解したんだから、今度の Java の仕事で session に継続を
保持させてみよう、と思ったんですが、考えてみたら、CPS を用いるほど細かい
制御はまず必要ないんです。

Lisp が一番力を発揮するのは、構文解析とか、複雑な構造のデータを扱う場合
だと思うんですけど、そういう仕事やってないですし。DB に SQL を発行して、
返った値をオブジェクトに収めて、JSP で表示させて、ハイ、おしまい。
マクロで展開させたいと思うようなことも、あんまりないです。
嫌だと言っても、世の中の99%はそういう仕事ですし。

「技術野郎の復讐---Revenge of the Nerds---」への反響
http://www.shiro.dreamhost.com/scheme/trans/icadmore-j.html

>>635 氏の言う通り、私には Lisp は必要なかったのかな?いや、Lisp 業界が
私を必要としていないのか。…鬱だ死のう。
0641デフォルトの名無しさんNGNG
IO操作はcall-with-うんたらかんたら系があると便利だよね。
標準IOをインターフェース変えずにファイルやソケットや文字列に割り当てたり。

C/C++言語もそういう仕様だったらよかったのに。
こっちは出来た時代が古かったんだね。
0642デフォルトの名無しさんNGNG
LISPのcarやcdrが基本なリスト操作知ってからは
ほかの言語でリストコンテナ書き直す回数が減った。
いまどきのC++やjavaには標準で付いてるけどね。
でもそういう標準コンテナを使うときも
LISPで培ったやり方が適用できると思う。
先にLISPのマクロ知ったおかげでboostとかのライブラリが幼稚に見える。
0643デフォルトの名無しさんNGNG
Javaの仕事がきついって言うけど、
それなら一番手っ取り早いのはJavaのエキスパートにコードを見せて
何か改善点がないか相談することでしょ。
改善のしようがなかったら、転職するかその仕事に耐えるかしかない。
どうやったらJavaに生かせるかLisperに訊かれても、そんなん知らんがな。
自分で応用していくしかないんだよ。
0644デフォルトの名無しさんNGNG
ま、仕事の質から言って、やっぱLISPが最強だったね。
0645デフォルトの名無しさんNGNG
何でもかんでもLispでやりたがる奴はLisperじゃない
0646デフォルトの名無しさんNGNG
Guy Steele Jr.のメアド教えてください。
0647デフォルトの名無しさんNGNG
誰もそんなこと言ってないが。
>被害妄想な645
0648デフォルトの名無しさんNGNG
>>646
どっかのMLにいたよ。
0649デフォルトの名無しさんNGNG
`(Guy,@Steele.Jr)
0650デフォルトの名無しさんNGNG
最強厨、現る
0651デフォルトの名無しさんNGNG
>>647
お前に言ったわけじゃないんだが
0652デフォルトの名無しさんNGNG
Lispの本って高い!!
0653デフォルトの名無しさんNGNG
>>642
複雑なデータ構造の仕事をしている人だと、Lisp の経験が生かせるみたいですね。

>>643
なんというか最近、Java の世界そのものに息苦しさを感じてしまいまして。

Lisp の世界は自由自在・融通無碍だとどこかで聞きまして、Lisp だけで食っていける
人はまずいないそうですから、Lisper が Java を書くことも当然あるだろうと。
Java しか知らない人からじゃなくて、そういう視野の広い人から、話を聞いて
みたかったのです。
0654デフォルトの名無しさんNGNG
>>653
本物の Lisper なら、

>DB に SQL を発行して、
>返った値をオブジェクトに収めて、JSP で表示させて、ハイ、おしまい。

その作業を、システムを使うユーザーにやらせようとする。
つまりスクリプトを積む訳だ。
で、スクリプトには当然 Lisp を採用。
0655605=615NGNG
>>603
SECDR入手済みだよね?親切な人が生息しているようで何より。

過去ログ眺めてきたけど、何か妙に卑屈になってるのが居るみたいね。
2chで泣き言いってる暇があったら自分でLisp使う仕事作りゃいいのに。
漏れは作ったぞ。他にLisper居ないから1人デスマーチだけどな(w
0656デフォルトの名無しさんNGNG
そうそう。Javaにうんざりしている同志がこんなもん作ってるけどこのスレでは紹介されてなかったよね?
暇なとき調べてみようと思って手付かずなので誰かが使用感レポートしてくれることを期待して貼っておこっと。
hxxp://www.evaluator.pt/linj.html
0657デフォルトの名無しさんNGNG
http://www.evaluator.pt/linj.html
めんどくせーことするな
0658デフォルトの名無しさんNGNG
Meadowのrun-schemeで、Gauche(utf-8)を使いたいのですが、可能でしょうか。
いまの設定は、下の設定です。
(setq scheme-program-name "d:/cygwin/usr/local/bin/gosh.exe -i")
http://kawacho.don.am/win/meadow/customize/dot-emacs-sample.html#japanese

ご面倒ですが、アドバイスをお願いします。
0659デフォルトの名無しさんNGNG
>>658
Meadow1.15はutf-8対応でないそうなので、Meadow2をインストールしました。
そして、M-x set-buffer-file-coding-system utf-8にしました。
すると、こんな出力になっています。
gosh> (display "山下")
ツ山ツ可コ#<undef>
0660デフォルトの名無しさんNGNG
よう分からんけど set-process-coding-system の方じゃないかと疑ってみる。
0661デフォルトの名無しさんNGNG
>>660
ありがとうございました。
ご指摘のとおり、set-buffer-process-coding-systemで
inputもoutputもutf-8に設定することで、問題解決しました。
ども。
0662デフォルトの名無しさんNGNG
Lisp の知見を 他言語で、という話だけれど、継続を使えば、Web アプリが
スッキリ一つながりに書けるようになるよ。
http://tabesugi.net/memo/2003/b1.html#101129
普通なら HTTP リクエストごとに分断されたコードを書かなきゃいけないけど、
継続を使って、コードの実行を中断して、HTTPリクエストを処理してから再開、
といった作業がシームレスに行えるから。

だけど、この継続をいちいち手作業で作るのは面倒くさいね。言語自体が継続を
サポートしていないと、かえって面倒くさいと思う。Java じゃ無理か。

Perl6 は継続をサポートするようになるそうな。Perl使いの皆さん、おめでとう。
http://tabesugi.net/memo/2004/61.html#092240
Perl使いは誰も継続なんて知らないみたいだけどな。

新山氏のサイトを斜め読みしていたら、たまたま出てきたんで書きました。
0663デフォルトの名無しさんNGNG
以前も話題になりましたが,defpackage にはキーワードを使ったらいいのか
文字列を使ったらいいのか分かりません.

cliki に置いてあるコードでも両方見かけます.

叫ぶぼどではないので大文字は避け,キーワードを使いたいのですが,
どんなトラブルが起こりうるのでしょうか.教えていただきたいのです.

パッケージ名は :pkg-name のようになっていて,その中で :export される
シンボルは #:func1 のようにすれば絶対安心なのでしょうか?
0664デフォルトの名無しさんNGNG
最近 asdf というのがあるんですが,これは何ですか?
ちょっとしたプログラムを install するにもコレが必要らしいです.
google しても関係なさそうなサイトばかり引っかかります.

正直,べんり? 入れなきゃダメ?
0665デフォルトの名無しさんNGNG
asdf は lisp 版 make …という説明でわかるかな?
昔からある defsystem に代わるもの.CLOS ベースになってる.

依存関係や C ライブラリのビルドなどが設定可能な便利
ツールだが,どうしても嫌なら別に入れなくてもいいぞ.
全部手動でやる事も面倒だけど可能だし,defsystem 用の
ファイルも提供してるプロジェクトも多いしな.
0666デフォルトの名無しさんNGNG
マニュアルはここ。入れなきゃダメってことはないけどDebianでCommon Lisp Controller
使ってれば普通に入ってるし、正直便利。いろんな人が作ったライブラリ突っ込むのも
asdf-install一発で片付くんでらくちんだよ。
hxxp://constantly.at/lisp/asdf/
0667664NGNG
>>665-666
恥ずかしながら,lisp プログラムのインストールに make のような
ものが必要ということさえ知りませんでした.
(load "hoge") 一発かと...

debian を使っているので,sarge あたりから
common lisp 周りのパッケージが増えたな,と感じていました.

ただ,自分の管理下でないシステムに,自分が書いたコードを持っていったとき
のことが気になります.そのコードが,asdf を使ってインストールされた
プログラムを使っていると,向こうのシステムにも色々持っていかないと
なぁ,,,という気がするのです.
とにかく試してみます.ありがとうございました.
0668664NGNG
私は asdf も入れられないレベルのようです.どうか力を貸してください.

$ clisp -q

[1]> (load "load-asdf-install")
;; Loading file /home/yu/src/html/src/asdf-install/load-asdf-install.lisp ...
;;; ASDF-INSTALL: Loading ASDF-INSTALL package from directory
;;;               "/home/yu/src/html/src/asdf-install/"


*** - A file with name ASDF-INSTALL-LIBRARY:defpackage.lisp does not exist
1. Break ASDF-INSTALL-LOADER[2]>

defpackage.lisp を ASDF-INSTALL-LIBRARY:defpackage.lisp みたいな
変な名前にリネーム,,,するわけないですよね?
どうすればいいのでしょうか.まずは cl-ppcre を入れたいのに.
0669デフォルトの名無しさんNGNG
>>667
ある程度の規模になると依存関係とかロード順を考えなきゃならんでしょ?
C/C++ だってファイルが増えてくると make や IDE の支援が必要になるわけで。
で、C/C++ のソースを配るときに make があるか心配だから make を使わない
というほどの心配性ならともかく、asdf 自体は特に依存してないのでそんなに
心配する必要はないです。asdf.lisp 添付してもいいしね。

それでも、どーしても嫌なら自分で書いたコードには使わなきゃ良いだけです。
0670デフォルトの名無しさんNGNG
>>668
できれば自分の環境(特に使ってる clisp のバージョン)はかいといた
ほうがいい。なぜなら clisp で format のバグで asdf.lisp がコンパイル
できないバージョンとかあったからな。最新のは大丈夫なんだけど。

で、先に asdf.lisp をロードしてないとかそーゆうんでないかな。今手元に
clisp が無いんで推測なんだが。
0671664NGNG
>>670
はい.clisp 2.27 です.
うっかり asdf-install/doc/index.html を読んでいませんでした.
README がインストール方法かと思ってしまいました.
そこで,index.html にある方法でやりましたが,,,

current directory には asdf があるディレクトリと,
asdf-install/asdf-install.asd へのリンクがあります.
$ clisp -q

[1]> (load "asdf/asdf")
;; Loading file /home/yu/src/html/src/asdf/asdf.fas ...
;; Loading of file /home/yu/src/html/src/asdf/asdf.fas is finished.
T
[2]> (asdf:operate 'asdf:compile-op :asdf-install)
; loading system definition from asdf-install.asd into #<PACKAGE ASDF1175>
;; Loading file asdf-install.asd ...
; registering #<SYSTEM ASDF-INSTALL #x203A4CB1> as ASDF-INSTALL

*** - handle_fault error2 ! address = 0x4556454F not in [0x202B6000,0x2037220C)!
SIGSEGV cannot be cured. Fault address = 0x4556454F.
セグメンテーション違反です

asdf って簡単そうな名前なのに orz
0672デフォルトの名無しさんNGNG
2.27 て…。まぁ、asdf.lisp がロードできてるなら cl-ppcre の
インストールに asdf-install は要らないよ。手動で cl-ppcre の
アーカイブをダウンロードしてきて
[1]> (load "asdf/asdf.lisp")
[2]> (load "cl-ppcre/cl-ppcre.asd")
[3]> (asdf:oos 'asdf:load-op :cl-ppcre)
だけ。あとは (saveinitmem) としてイメージ作れば良いじゃん。
あと 2.27 にこだわる理由がなければ 2.33.x にしとくのが吉。
0673664NGNG
>>672
親切にありがとうございます.
いま,cmucl でやってみると,一通り終わるものの 5 errors 出ました.
;;; メインで clisp を使うのに *.x86f が出来ても...

はい.debian woody なのと HDD が小さいのでバージョンアップを
渋っておりましたが,以下の理由で考え直します.


[2]> (load "cl-ppcre/cl-ppcre.asd")
;; Loading file cl-ppcre/cl-ppcre.asd ...
*** - handle_fault error2 ! address = 0x4556454F not in [0x202B6000,0x2037220C)!
SIGSEGV cannot be cured. Fault address = 0x4556454F.
セグメンテーション違反です
0674デフォルトの名無しさんNGNG
やたっ! Mac OS X 上の ECL でスレッド使えた。
つっても無理矢理ビルド通しただけなんで、実用性はありませんけど。

素朴な疑問ですが、Lisper な人ってスレッドをあまり必要としていないんでしょうか?
ネイティブスレッドを使える環境がかなり限られている感じがします。
0675674NGNG
と思ったら、重い処理させると落ちる・・・。
0676デフォルトの名無しさんNGNG
>>664
Debian使ってLispやるならsidがいいのではないかと。
Kevin M Rosenbergが精力的にパッケージ作ってくれてるのでマジで助かります。
バグ修正したり機能拡張したコード送ると(暇なら)次の日にはパッケージ更新してくれるし。
ディスク容量とかメモリとかはカネで時間(作業効率)が稼げると思えば安いもの。組み込み
用途を検討中とかなら話は別だけどね。
hxxp://b9.com/debian.html

>>674
Lisperがスレッドを必要としないってことはないでしょう。SBCLのウリのひとつだし。
Lisperは正規表現を必要しないってのは聞いたことがあるけど。リーダーマクロマンセー。
0677664NGNG
clisp バージョンを上げて解決しました.
便利な正規表現を使えるようになりました.みなさんのおかげです.

ところで,
(asdf:oos 'asdf:load-op 'cl-ppcre)
が終わるのに 2 分くらいかかりますが,これは毎回必要なんですか?
実際に使うために動かすのは手元ではないので耐えられますが...

>>676 sid は色々気をつけないとならないので逃げます orz
0678デフォルトの名無しさんNGNG
>>677
cl-ppcre をロードした後に (saveinitmem) で
新しいイメージを作ってそっちを使うようにするのが定石です。
#!/bin/sh
/usr/local/bin/clisp -M ~/my/dir/initmem
みたいに自分のイメージを使って起動するシェルスクリプトを
パスの通ったところに置いておきましょう。

あと、clisp なら標準の regex, あるいは pcre モジュールの
ほうが性能は良いって事は心に留めておいたほうがいいです。
cl-ppcre は移植性と互換性は良いけどね。
0679デフォルトの名無しさんNGNG
Gaucheのwww.cgiを使ってみたいのですが、下のようにoutput-charset
を定義すると、「"euc-jp"」と評価されます。ここで、「euc-jp」と
評価されるにはどうしたらいいのでしょうか?
(define output-charset "euc-jp")
(define (main args)
(cgi-main
(lambda (params)
`(,(cgi-header
:content-type #`"text/html; charset=,(output-charset)")

0680デフォルトの名無しさんNGNG
>>679
あっ。。。
(define output-charset "euc-jp")
(define (main args)
(cgi-main
(lambda (params)
`(,(cgi-header
:content-type #`"text/html; charset=,output-charset")
0681デフォルトの名無しさんNGNG
CGIプログラムを継続を使って書くと綺麗なコードになると何度か聞いたことがあります。
たぶん、HTTPがステートレスな接続形態であることをうまく隠して、
複数のHTTP要求と応答をひとつのセッションとしたコーディングができるようになるのかなと
想像しています。具体的に教えてください。

また、Continuation Passing Styleで書けば継続が直接サポートされていない
Common Lispでも同じように綺麗なコーディングができますか?

Kahuaも継続を売りにしていますよね。
0682デフォルトの名無しさんNGNG
cygwin 環境で guile-1.6.4をコンパイルしたのですが、make途中で
エラーが発生してしまいます。

場所は

cat alist.doc (略) regex-posix.doc | GUILE="/cygdrive/c/home/work/guile-1.6.4/
pre-inst-guile" ../scripts/snarf-check-and-output-texi --manual > guile.texi ||
{ rm guile.texi; false; }
ERROR: Unbound variable: define

guile.texiを作成するところです。実行ファイルそのものはできている
ようなのでそれを直接実行してみると

bash-2.05b$ libguile/guile
ERROR: In procedure primitive-load-path:
ERROR: Unable to find file "ice-9/boot-9.scm" in load path
bash-2.05b$

のようなエラーになります。configure時には何も指定していません。
どなたか対処法をご存知ありませんか?
0683664NGNG
>>678
>>672 で (saveinitmem) に触れていただいたのに見落としていました.すみません.
debian sarge の cmucl でも cl-ppcre を難無く load できました.

移植性と互換性とはいっても,古いバージョンには入れられないものなんですね.
他所 (sparc マシン) の cmucl で動くか試してみましたが,
load 中,api.sparcf で type-error が出て入れられないんです.
しかも api.lisp の何行目が悪いのかも分からず...

自宅では軽い clisp で作り,cmucl の入ったサーバーにアップロードという
目標は無理のようです.orz
0684デフォルトの名無しさんNGNG
>>681
Kahuaのチュートリアルがわかりやすいかと。
http://www.kahua.org/cgi-bin/kahua.cgi/kahua-web/show/doc/hello-kahua#H-y3tjno

ちなみにKahuaでいう「継続ベース」というのは、call/ccでどうのこうの
ということではなくてCPSで書きますということです。
すなわち、Common Lispでも同様にやれるでしょう。
0685デフォルトの名無しさんNGNG
>>681
http://www.common-lisp.net/project/ucw/index.html
Common Lisp で継続ベースの Web アプリ開発フレームワーク、だそうです。
使ったことないですが。
0686デフォルトの名無しさんNGNG
>>683
エラー吐いてデバッガに落ちてるんじゃないの?
バックトレースとかスタックフレームとか調べてみた?
まず「ソースコードの何行目が悪いのか」という思考から「どこの式が悪さしてるか」を
意識するようにしてみるといいかも。
0687デフォルトの名無しさんNGNG
>>684-685 ありがとうございます。
0688664NGNG
今日,>>686 のご指摘通りデバッガとの対話を学び,試そうと某所へ行きました.

すると,コケたはずのインストールが,修正していないのに出来てしまいました.
(asdf:oos ...) も (load "cl-ppcre-0.7.7/load.lisp") も出来ます.
;;; 管理者さんがこのスレにいるのでしょうか...
そして,マイ core も作りました.
あとはカッコいいプログラムを作るだけです.ありがとうございました > root
0689デフォルトの名無しさんNGNG
Windows版はないのね。残念。
0690デフォルトの名無しさんNGNG
湯浅センセがスーパークリエイタになってはる。応募しはったときも
思たんやけど、なんで今さら…。めっさ、違和感あるわ。次世代ちゃ
うやろ。
0691デフォルトの名無しさんNGNG
ペタジーニのバントみたいだな。
夢が壊れるよ。
0692デフォルトの名無しさんNGNG
そう?
あの年で(失礼)、また教授になってもhackするのはいいことじゃないですか。
おまえらももっとhackしろというメッセージだと思ってます。
0693デフォルトの名無しさんNGNG
lisp屋が おじさん/おばさん、おじいさん/おばあさん になっても
hack するのは、デフォじゃないの?
0694デフォルトの名無しさんNGNG
お金とって来れる偉い人がなっちゃいかんよなぁ。
もっと若い人に譲らなきゃ。
0695デフォルトの名無しさんNGNG
若い連中がふがいないから教授に取られちゃうんだよ。
0696デフォルトの名無しさんNGNG
ファイルの中身をまるまる string にするには,どうやればいいですか?
get-output-string-stream は output stream にしか使えないんですね.
0697デフォルトの名無しさんNGNG
>>694
>お金とって来れる偉い人がなっちゃいかんよなぁ。

もしかして「京大教授」って、意外と薄給なのでは?
0698デフォルトの名無しさんNGNG
>>696
処理系は? まぁ、このへんを参考にしたらいいと思いますが。
http://www.shiro.dreamhost.com/scheme/wiliki/schemexref.cgi?port-%3estring

>>697
「お金」= 「給料」ではなくて研究費です。
給料は国立大の教授なら1000万程度では。
いいと思うかは微妙なところだけど。
0699デフォルトの名無しさんNGNG
XSで未踏に応募したのはWindows版の開発を委託する費用を捻出するため。
スーパークリエイターに認定されたのは湯浅センセがどうこうできることじゃない。
695の意見が正しいと思う。
0700デフォルトの名無しさんNGNG
少し前に話題になっていた、Lisp の知見を他言語(Javaなど)で生かす話、
こんなのを見つけました。

『A Little Java, A Few Patterns』
http://namazu.org/~satoru/diary/20010320.html#p01

この本は、名著『Little Schemer』の著者によるものだそうで、デザパタの中でも
難解で知られる Visitor パターンが、関数型言語の考え方から自然に導かれることを
説明するのだそうです。

そうか。関数型言語なら高階関数で行うことを、オブジェクト指向言語はオブジェクトで
行うのか。それらの知見は、ある程度は相互に利用が可能みたいですね。

邦訳も出ているみたいです。
『Javaとピザとデザインパターン』
http://www.amazon.co.jp/exec/obidos/ASIN/4797307900
0701デフォルトの名無しさんNGNG
あと一つ、Greenespun's 10th Rule のグリーンスパンの Blog から
『Scheme vs. Common Lisp』
http://philip.greenspun.com/bboard/q-and-a-fetch-msg?msg_id=0006XQ

私は Scheme を少し知っているだけなのですが、これを読むと Common Lisp の実用性は
素晴らしいと思いますねえ。

それにしても、flame war 勃発と思いきや、あんまり騒ぎになってない。
そもそも Lisp 界にはフレームが起こるほど人がいないのか。

グリーンスパンが同じ Blog で Java を揶揄したときは、スラドを含めて
大騒ぎになったらしいのにねえ。
http://www.shiro.dreamhost.com/scheme/wiliki/wiliki2.cgi?Shiro%3alog%3a2003%b8%e5%c8%be
(2003/09/24 18:54:23 PDT)を参照
0702696NGNG
>>698
あっ,common lisp の話なのに書き忘れてしまいました.ごめんなさい.
処理系は clisp ですが,処理系に依存しない方がいいです.
いろいろ試してはみましたが,do と read-line よりいいものは無いのでしょうか.
0703デフォルトの名無しさんNGNG
>過去ログ眺めてきたけど、何か妙に卑屈になってるのが居るみたいね。

lisp界には凄い人が普通にいる感じがするからじゃないかな。
shiroとか苫米地とか新山とか。
KCLの両先生はさしあたり東大寺の仁王像、京都大学は奈良の大仏、
アランスク先生はジャンヌダルクかフランス貴公子(奇行氏)といった所だろう
(適当だが)
0704デフォルトの名無しさんNGNG
shiro >>>>>>>>>>>>>>>> 苫米地 > 俺 > 新山
0705デフォルトの名無しさんNGNG
↑バカディスカー?
0706デフォルトの名無しさんNGNG
>>703
>アランスク先生はジャンヌダルクかフランス貴公子(奇行氏)といった所だろう
>(適当だが)

災いを招くつもりですか?
0707デフォルトの名無しさんNGNG
新山さんとアランスク先生って誰?
0708デフォルトの名無しさんNGNG
shiroさん最強。
苫米地さんは謎。コード読んだこと無いし。
新山さんは・・・日記職人(田口)。
0709デフォルトの名無しさんNGNG
>>707
aranskはゲームセンターで小学生突き落とした中学生
0710デフォルトの名無しさんNGNG
knilって何ですか?
(directory-fold:
http://www.shiro.dreamhost.com/scheme/gauche/man/gauche-refj_272.html#SEC299
0711デフォルトの名無しさんNGNG
>>710 特に意味がない。

(fold KONS KNIL LIST ...) (SRFI1) が元ネタ。2つの引数を持つ
プロシージャを何度も呼ぶとき、第2引数の初期値として使われる。
多くの場合、KONS として cons のような 関数を使い、KNIL として
'() が使われる。
0712デフォルトの名無しさんNGNG
chezのコンパイラについて御意見を聞かせてください。購入しても
バイナリのみのライセンスですよねぇ(いくらするんだろう)? >chezer様
0713デフォルトの名無しさんNGNG
>>712
個人向けの販売はしてないらしい。
$9000とか、学校向けでも$4500もするんだもんな。
Kent教授に嘆願書でも出さないか?
0714デフォルトの名無しさんNGNG
>>713
それでもずいぶん安くなったのではないですか?
ACL もずいぶん安いライセンスも出るようになったから、Chez も今後、
期待したいですね。

下は、2年前の話。

LISP Scheme Part6
http://pc3.2ch.net/tech/kako/1031/10315/1031560687.html

835 名前: デフォルトの名無しさん 02/11/26 03:59
Chez Scheme 6.0の見積もりを取ったが、いやはやあんなに高いとは。
マシン・タイプごとに24,500ドル。サポートが1機種 年間1,350ドルだと。
それほどの価値があるソフトなのか???
0715デフォルトの名無しさんNGNG
ACL アカデミックとかじゃなくて普通に商用に使うために買うといくらするの?
0716デフォルトの名無しさんNGNG
このスレの Part 8 で紹介されていた URL に $599 という価格があるんだけど、
http://www.franz.com/products/packages/

これって、アカデミック・ディスカウントなの?
そうは思ってなかった。
教育関係なら、ここからさらに割り引かれるのかと思ってました。

ご存知の方おられませんか?
0717デフォルトの名無しさんNGNG
先日のFranzセミナーでもらった価格表によると…

Windows/Linux/FreeBSD/MacOS X版
Professional 750,000 (395,000)
Enterprise 1,400,000 (795,000)
Platinum 2,000,000 (895,000)

UNIX (Sun, IBM, HP, Compaq)版
Professional 1,300,000 (520,000)
Enterprise 2,000,000 (1,040,000)
Platinum 2,750,000 (1,200,000)

…高い… orz
0718717NGNG
あ、括弧の中はアカデミック価格ね。
0719デフォルトの名無しさんNGNG
俺はソースネクストが1980円で売り出すのを待つよ。
0720デフォルトの名無しさんNGNG
括弧を無くして初心者にやさしい構文になったAllegro CLパーソナル版
1,980円!
0721デフォルトの名無しさんNGNG
>>717-718
ありがとうございます。
業務システムなら千万単位の金が動くのは当たり前なので、そういうところが
売り込みの対象なのでしょうね。

SUN の Java みたいにただでばら撒いてもらえるとありがたいけど、これを
売って会社を成り立たせているから、市場の少ない段階ではおいそれと値下げも
できないし。

考えてみたら、Java がタダでばら撒かれているのがすごく不思議な気がしてきた。
0722デフォルトの名無しさんNGNG
インタプリンタでさえF1マシンのように速いのにコンパイラは
どれ程のものだろうね。個人的にはchez(petite)で
EdwinみたいなEmacs互換のエディタがあればいいなぁ。
そういえば奥村先生の辞典にあるメルセンヌ数(素数)判定の
プログラムをpetiteで再実装したらCコンパイラ(gcc)のコードより
かなり速かった。…やっぱpetiteインタプリンタが内蔵された
エディタが欲しいなぁ。doctorの腕も上がるかもねww
0723デフォルトの名無しさんNGNG
Gaucheのテキストツリー構造を見ています。仕様の資料ってありますか?

(use text.html-lite)
(html:html (html:h1 "TITLE"))
=>(#0="<" html () #1=">" ((#0# h1 () #1# ("TITLE") #2="</"
h1 #3="\n>")) #2# html#3#)

(html:html (html:h1 "タイトル"))
=>(#0="<" html () #1=">" ((#0# h1 () #1# ("ツタツイツトツδ・)
#2="</" h1 #3="\n>")) #2# html #3#)
0724デフォルトの名無しさんNGNG
May the source be with you.
0725デフォルトの名無しさんNGNG
happy hacking
0726デフォルトの名無しさんNGNG
Windows版のLispってありませんか?
0727デフォルトの名無しさんNGNG
ググれ
0728デフォルトの名無しさんNGNG
ググった
0729デフォルトの名無しさんNGNG
>>721
petite の方はただで配ってるし、プロプラなアプリに組込んで使っても問題無い感じ。
ところで、↓この chez の方の src.rpm ってソースコード丸々入ってるんですか?

ttps://www.cs.indiana.edu/chezscheme/iu/
0730デフォルトの名無しさんNGNG
>>726
Allegro CLのWindows版があるよ。
0731デフォルトの名無しさんNGNG
>>724-725
了解しました
(文字化けは、文字コード設定だけの問題でした)
0732デフォルトの名無しさんNGNG
>>729
.aしか入っとらん。
そんなに世の中甘くないぞ
0733デフォルトの名無しさんNGNG
 Gaucheのマニュアルを見ているんですが、なぜ戻り値の型が記載されていな
のですか? 下のような形が標準であって、戻り値の型は必須になっていない
です。Scheme的な流儀?
 調べてみると、stringが返ってくるのか、portが返ってくるのか等々、判断
しにくいです。

ex) Function: read-block nbytes &optional iport
ttp://www.shiro.dreamhost.com/scheme/gauche/man/gauche-refj_101.html#SEC105
0734デフォルトの名無しさんNGNG
釣りか?
吊りなのか?
0735デフォルトの名無しさんNGNG
>>733
srfi とか、あるいは(scheme じゃないけれど)clhs みたいな
フォーマットで書いてほしいって事でしょうか。
と、解釈してみます。
0736デフォルトの名無しさんNGNG
>>733
MLやWiLiKiでshiroさんにきいてみなよ。
即効でレスしてくれるぞ。
0737デフォルトの名無しさんNGNG
>>733
文字列を返すこともあれば、eof オブジェクトを返すこともあるわけで、
一つの型には決められないからじゃないのかな。

そこらへんをうまく扱えるいい表記があればね、と無責任モード。
0738デフォルトの名無しさんNGNG
Schemeにも型表記の取り決めがあればいいね。
型が変化しない関数は組み込みを含めてありえるわけだし。
CommonLisp族のdeclareディレクテイブはどうなんだろう。
0739デフォルトの名無しさんNGNG
型なんかが必要な人は頭が型いんです。
0740デフォルトの名無しさんNGNG
OnLisp 邦訳、Franz のサイトからリンク張ってあるね。
0741デフォルトの名無しさんNGNG
>>740
すげぇな。ほんとだ。
あとは訳が完成するのをまた〜りまつこととしますか。
0742デフォルトの名無しさんNGNG
訳が完成したら出版してほしいなあ。
翻訳の完成度高いし。
0743flatline@Vim%Chalice ◆r6EONKKhcc NGNG
そんなことより >>740 -- >>742 よ,ちょいと聞いて下さいよ.Lispとあんまり関係ないけどさ.
今日(昨日),ACMプログラミングコンテスト予選があったんです,ICPC国内予選.
そしたら各大学3チームしか選ばれないのに,東大から19チームも出てて絶望なんです.もうね,ア(ry
で,1年生(教養前期)3人のチームの中にうちのサークルの新人がいたんで,
「ま,選抜はされないだろうけど精一杯やるさ.きみっちもがんばれよ」と先輩風吹かしてみたら,
なんと彼ら qoo_ が東大3位,全国4位(まだ暫定)で選抜されるっぽいんです.
ttp://www.logos.ic.i.u-tokyo.ac.jp/acm-icpc/standings.html
そこでまた(全国86位の自分に)ぶち切れですよ.
偉そうな顔して何が,探索空間広杉,だ.
自分はJavaでO(n^6)の土方コーディングしかできないのちゃうんかと.
まあ私,flatlineは,分数の単位分数による分解をきちんと解きなさいってこった.

            ☆      ☆      ☆

なお使用可能言語はC, C++, Javaの3つ,時間は3時間15分でした.
それに対してICFP http://www.cis.upenn.edu/proj/plclub/contest/ の方は任意の環境が利用でき,
時間も数日単位です(チームで寝る奴と書く奴を分担したり).
例年OCamlとかが人気のようですが,Common Lispも数チームずつ選んでいるようです.
これを読んでいる学生の方,どっちでもいいですが参加してみてはいかが.
優秀な方に対しても,私みたいな orz に対しても,よい体験になると思います.
0744デフォルトの名無しさんNGNG
これって、参加者のコード見れるの?
0745デフォルトの名無しさんNGNG
>>743
なんかこう何とも言えないでつな(汗
C, C++, Javaてのがまた。来年あたりC#とかが追加されてみたりすんのかねぇ?
Lispでごりごりなら743もゴリゴリ逝けたはず?
まぁ、学生さんたち頑張ってくれ。
0746デフォルトの名無しさんNGNG
>>726
SBCL win32 port のパッチが公開されてるよ。
0747O....TZ@Vim%Chalice ◆r6EONKKhcc NGNG
見られません < 提出済みコード
審判システムが終了してるので,感想戦やろうにもなかなか難しい.
まぁ大きなコミュニティに属してる利点ってのは,
そういうときでも「そのコードがacceptされたチームの人」「その場で(!)解ける人」が
身近にいるってことなんですが.

ICPCはどの言語だろうと本質的な手間は変わらない問題が多いぽ.
手続的言語にしぼってるのは,それなりの意図でしょう(Pascalが加わる場合も).
まぁ「Lispだとこうなる」ってのも面白いのでちょっと過去問を解いたことがありますが.
0748デフォルトの名無しさんNGNG
絶対に declare しておきたい場合を教えてください.

cliki に置いてあるのを参考にしてみるも,全部に型を書いてあるんです.
ここまで頑張るのでは大変です.
効果が大きいとか小さいとかは,どうしたら分かるのでしょうか.
0749デフォルトの名無しさんNGNG
絶対必要なのはプロファイルをとる事。なんでかっつーと、
効果がわからないって奴の大半はボトルネックをきちんと
測定していないから〜。

型指定はその後。一番良く呼ばれる関数のインライン化、
速度なら多用される計算関数、頻繁にアクセスする配列、
メモリ量ならサイズの大きい構造体や配列、クラス等で
の型指定かなぁ。きちんと Profiling してるなら効果
もそれなりに測定できるはず。後は disassemble するとか。
0750デフォルトの名無しさんNGNG
ヤッターマン
0751デフォルトの名無しさんNGNG
コーヒー
0752デフォルトの名無しさんNGNG
ライター
0753748NGNG
>>749
ありがとうございます.こんなに簡単に分かるものだったなんて初めて知りました.

declare 前後の効果をはっきり知るために declare 式を一斉に
on, off したいのですが,コメントにするのでは大変です.
C の ifdef のようなものがあると便利なのですが,
こういうときに役立つ方法を教えてください.
*feature* に :declare-shiru を push して #+ 等を使うのは普通ですか?
0754デフォルトの名無しさんNGNG
関数として扱え,setf の 1 番目の引数でも使える accessor とは何なんでしょうか.
例えば,色々なものをごちゃ混ぜにしたリストを複数の関数で扱うとき,

(defun data1 (lst) (cdr (nth 3 lst)))
(defun data2 (lst) (cdr (nth 5 lst)))

とやると setf でアクセスできなくなりますし,

(defmacro data1 (lst) `(cdr (nth 3 ,lst)))
(defmacro data2 (lst) `(cdr (nth 5 ,lst)))

とやると関数を引数にするものに渡せません (:key など).
こんなとき,みなさんはどうやっていますか?
0755デフォルトの名無しさんNGNG
こんなんじゃなかったっけ? あと適当に defsetf とかで検索しておくれ。

(defun kar (kons)
(car kons))

(defun (setf kar) (kons obj)
(rplaca obj kons))

> (setq data '(1 2))
(1 2)
> (kar data)
1
> (setf (kar data) 3)
(3 2)
> data
(3 2)
0756754NGNG
>>755
全く知りませんでした.ありがとうございます.
CLHS を一から読むと,まだ知らないことがゴロゴロ出てきそうです.
0757デフォルトの名無しさんNGNG
あ、上のでも一応動くんだが

(defun (setf kar) (obj kons)
(rplaca kons obj))

だった。
0758デフォルトの名無しさんNGNG
あら、gencgc って SPARC にも対応してたんだ。CVS 追っかけてなかったから知らんかった。
次は MP かしらん(ワクワク
0759デフォルトの名無しさんNGNG
(っ´∀`)っ(defun mona () ((っ´∀`)っ(defun mona() ((っ´∀`)っ
(っ´∀`)っ(defun mona () ((っ´∀`)っ(defun mona() ((っ´∀`)っ
(っ´∀`)っ(defun mona () ((っ´∀`)っ(defun mona() ((っ´∀`)っ
(っ´∀`)っ(defun mona () ((っ´∀`)っ(defun mona() ((っ´∀`)っ
(っ´∀`)っ(defun mona () ((っ´∀`)っ(defun mona() ((っ´∀`)っ
0760デフォルトの名無しさんNGNG
そういうの、大人はあまり面白がってくれないよ。
0761デフォルトの名無しさんNGNG
無名関数のみで再帰するシンプルな方法を考えてみました。
まず、リストの長さを測る関数 my-length を作ってみる。

(define (my-length list0)
 (if (null? list0)
   0
   (+ 1
     (my-length (cdr list0)))))

(my-length '(1 2 3 4))

==> 4

それを無名関数だけで書き直す。要するに、自分と同じ形の関数を
引数に取って、それを再帰の代わりに呼び出すのである。

((lambda (function list0)
  (if (null? list0)
    0
    (+ 1
     (function function (cdr list0)))))
(lambda (function list0)
  (if (null? list0)
    0
    (+ 1
     (function function (cdr list0)))))
'(1 2 3 4))

==> 4

これを理解すれば、Yコンビネータを理解することの助けになると
思ったんですが、いかがなものでしょうか?
0762デフォルトの名無しさんNGNG
前スレあたりにいくつかあったよ
0763デフォルトの名無しさんNGNG
>>762
ありがとうございます。なるほど、確かに前スレにありました。
見たはずなのですが、当時は理解できなくて読み飛ばしていました。

今『Scheme 手習い』の9章を読んだばかりで、
「この Yコンビネータは洗練されているけれど、分かりづらい。汎用性をなくせば、
 もっと分かりやすい再帰ができるのじゃないか?」
と思ったのですが、すでによく知られていることなのですね。すみません。

以下は前スレの引用ですが、眼からウロコが落ちる思いでした。
-----------------------------------------------------------
437 名前: デフォルトの名無しさん 03/12/12 23:03
lambdaだけで回すコードは、カンの鋭い人なら、相互的な再帰処理を
書いている内に自然と気付くかもしれない
結局は、以下のより単純にした式

((lambda(x)(x x))(lambda(x)(x x)))

この式の応用だから
0764デフォルトの名無しさんNGNG
このスレの話題と呼応する様に、Bill Clementson のブログに Java と CL の連携の話が出てるね。
0765デフォルトの名無しさんNGNG








hobbitとBiglooってどう違うん?
0766デフォルトの名無しさんNGNG
>>743 flatline 氏

on Lisp の邦訳の 148ページ目に、TeX のタグが残っていますよ。
-----------------------------------
Common Lisp のこのコードは,
\begin{verbatim}
(let ((f #’(lambda (x) (1+ x))))
(funcall f 2))
\end{verbatim}
0767デフォルトの名無しさんNGNG
>>765
hobbit は r4rs だし、末尾再帰の最適化もされないんじゃなかったっけ?
Bigloo がどうだか知らないけど、hobbit は Scheme で書かれてる。

Scheme で標準的な FFI のライブラリってありますか?
C の struct とか union も Scheme から扱えると嬉しいのですが。
0768デフォルトの名無しさんNGNG
> Scheme で標準的な FFI のライブラリってありますか?

SRFI でもめてたっけなー
0769デフォルトの名無しさんNGNG
r5rs の 7.3 Derived expression types に書いてある、
case の定義について質問です。
template の最初の clause (+ の部分) を省いたら、
もとの定義とどういう違いが生まれるのでしょうか?
それとも省略しても変わらないのでしょうか?

(define-syntax case
(syntax-rules (else)
((case (key ...) ;+
clauses ...) ;+
(let ((atom-key (key ...))) ;+
(case atom-key clauses ...)));+
((case key
(else result1 result2 ...))
(begin result1 result2 ...))
((case key
((atoms ...) result1 result2 ...))
(if (memv key '(atoms ...))
(begin result1 result2 ...)))
((case key
((atoms ...) result1 result2 ...)
clause clauses ...)
(if (memv key '(atoms ...))
(begin result1 result2 ...)
(case key clause clauses ...)))))
0770デフォルトの名無しさんNGNG
>>769 key が複数回評価されてしまう。値が変るかもしれないし、
変な副作用が出るかもしれない。
0771デフォルトの名無しさんNGNG
省略するとKEYが複数回評価されてしまうことがあるな。
こんなんだと違いが出るでしょ。
(case (begin (print "foo") 2)
((0) ())
((1) ())
((2) ()))
0772769NGNG
>770,771
回答ありがとうございます。
理解できました。
0773デフォルトの名無しさんNGNG
Lispに興味ある人って結構いると思うんだよね。
でも、ほとんどのユーザーがWindowsなわけで、
LispはWinユーザーにとっては手軽じゃない。
さくっとDLできて、すこっとインストーるできれば
もっと流行るんじゃないかねぇ。
0774デフォルトの名無しさんNGNG
商用/フリー含めて一番多く Common Lisp 処理系が使える環境は Mac OS X だって
誰かが言ってたね。
0775デフォルトの名無しさんNGNG
なんか最近は学生気分で呑気なヤシ多いよなぁ。
こちとらpetiteをbinutilsでハックラン中なのに…
そろそろ寝まつか
0776デフォルトの名無しさんNGNG
>>775
そもそもLispなんて仕事で使えるか?
VC++やVBに疲れたプログラマが息抜きにやりたいんだろ。
0777デフォルトの名無しさんNGNG
Shiroさんは仕事で使ってるぜ。
洩れは... 「Lispならこう書ける」を基準に、脳内コンパイルしつつJava書いてる(ぉ
0778デフォルトの名無しさんNGNG
無名クラスを乱用しないように気をつけましょうね
0779デフォルトの名無しさんNGNG
Lispって大脳皮質みたいな感じがする。
でね、運動神経ゼロなの。
Cは脊髄。
0780デフォルトの名無しさんNGNG
ANSI Common Lisp を読んでいて疑問に思ったのですが、(setf symbol) が
defun の第一引数 (function name) になるって変じゃないですか?

CLHS 見たんですけど、良く分かりませんでした。(setf symbol) って何を
返すのでしょうか?

http://www.lisp.org/HyperSpec/Body/mac_defun.html
http://www.lisp.org/HyperSpec/Body/glo_f.html#function_name
0781780NGNG
済みません。ここを読んだら何となく納得しました。

http://groups.google.co.jp/groups?&th=49b3a6ce675ecc26
http://www.lisp.org/HyperSpec/Body/sec_5-1.html
0782http://media.ebaumsworld.com/mariopiano.wmv NGNG
お前ら俺にschemeのsyntax-rulesの使い方を教えなさい
特に
(syntax-rules (←この部分には何を書くのよ?→) ((パターン) (テンプレート))* )
           ↑この部分

ここhttp://www.sci.toyama-u.ac.jp/~iwao/Scheme/r5rsj/html/r5rsj.html#SEC42
によると「リテラル」などというご大層な名前が付いてるそうだが
じぇんじぇん意味わかんねーぞ(#゚Д゚)ゴルァ(#゚Д゚)ゴルァ(#゚Д゚)ゴルァ(ていうかそもそも訳が下手じゃね?)
このスレにいるスーパーハカーの皆さんは
大至急私に、リテラルの意味を教えなさい。



いや、マジで。どこにも分かりやすい説明が無くて。
あんまりバカにしないで。
0783デフォルトの名無しさんNGNG
とりあえずぬるぽっておくか

(null? ぬるぽ)
0784デフォルトの名無しさんNGNG
厨房に荒らされてしまって、このスレももう終わりだな
0785デフォルトの名無しさんNGNG
>>784
本当に分かんないんだって!

もったいつけないで教えろよ!
0786デフォルトの名無しさんNGNG
>>782
ああ、syntax-rules の説明は、R5Rs を読んでもまずわかんない。
日本語の資料に限ると、

オンラインで読める文献は >>5 に出てる「入門Scheme」以外にないと
思う。これなら何とか分かるんじゃないかな。pdf ファイル。
#http://www4.ocn.ne.jp/~inukai/scheme_primer_j.html

書籍だったら、『プログラミング言語SCHEME』R.ケント ディヴィグ (著)
http://www.amazon.co.jp/exec/obidos/ASIN/4894712261
この本、原書(英語版)が Chez Scheme といっしょにフリーで配布されてる。

古い本には syntax-rules は全然載ってないから気をつけて。
0787デフォルトの名無しさんNGNG
>>785
まあ、おちつけ。
Scheme を知ってる人は大学で習った場合が多いから、一般人が独力で学ぶ場合の
苦労はあんまり共有されてないんだよ。漏れもこれを見つけるまで、マクロの書き方
わかんなくて苦労した。

ついでだけど、R5Rs はこっちの訳のほうが読みやすいと思うよ。
http://www.unixuser.org/~euske/doc/r5rs-ja/index.html
0788デフォルトの名無しさんNGNG
>>786さんありがとうございます
しかしそのpdfファイル文字化けしてて読めなかった(Debian sarge にデフォでついてきたviewer)
あとで環境揃えて読んでおきます THX

784さんもありがとう

そして785にガッ
0789デフォルトの名無しさんNGNG
>>787
ぬ?こっちも調べておきます。ありがとう
0790784NGNG
>>783に言ったんだがな・・・
0791デフォルトの名無しさんNGNG
>>788-789
だからおちつけ。少しレス番ずれてるぞ。
PDF 今読めないそうだから、いいかげんな解説をしてみる。

>>782 の (←この部分には何を書くのよ?→) だけど、
そこにはマクロの冒頭に来ない予約語を書くんだよ。

例えばマクロで cond を実装するとして、必要な予約語は cond と else だろ。
マクロの冒頭に来る予約語が cond で、それは当然 define-syntax のあとに書く。

で、(←この部分→) に書くのが else だ。マクロの途中に現れる、特別な意味を持つ
シンボルをそこに書いて宣言するんだよ。

つうことは、単純なマクロならたいていそこは空欄になる。だから普通は()の中には
何も書かなくてよし。


>>790
そうか。俺も誤解してた。すまんかった。
0792デフォルトの名無しさんNGNG
>>791
なるほど。それで>769が読めそう……ですね
俺は少しのレス番のずれなど気にしないぜ!

それと、俺は>782,783,785,788,789だぜ。
実際厨学生だが。
0793デフォルトの名無しさんNGNG
(define-syntax map-in (syntax-rules (in)
            ((map-in arg in lst body)
             (map (lambda (arg) body) lst)))

これで
(map-in x in '(0 1 2 3 4)
 (+ x 10))
=> (10 11 12 13 14)
となる。PythonとかRubyのイテレータに似せてみた。
in が未束縛だが、手作りの「予約語」になってる。

む、この例だと意味薄いか?
r5rsマクロの「リテラル」はパタンマッチングの目印に使われるハズ。

あと、「学校で習った」だけの知識じゃマクロまで使えない学生も多いよ@灯台理情
好みでやりこんでるヤシが使うだけ。
0794デフォルトの名無しさんNGNG
>>793
うーん、Lispだとイテレータはいらないよねえ。リスト操作で済んじゃうから。

個人的な見解だけど、マクロの途中に出現する予約語って、普通に関数的にコードを
書くときには、あまり使い道がないと思う。cond の else だって #t と書いても
同じだし。

call/cc で新しい制御構造を作ったりするときに、真価を発揮するのだと思う。


あと、学校で習う人が全員マクロまでは行かないのは分かる。だけど自分で先に
進むとき、周囲の人に相談できるし、教官に質問もできるでしょう?図書館にいい
本もあるし。やっぱりネットと本だけを頼りに手探りで進むのとは違うよ。

声を大にして言いたいのは、Lisp を学びたいなら、絶対学生のうちにきっちりやった
ほうがいいということ。社会に出てからだと大変だもの。

私は学生の頃は Lisp をやろうなんて思わなかったんで、今、すごく後悔してる。
こういう基礎的な(応用に直接結びつかない)ものを学ぶ機会は、社会にはなかなか
ないんだもの。
0795デフォルトの名無しさんNGNG
> 私は学生の頃は Lisp をやろうなんて思わなかったんで、今、すごく後悔してる。
> こういう基礎的な(応用に直接結びつかない)ものを学ぶ機会は、社会にはなかなか
> ないんだもの。

社会に出てからだっていくらでも学べる。
こんなのはやる気がない奴の言訳。
それか本当に時間のない土方プログラマかどっちか。
0796デフォルトの名無しさんNGNG
後半だけ読むと「やる気がない奴の言い訳」のようにも読めるけど、
最初から読めば、>>794氏は「社会に出てから学んでいる、やる気
のある人」だと思うな。
0797デフォルトの名無しさんNGNG
私も同感です。ハックランするときは普通に2日は寝ないです。
噂によると本田技研の野郎の中にはまともに1週間寝ないで
設計する狂人がいるらしいけど。そういえばホンダはLispで
構築したシステム(たしか外注)持ってたよね。流石だよねぇ。
0798797NGNG
>>795
0799デフォルトの名無しさんNGNG
某教授曰く

「あそこ(本田技研)に行けば確実に殺される」

らしい(実話)。
0800デフォルトの名無しさんNGNG
800get
0801794NGNG
なんか、煽られてるなあ。
別に愚痴を言いたかったんじゃなくて

「大学というのは Lisp を学ぶには恵まれた環境だから、学生の皆さん、どうか有効に
 活用してください」

と言いたかっただけなんだよ。これは Lisp だけじゃなくて、数学とか、経済学とか、
基礎的な学問なら全部に言えることだけど。

私は物理専攻で、その頃は Lisp にほとんど興味がなかった。うちの大学には Lisp の
有名な先生がいたんだけど。社会に出てから興味を持って「ああ、もったいなかったな」
と思ったんだよ。せっかくλ山のふもとにいたのに。
http://wwwfun.kurims.kyoto-u.ac.jp/MtLambda.html

まあ、やる気がないとか、土方とかは、たぶん当たってます、ハイ。
0802デフォルトの名無しさんNGNG
やる気があろうが無かろうが、結局はその人のセンス次第
0803デフォルトの名無しさんNGNG
>>802
それを最大限にフォローしてくれるのが Lisp.
0804デフォルトの名無しさんNGNG
>>801
Mt.Lambda ワロタ

今度から京大をλ山と呼ばせていただきます.
0805デフォルトの名無しさんNGNG
λ山にはリスパが居ってさ。
nilってさ
0806デフォルトの名無しさんNGNG
>>805
うまい。続きを考えようとしたけど思いつかない…
0807デフォルトの名無しさんNGNG
Yってさ再帰ってさ
0808デフォルトの名無しさんNGNG
いまlambda山に棲息しているlisperって誰? 長谷川先生?
0809デフォルトの名無しさんNGNG
湯浅先生ご本人がちゃんといるよね。
http://www.yuasa.kuis.kyoto-u.ac.jp/%7Eyuasa/index_J.html

あとは誰かしら。現役の方の報告を希望。
ついでにλ山の歌の続きも希望。
0810デフォルトの名無しさんNGNG
gaucheに巣食う厨をどうにかしてくれ
0811デフォルトの名無しさんNGNG
ショボーン
0812デフォルトの名無しさんNGNG
C は男らしい言語だと思うが、
Lisp は女らしい言語だと思う。

この2つを組み合わせて使うと
まるで自分が天下無敵になったような
気分を味わえるな。
0813デフォルトの名無しさんNGNG
gaucheに巣食う厨ってのはどこにいるんだ?
0814デフォルトの名無しさんNGNG
>>813
作者
0815デフォルトの名無しさんNGNG
なるほど
0816デフォルトの名無しさんNGNG
shel(ry
0817デフォルトの名無しさんNGNG
>>810 >>813-816
がんばってる奴を何もしない奴が叩いてんじゃねーよ。ヴォケが。
0818デフォルトの名無しさんNGNG
シロウ、無理しないでね
0819デフォルトの名無しさんNGNG
な・・・ん・・・で・・・・・あ・・・・・れ・・・て・・・る・・・・・の・・・・・・orz

                     /  ○/  ○             
_   _ __  \_   |_ ○\   |    /\         
|○| /○| ○ | ○_| ○_|  _| _|  _|   _| ̄|○   
 ̄    ̄    ̄                                 
0820デフォルトの名無しさんNGNG
>>819
それはあなたを表しています。時節柄ご自愛ください。
0821デフォルトの名無しさんNGNG
http://www.paulgraham.com/carl.html

Orbitz って CMUCL も使ってるの?
0822OTZ@Vim%Chalice ◆r6EONKKhcc NGNG
"On Lisp" 21章目を訳し終えました.
verbatim回りのミスを訂正しました.
ご指摘をいただいた方にお礼を申し上げます.
また何かあったらぜひご指摘をよろしくおねがいします > ALL

最近,さすがに内容が難しくて,適当な訳をすることが多いです.
注意して読んで下さい.

ペースもひどく遅いですが,訳了まで気長にお待ち下さい.
0823デフォルトの名無しさんNGNG
>>822
乙カレー!
http://user.ecc.u-tokyo.ac.jp/~g340299/

つうかアナタ、名前が以前と違ってるぞ。>>747は一発ギャグだと思っていたのに。
正式に改名するんですか?(笑)
0824デフォルトの名無しさんNGNG
>>822
tnx!
それにしても東大は大変だよねえ。受験が終わってからのほうがもっとキツい
競争なんだから。

まあ、気を楽にして行こうよ。いざとなったらλ山があなたを待ってるぞ。
実際、そういう人はかなり多かったぞ。

そのあとで待っているのは、「京都の一乗寺あたりに住む職業不定の怪しい人物」
という輝かしき人生だが……(泣)。
http://nicosia.is.s.u-tokyo.ac.jp/pub/essay/hagiya/essay/kyodaitodai
0825デフォルトの名無しさんNGNG
Lispばっかりやってると本当にそうなったりして… :-P
鵺の中の人なんてリアルにそんな感じだし(失礼)。
0826デフォルトの名無しさんNGNG
マイクロ・カーネルをSchemeで実装したら凄そうだよね。
またKL1みたいなプロジェクトが発足したらいいのになぁ。

>>822
がんがれ!!
0827デフォルトの名無しさんNGNG
shiroさんが遂に業を煮やして動きだした
ワショーイ
0828デフォルトの名無しさんNGNG
もうその話はいいよ。ウォチなら他のスレ or 板でやってくれ。
0829デフォルトの名無しさんNGNG
win native でちゃんと動く Gauche が出てきたという意味で言ったのであって他意は無いですよ。いやホント
0830デフォルトの名無しさんNGNG
私は Petite Chez Scheme (Win)を愛しているのだが、
Gauche が出たら…乗り換えちゃうかなあ?
少なくとも試しはするだろうなあ。
0831デフォルトの名無しさんNGNG
>>822
すばらしい!

お返しというわけではないですが
SICP原書
ttp://mitpress.mit.edu/sicp/full-text/book/book.html
0832デフォルトの名無しさんNGNG
>>831
もしや831が翻訳予定で?
0833デフォルトの名無しさんNGNG
>>832
そりゃすばらしすぎる!
正直、今の邦訳は、私には英文のほうがまだ読みやすい。
特に苦もなく読める人もいるそうだけど、それはたいへんうらやましい。
0834デフォルトの名無しさんNGNG
ところで、>>812 で
> C は男らしい言語だと思うが、
> Lisp は女らしい言語だと思う。
というコメントがあったけど、皆さんにとって Lisp ってどんな言語?

ここに、いろんな著名人の Lisp についてのコメントがあるんだけど、
http://www.paulgraham.com/quotes.html

この中では、Alan Kay の
「 Lisp は言語じゃない。(それを)構築する材料だ」という言葉がいちばん
私にはしっくりする。
0835デフォルトの名無しさんNGNG
邦訳といえば、サイエンス社の「島内剛一」が有名。なにしろヤシのせいで
クヌース教授の名著が迷著になってしまったんだからね。それだけに止まらず
ヤシはクヌース教授の「日本語版への序」よりも前に「監訳のことば」として
頁を飾ってるんだから。とんでもない妄想基地外野郎だ。もっとも最近は
改訳されたのが出版されてるけどね。そういえば(クヌース教授の)他著にも
「排中律」を「三段論法」と誤訳されていた(ヒルベルトの名言を)。
かわいそうなクヌース教授…
0836デフォルトの名無しさんNGNG
通報しますた
0837デフォルトの名無しさんNGNG
「島内剛一」で検索して、こんなページを見つけた。
http://www.math.tohoku.ac.jp/~kuroki/keijiban/e0015.html#e20020215142205
> Subject: Re: 本物のハッカーって、日本に居たのでしょうか?
> 「いま、いるか?」ではなくて、「かつて、いたか?」ですね。、
> 島内剛一、和田英一竹内郁雄、… (敬称略)

日本を代表するハッカーだったんですね。全然知りませんですた。

こんなのも見つけた。
http://godel.m78.com/diggression.html#simauti
アセンブラの天才だったみたいですね。すでにご存命ではないのか。

しかし、島内氏の経歴をまとめたページが見つからない。なんだか、一生好きなことを
やり散らかした人らしいので、まとまった業績がないのかもしれない。FSS を設立しな
かった RMS みたいな存在なんだろうか。


まあ、それはそれとして。
島○先生といい、和○先生といい、ハッカーに翻訳をさせてはいけないのかもしれない。
0838デフォルトの名無しさんNGNG
訂正。× FSS ○ FSF

竹○先生の翻訳ってどうなの?いくつか出ているけど、読んだことない。
0839デフォルトの名無しさんNGNG
> (`∀´)「アセンブラを使わないのが悪いのよ!」

ド変態がいるね
0840デフォルトの名無しさんNGNG
まあ私は英語が読めるからいいけどさ(かなり努力したますた)。
英語が読めてemacsでM-x infoすると感動すると思います。若い人は
本気になればある程度はすぐに読めるようになると思います。この夏に
挑戦してみては?一気に中学生からの再復習がお勧めですよ。
0841デフォルトの名無しさんNGNG
SICPって、自由に翻訳、発表していいの?
0842デフォルトの名無しさんNGNG
日本語版の出版社が翻訳権を持ってるんじゃない?
0843デフォルトの名無しさんNGNG
SICPって、何て読むの?
0844デフォルトの名無しさんNGNG
えすあいしーぴー
0845デフォルトの名無しさんNGNG
いつも「シックピー?」って読んでしまう...
病気かしらん。
0846デフォルトの名無しさんNGNG
t
0847デフォルトの名無しさんNGNG
>>842
それ、最悪。邪魔すぎ。
出版社に掛け合ってshiroさんに翻訳しなおしてもらおう。
0848デフォルトの名無しさんNGNG
>>842
海賊出版でなければ、翻訳権持っているはずですな。
0849デフォルトの名無しさんNGNG
翻訳といえばこれもか
http://www.htdp.org/2002-09-22/Book/

WiLiKiで見つけた
http://www.shiro.dreamhost.com/scheme/wiliki/wiliki.cgi?MzScheme
0850デフォルトの名無しさんNGNG
>>847
Shiroさんにはよいコードを量産してもらったほうが有意義かと.
0851デフォルトの名無しさんNGNG
Roger CormanからCorman Common Lisp買ってくれヨ!のメール来た香具師他にも居る?
漏れは当然シカトを決め込むわけですが、Corman Lispのウリって何なのよ?評価期間に
ちらっと使った限りじゃカネ払ってまで使いたいとは思わなかったんで。
Cormanくらいの値段でACLが手に入るんならLinux/Windows/MacOSXと持っているホストの
種類だけライセンス買っちゃうんだけどね。
0852デフォルトの名無しさんNGNG
Cormanって名前恥ずかスィ…
0853デフォルトの名無しさんNGNG
このスレもラスト 150 レスを切ったので、次スレの準備。
テンプレの過去スレ集にこれも入れて下さい。

CommonLisp初心者スレ
http://pc5.2ch.net/test/read.cgi/tech/1075464728/

; CMUCL/Darwin のソースが CVS にマージされ始めましたね。
0854デフォルトの名無しさんNGNG
>>851
ACL はランタイムライセンスが馬鹿高いので、安く exe や dll 作るなら
Corman でもいいんじゃない?WinAPI ガシガシとかインラインアセンブラとか
は便利だった気がする。
0855デフォルトの名無しさんNGNG
☆ チン     マチクタビレター
  ☆ チン  〃  ∧_∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ヽ ___\(\・∀・)< M$製のVisualLISP.net、マダ〜?
      \_/⊂ ⊂_)_ \___________
    / ̄ ̄ ̄ ̄ ̄ ̄ ̄/|
   |  ̄  ̄ ̄ ̄ ̄ ̄ ̄:| :|
0856デフォルトの名無しさんNGNG
F#で我慢
0857デフォルトの名無しさんNGNG
翻訳権て独占されるものなのか?
SICPの翻訳権はサスマンかMITに掛け合えばもらえるんじゃないのか?
日本のピアソンとか和田先生は関係ないかと。
0858デフォルトの名無しさんNGNG
契約内容によるだろ
0859デフォルトの名無しさんNGNG
つか、翻訳したならWebに載せるんじゃなくて本にして欲しい。
0860デフォルトの名無しさんNGNG
翻訳権は独占されるものです。
0861デフォルトの名無しさんNGNG
逆に Hackers and Painters はどういう扱いになるのかな。
出版社が翻訳版を出したかったら・・・?
0862デフォルトの名無しさんNGNG
>>849
面白そうな物サンクス。
cond の分岐を [] で表すの初めて見たけど、良くやるの?
0863デフォルトの名無しさんNGNG
>>855
.NETフレームワークの対応予定言語にschemeが入っていたハズだぞ
期待しないで待て!
0864デフォルトの名無しさんNGNG
あれはMS社が開発環境を提供するという意味ではなく,
「サードパーティがこれこれの言語について開発環境を準備してるっぽいです」
「みんなの人気者.NET!」
という宣伝なのでは...
0865デフォルトの名無しさんNGNG
>>864
きっとサードパーティーでもうっかり人気がでればその会社ごとMSが買うだろうから。




ありえねぇな
0866デフォルトの名無しさんNGNG
kludges ワラタ。

ポール・グラハムといい、Common な方の Lisp は愛憎半ばする言語なのかな。
昔の Lisp を知らないので、何処がそうなのか分からないけど。elisp とかやれば
分かりますか?
0867デフォルトの名無しさんNGNG
>>962
[ ] は cond に限らず、対応するカッコを強調したいときに使う。
例: ([lambda (x) (* x x)] 3)
『Little Schemer』でも、同じ表記を使っている。

ちなみに、Chez Scheme はこの表記をサポートしている。
括弧の対応が分かりやすくなるので、個人的にはとても気に入っているが、
見苦しいと思う人もいるかもしれない。
Gauche はたしか、もっと多くの種類のカッコをサポートしていたとおもう。

なお、同じ[ ]で「超括弧」と呼ばれるものを表す処理系もあるそうだ。
----------------------------------------------------------
http://plaza10.mbn.or.jp/~lisp/intro.htm

・超括弧

 通常の括弧 ( ) に対して、超括弧 [ ] の使用が可能です。[ ] は、右括弧 ) 数が
ミスマッチ(少ない方に)の場合でも、強制的にマッチングをとります。

例:(A (B C (D] → (A (B C (D)))

 (A (B [C (D] )) → (A (B (C (D))))
0868デフォルトの名無しさんNGNG
中村正三郎のホットコーナーにこの前あったFranzのCommon Lispセミナーに関する
感想が書いてあります。
http://www.asahi-net.or.jp/~ki4s-nkmr/

Shiroさんの正規表現ライブラリについて。
>ほとんどPerl互換の正規表現ライブラリを、フロントエンド+ダミーバックエンドで
>テストスイートを通すまでに2週間、フロントエンド最適化に2週間、仮想マ
>シンバックエンド実装と最適化に2週間だもん。仕事、早い!
ほんと、速いね。他の仕事とかけもちでやってこれかな。
0869デフォルトの名無しさんNGNG
>その他、湯淺先生は、「Perlは遅いね。コードを読んだことがあるけど、ど
>うしたらあんな遅いコードが書けるか不思議くらい」などとおっしゃって、さ
>すが世界的ハッカーの湯淺先生からいわれたら、返す言葉はないよなあと、こ
>ちらはうなずくばかり。

CGIのようなIOの多い用途でもCommonLispは有効ですか?
0870デフォルトの名無しさんNGNG
Gaucheは現状"[]"と"{}"が、"()"と同様に扱われる。
けど、マニュアルにその旨記述がないはずだから、これはunofficialだね。
0871デフォルトの名無しさんNGNG
>>867,870
thanx!
Smalltalk 風と言うべきか Arc 風と言うべきか。でも、[] で括るなら lambda は省きたい
気になってきますね。{} はちょっと読み辛い感じがしますね。
0872デフォルトの名無しさんNGNG
>>866
私も昔を知らないけど、中村正三郎『電脳騒乱節』には、古いタイプのLispがいくつか
紹介されていて、それを見たときの感想は、「今の Common Lisp の方がずっといいや」
というものだった。

Guy Steele は多分、Common Lisp より先に作った Scheme を気に入っているのじゃ
ないかな。


>>869
使えるはずだよ。ポール・グレアムは Common Lispで書いたWeb アプリケーションで
財を成したから。

普通のやつらの上を行け
http://www.shiro.dreamhost.com/scheme/trans/beating-the-averages-j.html
0873デフォルトの名無しさんNGNG
萩谷先生も Common Lisp には愛憎半ばしているようだ。
古いLispにあった夢ってなんだろう?
http://nicosia.is.s.u-tokyo.ac.jp/pub/essay/hagiya/essay/zoku_omoide
http://nicosia.is.s.u-tokyo.ac.jp/pub/essay/hagiya/h/inchiki

Scheme は好きらしい。
http://nicosia.is.s.u-tokyo.ac.jp/pub/essay/hagiya/h/tensai
0874デフォルトの名無しさんNGNG
俺樣のための俺樣Lispスペシャルを走らせるための
軽量インタープリターを俺樣が書く。
ちょちょいと書く。

Common Lisp にはない世界
0875デフォルトの名無しさんNGNG
古き良き時代の香りが残ってるとかじゃない。NIL とか。
話し言葉にもなった -p 記法とか。あと性能の追求とか。
俺様のための俺様スペシャルを走らせるためのコンパイラを俺様が書く。
ちょちょいと書く。Scheme には無い世界。
0876デフォルトの名無しさんNGNG
ttp://en.wikipedia.org/wiki/Robert_Tappan_Morris,_Jr.  の抄訳

Robert Tappan Morris, Jr. はコンピュータプログラマで,現在はMITに勤めています.
彼は1988年にコンピュータウイルスMorris Wormを放流したことで悪名高いですが,
これはインターネットで猛威をふるった最初のウイルスでした.

Wormについて: モリスは「実験的に作ったものがエラーのせいで流出したんだ」と主張しました.
彼は初めて「コンピュータ濫用法」によって起訴された人物になり,
1990年に,3年の懲役と400時間の公共奉仕と罰金120万円を言い渡されました.

Viawebについて: モリスはPaul Grahamと共に
オンラインストアを作るツールのためのベンチャー企業 Viaweb を立ち上げました.
Viawebのツールが革新的だった点は2つ: 初の「webアプリケーション」であり,
またほとんどがLispで書かれていました.
モリスはCで書かれた注文システム(DBなどのバックエンドか?)に携わりました.

MITについて: モリスは現在MITのassistant professorをしており,
並列・分散OSのグループで研究をしています.

ttp://www.pdos.lcs.mit.edu/~rtm/  こいつ
0877876NGNG
:s/3年の懲役/3年の執行猶予/
0878デフォルトの名無しさんNGNG
LISPってさ、メルヘンだよね
メンヘルじゃなくて

括弧がレインボーアイランドつーかさ、
コード書いてると楽しくなってくるよ
コードがデータで
データがコード?
あひゃ、こりゃ麻薬だね
0879デフォルトの名無しさんNGNG
Schemeほど洗練された高級言語はみたことないぜ
quoteの発明がなかったらここまで信仰しなかったが
0880デフォルトの名無しさんNGNG
MITの魔術師本の、Instructors Manualって方を持ってる人いる?
Exerciseの答えとかも載ってるのかな。
0881デフォルトの名無しさんNGNG
>>874-875
なるほど、古き良き時代とは、なんでも手作りできた自由な時代のことですか。
萩谷先生も、自分はCプログラマであり、本物の言語はCのみだと言っていたけど、
そういう時代への懐古を込めていると考えれば納得がいくなあ。
http://nicosia.is.s.u-tokyo.ac.jp/pub/essay/hagiya/7bits/saredo

湯浅先生の『入門 Scheme』によると、湯浅先生の周りでは
? を「ピー」と発音しているそうな。
例)zero? --> ゼロピー
0882デフォルトの名無しさんNGNG
>>879
どの Lisp にも quote はあると思うが、なぜ Scheme だけを名指しするのだ?
Scheme の他の Lispと比べて良いところは、何といっても名前空間と継続だと
思うが。
0883881NGNG
訂正 湯浅先生の本は
× 『入門 Scheme』
〇 『Scheme 入門』
0884デフォルトの名無しさんNGNG
継続ベースのウェブアプリケーションサーバって流行ってるの?
Kahua や UnCommon Web は既出だけど、他にもいっぱい。

Seaside (Smalltalk)
http://www.beta4.com/seaside2/

UnCommon Web (CL)
http://www.common-lisp.net/project/ucw/

Kahua (Scheme)
http://www.kahua.org

Cocoon (JavaScript)
http://wiki.apache.org/cocoon/WhatIsFlow

Chris Double の Weblog のまとめ。
http://radio.weblogs.com/0102385/2003/08/30.html

Perl, Python, Ruby にもありそう。
0885デフォルトの名無しさんNGNG
>>884
http://d.hatena.ne.jp/sumim/20040414
0886デフォルトの名無しさんNGNG
(car member)などでリストの要素を呼び出した時に
自分がリストの何番目にいるのかを簡単に知る方法はないでしょうか?
0887デフォルトの名無しさんNGNG
(define (foo hoge member) (- (length member) (length (memq hoge member))))
0888デフォルトの名無しさんNGNG
>887
thx!
0889デフォルトの名無しさんNGNG
片側リストだからしょうがないけどmember/assoc系って効率悪いよね。
それでもscheme使ってるうちに>>887の様なコード見てもだいぶ平気になったよ。
連想配列は標準で入れて欲しいなあ。
0890デフォルトの名無しさんNGNG
> 片側リストだからしょうがないけどmember/assoc系って効率悪いよね。
「片側リスト」じゃなかったらどう効率良くなるんですか?
0891デフォルトの名無しさんNGNG
しばらくやってりゃ、要素数が少ないときの実行・開発効率は
member/assoc系で十分採算が取れていると気付く罠。
0892デフォルトの名無しさんNGNG
ベンチとったことあるが、要素数がせいぜい10個くらいなら
assocの方が速かったな。漏れのハッシュの実装がタコだった
だけかもしれんが。
0893デフォルトの名無しさんNGNG
(激しく既出かもしれませんが。。)
なぜ Common Lisp は関数と変数とは名前空間が違うのでしょうか?
Scheme の様に同じだとシンプルだとおもうんですけど、
実用上の利点があるのですか?
0894デフォルトの名無しさんNGNG
宗派が違うから
0895デフォルトの名無しさんNGNG
いまさら引き返せないから
0896デフォルトの名無しさんNGNG
昔の Bit に『名前空間が同じだと、定義した関数を一瞬で失う危険性がある、同じにすると simple になるのだが…』とかなんとかそういう文が載っていた記憶が…
0897デフォルトの名無しさんNGNG
一瞬で失うだと!!!??
意味分らん
0898デフォルトの名無しさんNGNG
コンソールからぽちぽちと直に定義した関数を間違って消しちゃう危険性か?
だとしたらやっぱり尻尾のような仕様だな。
この点に関してはCommonLispはサル。
0899デフォルトの名無しさんNGNG
Common Lispは、関数、変数、クラス、パッケージ、型、リスタート、メソッド
などを別の名前空間(symbolからobjectへの関連を集めたもの)を使って管理して
いるけど、Schemerから見ると、これらを全て1つの名前空間で管理するのがいいと思う?
0900デフォルトの名無しさんNGNG
全部一緒にしちゃうのはやりすぎだけど、関数と変数くらいは一緒であって欲しい。
0901デフォルトの名無しさんNGNG
>>899
リスタートってこの文脈では聞いたことないんですが何ですか?

>>900
関数と変数だけ一緒で他は別々がいいってことだと
「シンプルに統一された美しいルール」にはならないけどいいの?
0902デフォルトの名無しさんNGNG
現在AI関係ではばをきかせているのはCommonLisp? Scheme? ほかの方言? それとも、まったくほかの言語?
0903デフォルトの名無しさんNGNG
>>901
リスタートはコンディション機構に用意されている機能。
名前と関数群(主処理、説明表示、ユーザとの対話)を動的に結びつけるマクロrestart-bind
が基本機能。よくあるのはrestart-caseマクロで、名前やいくつかの機能が付いた大域ジャンプの
着地点として使う場合。

デバッガに入ったときに、
"変数fooの値としてcons型が期待されていたのに、1が入っていますた。
次の選択肢から選んでね。
1: fooに値を入れ直す(store-value)。
2: 無視して進む(continue)。
3: トップレベルに戻る(abort)。"
なんて、メニューがでるでしょう。これは、そのときアクティブなリスタートを
検索して、それぞれの説明表示関数を呼び出して、動的に生成されたメニューだったり
します。各選択肢が1つのリスタートによって実現されているのね。そんで、
ある選択肢が選ばれたら、そのリスタートの対話用関数が呼ばれると。


名前空間が別に用意されているのは、あと、method-combinationもそうだね。


>>902
日本では、人工知能といえばPrologが有力だと聞きました。ICOTも並列Prolog
を開発していたよね。現在のAI関連のことは知らないけど。
0904デフォルトの名無しさんNGNG
私は >>899 あたりは全部一緒にしちゃいたいな。
なるべく統一したい。
0905デフォルトの名無しさんNGNG
CommonLispの仕様って今後変わったりするの?
いままで仕様変更ってあった?
0906デフォルトの名無しさんNGNG
ANSI X3.226-1994 が最初かつ最新
0907デフォルトの名無しさんNGNG
>>899
symbol から object へ対応させるとき、object の種類による複数の対応はいらないけど、
symbol から object への対応表は複数あってもよいと思う。
簡単に言えば、モジュールとかパッケージシステムのようなもののこと。
0908デフォルトの名無しさんNGNG
(assoc :key alist) の cdr を取るの マンドクサ
0909デフォルトの名無しさんNGNG
plistなら?
0910デフォルトの名無しさんNGNG
assocdr でも作っとけ。
0911デフォルトの名無しさんNGNG
cdassoc
0912デフォルトの名無しさんNGNG
独習LISPとかでないかなーw
0913デフォルトの名無しさんNGNG
nil
0914デフォルトの名無しさんNGNG
#f
0915デフォルトの名無しさんNGNG
*** ERROR: unbound variable: 独習LISP
0916デフォルトの名無しさんNGNG
(define (独習LISP) (独習LISP))
0917デフォルトの名無しさんNGNG
Paul Graham の "ANSI Common Lisp" は「独習 Lisp」みたいな感じじゃないか。
0918デフォルトの名無しさんNGNG
nil
0919デフォルトの名無しさんNGNG
名前空間に付いて興味深い話が聞けたんで避けてたけど、CMUCL Mac OS X 版がマージされますた。
これで世代別 GC の (非 SPARC) RISC CPU への移植 --> (SBCL で) スレッドの実装と行くと嬉しいな。
0920デフォルトの名無しさんNGNG
>>917
amazonの書評では2人とも「入門向きではない」的なことを書いているけど。。。。
0921デフォルトの名無しさんNGNG
>>907
>symbol から object への対応表は複数あってもよいと思う。
>簡単に言えば、モジュールとかパッケージシステムのようなもののこと。
Common Lispのパッケージシステムは、文字列からシンボルへの複数の対応表を
扱う仕組みだけど、Schemeのモジュールはシンボルからオブジェクトへの複数の
対応表を扱う仕組みとして理解していい?

つまり、シンボルのバリューセルがモジュール毎に切り替わるということかな。
Emacsのバッファローカル変数みたいな感じかな。
0922デフォルトの名無しさんNGNG
Schemeにはまだ標準となるモジュールシステムがありませんよね
0923デフォルトの名無しさんNGNG
R6RSにはモジュールが入るとか入らないとかいう噂があったな。SRFIにはなってるの?
あと既存の処理系が独自に実装しているモジュールシステムはあるよね。
0924デフォルトの名無しさんNGNG
(新しいエッセイの翻訳が来ましたage)
0925デフォルトの名無しさんNGNG
>>921
Scheme の symbol 自体には value cell は無いと考えた方がいい。
モジュールというか「環境」は、symbol をキーとし object を値とするハッシュテーブルのようなもの。
0926デフォルトの名無しさんNGNG
変数なんかないんだ。環境だけがある。
0927デフォルトの名無しさんNGNG
Schemeのマクロよく知らないんですけど、再帰的にマクロ定義するにはどうしたらいいんでしょう。
とりあえず macroexpand使ったらできたんですけど、CommonLispならそんなことしなくても
いいんですよね。
0928デフォルトの名無しさんNGNG
Schemeのsymbol自体にvalue cellがないというのはR5RSから導かれること?
Hyper Static Environmentなら確かにvalue cellは完全に不要だけど、
R5RSのあいまいなtop levelの定義ではどうも混乱してしまう。
http://c2.com/cgi/wiki?HyperStaticGlobalEnvironment
0929デフォルトの名無しさんNGNG
>>920
確かにあの本だけで入門は難しいかも。最初に読んだ Common Lisp 本が ANSI Common Lisp
だったけど、その時は既に CLHS とか CLtL とか知ってたからなぁ。
0930デフォルトの名無しさんNGNG
>>920 >>929
私はANSI Common Lispで入門しましたが、あれでよかったと思っています
(さすがにあれでCommon Lispを第一言語とするのは無理でしょうけど)。
Lispで何ができるのかを教えてもらったので、
今では必要に応じてHyperSpecを調べれば何とかなるようになりました。
;; と言っても学生なのでリアルの「仕事」をしたことはないし、
;; そもそもまだレベルの低いプログラムしか書いたことがありませんが...

でも、その後に学んだ関数型言語の知識も大きいかも知れません。
やはり純粋な関数型言語は(マルチパラダイムのLispと違って)前面に押し出す特徴があるから、
「ここは関数的に書くべきだな」という感覚とか、イディオムなんかはそっちの方が学びやすかったです。
;; もちろん、マルチパラダイムで柔軟なLispだからこそそういう知識が役立つんですが。


Grahamの新しいエッセイ、考えさせられることが多くてためになります。
ttp://www.shiro.dreamhost.com/scheme/trans/gh-j.html
> 私が思い付く全ての偉大なプログラマのうち、進んでJavaを書いている人物は一人しかいない。
Goslingのことかぁぁぁ!?
0931デフォルトの名無しさんNGNG
Steele でしょ。Richard P Gabriel も Sun に居たと思ったけど。
0932デフォルトの名無しさんNGNG
XPでSLIMWを使おうとするとどういう方法がありますか?
いろいろやったができないよ。
0933デフォルトの名無しさんNGNG
>>930
エッセイっていうか、OSCON 2004 の基調講演だよね。
言ってることはわからなくもないけど、ちょっと電波飛ばしてねーか? と
思ってしまった俺は、きっとハッカーではないのだろう。
0934デフォルトの名無しさんNGNG
>ちょっと電波飛ばしてねーか?
どの辺?
0935デフォルトの名無しさんNGNG
>>934
すごいハッカーになることが、人生の勝者であるかのように語っているところ。

確かにそういう面もあるかもしれないけど、そのハッカーってのはかなり特殊な
人種なわけで、彼等の特殊性は as is のまま、周囲が彼等に合わせるべき、
理解すべきとしている論調がちょっとね。

> 実際、CobolやJavaが最も人気ある言語だというような統計は誤解のもとでさえ
> ある。 何が最高の道具かを知りたいなら、我々が見なければならないのは、
> ハッカーが自由に選べる際に、つまり、彼ら自身のプロジェクトに、 何を選ぶ
> かということだ。この質問をしてみれば、既にオープンソースのOSが 圧倒的
> なシェアを占めており、一番の言語はたぶんPerlだということに気づくだろう。

こんな馬鹿げたことを書いてるのにもゲンナリした。最高だろうが最低だろうが、
道具は道具に過ぎない。問題は何を作るか、だと思うんだけどねぇ...
0936デフォルトの名無しさんNGNG
一番のOS アセンブラで作った自作のOS
一番の言語 アセンブラで作った自作の言語
0937デフォルトの名無しさんNGNG
「うんうん、そうだ」と自己満足的に共感するか、
「あっそう」で済ませてほっぽりだすかの
二通りしか感想のでてこない文章だな。
0938デフォルトの名無しさんNGNG
>>935
論点そのものを否定してどうするw

ま、言いたいことは分かるけどね。
だいたいハッカーってのは

「手段のためなら目的を選ばないという、どうしようもない奴」

が多いからな。何を作るかなんて眼中に無いのよ。
強いて言えば「手段=道具」を作りてえなとなるわけで。
0939デフォルトの名無しさんNGNG
人気のない言語を使ってるor作ってる奴の自己弁護なだけでは?
0940デフォルトの名無しさんNGNG
手段の目的化、それ即ち趣味なり
0941デフォルトの名無しさんNGNG
>>935
>すごいハッカーになることが、人生の勝者であるかのように語っているところ。
実際Paul Grahamにとってはそうなのだと思う。

ttp://www.blog.net/nerds-jp.htm
ここでもオタクのが偉い、みたいなこと言ってるけど、実際アメリカに住んでたら、
そういう価値観持って胸張ってないとやってけなかったのかも。
0942デフォルトの名無しさんNGNG
>>938
そうだよね。それでも喰って行けるくらい飛び抜けていればいいんじゃない?

Lispじゃ喰って行けないっていうけど、実際はshiroさんや黒田さんみたいに仕事にでき
ちゃう人もいる。大学勤めならどんな言語をつかって研究しようが教えようが誰にも文句は
言われない(言わせない)しね。ふふ。
0943デフォルトの名無しさんNGNG
>>942 研究の方はまだ大丈夫だけど、教える方は就職率という錦の御旗で…。
0944デフォルトの名無しさんNGNG
>>942
>誰にも文句は言われない(言わせない)しね。

そしてある日、それは単なる自分の思い過ごしだった事に
気づかされる日が来るんだよね。ふふ。
0945デフォルトの名無しさんNGNG
お、日本でも出版されるみたいだね。

>なお、書籍版"Hackers and Painters"の邦訳はオーム社より刊行予定。

>>944
気付かなかった振りではダメですか?
0946デフォルトの名無しさんNGNG
>>945
まじっすか!
なんだよshiroさん。あなうんすshiroよ。
0947デフォルトの名無しさんNGNG
CMU CL の19aリリースのアナウンスってないのでしょうか?
ディレクトリ下にブツはあるようですが・・・
ftp://ftp.common-lisp.net/pub/project/cmucl/release/19a/
0948デフォルトの名無しさんNGNG
なぜ S 山 euske というお方の日記には,変わった用語が使われているのでしょうか.
Lisp で悟るとあのような日記を自然と書くことができますか?
コンピュータサイエンスの教授にはなぜあのような人が多いのでしょうか?
0949デフォルトの名無しさんNGNG
>>947
7/31 ころアナウンスするよって書いてあった気がするけど、まだみたいね。
バイナリはそれでオケなはず。
0950デフォルトの名無しさんNGNG
AS/400なんて、モノとしては非常に素晴らしい製品なのに、
なぜ悪い道具というレッテルを貼られてしまっているのだろう。

単に、自分たちが慣れ親しんでいるUNIX Like OSと似ていないから
というだけ?
0951デフォルトの名無しさんNGNG
http://www.cons.org/cmucl/news/index.html にアナウンス出てますね。
0952デフォルトの名無しさんNGNG
もうすぐ次スレか。

【普通のやつらの】CommonLisp Scheme Part11【上を逝け】

でどうよ。
0953デフォルトの名無しさんNGNG
変なコメント付けて厨臭くしなくてもいいよ
0954デフォルトの名無しさんNGNG
>>952
かっこ悪すぎ。
0955デフォルトの名無しさんNGNG
>>950
自分で底の底までいじれないからじゃない?
AS/400の中の人になれば別なんだろうけどさ。
0956デフォルトの名無しさんNGNG
MacもPCに比べればクローズドだよな。

やっぱりあれだよ。70年代からコンピュータに
どっぷり浸かってた人ならIBMをよく思うのは無理だろ。
またIBMがLinux担いだところで、その魂胆の方が先に見えて
しまうんだろうな。
0957デフォルトの名無しさんNGNG
【普通のスレの】CommonLisp Scheme Part11【上を逝け】
0958デフォルトの名無しさんNGNG
Lisp Scheme Part11
0959デフォルトの名無しさんNGNG
>>957
かっこ悪すぎ。
0960デフォルトの名無しさんNGNG
11traP emehcS psiL
0961デフォルトの名無しさんNGNG
(thread '((common lisp) (scheme)) :part 11)
0962デフォルトの名無しさんNGNG
>>961
あー、先を越されてしまったが、もっとシンプルに
'(Lisp Scheme Part11)
0963デフォルトの名無しさんNGNG
common-lisp-&-scheme-part-11
0964デフォルトの名無しさんNGNG
Revised^11 Thread on Scheme
0965デフォルトの名無しさんNGNG
'(thread (Lisp . Scheme) (part . 11))
0966デフォルトの名無しさんNGNG
CommonLisp Scheme Part11でいいんじゃないの?スレタイは式じゃなくて文字列じゃん。
;;「キターっ」て、>>947のこと?
0967デフォルトの名無しさんNGNG
次スレ
CommonLisp Scheme Part11
http://pc5.2ch.net/test/read.cgi/tech/1091456033/
0968デフォルトの名無しさんNGNG
clisp の win32 版を,日本語ディレクトリ以下で使う方法を教えてくだされ.
ext:cd とか load ができないのだよ.
OS は WindozeXP.いちおう lisp で書いとけば
環境に依存しないだろうと思ったのに,
windoze で日本語ユーザー名で My DQNments しか使えないので...
0969デフォルトの名無しさんNGNG
>>968 文字コードの設定はちゃんとしている?
0970デフォルトの名無しさんNGNG
Graham氏はJavaに対して対抗意識剥き出しにしてるが、
CommonLispやSchemeの普及を阻害してるのは、本当は
PerlやPythonだと思う。現代版Cobolに対してLispの
優位性をアピールすることにどんだけの意味があるのか。
0971デフォルトの名無しさんNGNG
>>970
それがねぇ。Scheme教えようとしても、「就職に役立つのはJava」なんて
言われちゃう世の中なんですよ。
0972デフォルトの名無しさんNGNG
>>971
最強の言語というのがあって,それは使っている人が多いはずで,
それさえ身に付ければ十分,という伝説のせいでしょうか.
0973デフォルトの名無しさんNGNG
Javaは平均的プログラマー向けにデザインされた言語。
そうゴスたんが言ってたよ。
0974デフォルトの名無しさんNGNG
http://groups.google.co.jp/groups?dq=&group=comp.lang.lisp&selm=mkhdrk2jtk.fsf%40*n*o*s*p*a*m*franz.com

Franz のセミナーのやつだよね。
0975デフォルトの名無しさんNGNG
>>974
すげ…書いてあることがサッパリ理解できんが
何か格好良い事だけはわかった
これが Lisper の考えるレベルかしら…おれには無理かしら
0976デフォルトの名無しさんNGNG
UFFI が clisp に対応していないとは,一体どういうことかね?
0977デフォルトの名無しさんNGNG
>>971
就職の面接で「Scheme使えますよ」と言ってみたら
「Lispみたいなやつだっけ?」ぐらいの反応しか帰ってきませんでした。orz
0978デフォルトの名無しさんNGNG
>>977
その答えが返ってくるだけまだよい方では・・・
0979デフォルトの名無しさんNGNG
>>976 「clispのFFIがUFFIよりもっと抽象化されているから」という答えをclispの
作者がしていました。
が、clisp と UFFI でぐぐるとたしかpascalさんという人が書きかけたclisp用UFFIが
あったとおもう。
0980デフォルトの名無しさんNGNG
>>979
( ・∀・)つ〃∩ヘェーヘェーヘェー.サンクスコ.
0981デフォルトの名無しさんNGNG
埋まる前に落ちそうだね。

(call/cc (lambda (c)
(http://pc5.2ch.net/test/read.cgi/tech/1091456033 c)))
0982デフォルトの名無しさんNGNG
むしろ新スレの方が落ちそう。
0983デフォルトの名無しさんNGNG
埋め質問。
Scheme(Gauche)でCのsizeof相当の処理は可能ですか?
表面的にはchar/short/long/多倍長の違いが見えないので難しそうですが。
0984デフォルトの名無しさんNGNG
何の size のことなのか?
それをどう使おうというのか?
0985デフォルトの名無しさんNGNG
>>983 意味と意図がボクもよく分からない。

とりあえず Gauche での扱いを説明しておくと、文字と小さな整数は即値。
文字は wchar だと思っとけばいい。小さな整数の範囲は、long の範囲より
若干狭い。

昔の scheme では、文字が整数だったけど、今は別。

(char? #\a) => #t (char? 100) => #f (char? 1000000000) => #f
(fixnum? #\a) => #f (fixnum? 100) => #t (fixnum? 1000000000) => #f
(exact? #\a) => #f (exact? 100) => #t (exact? 1000000000) => #t

もしかして、ユニフォームベクタ使いたいのかな?
0986デフォルトの名無しさんNGNG
ユニフォームベクタで解決しました。
ttp://www.shiro.dreamhost.com/scheme/gauche/man/gauche-refj_207.html#SEC230
もろにこの部分。すんません、次からはちゃんとマニュアル内探します。
0987968NGNG
>>969
文字コードのちゃんとした設定というのが分かりません.
とりあえず思いついたコーディング名を引数にしたりしました.
自宅のマシンではないのでメモがないんです.
lisp がないと私はただの豚なんです教えてくださいぃぃ.m(__)m
0988デフォルトの名無しさんNGNG
>>987
ttp://clisp.cons.org/impnotes.html#encoding

このへんでしょうか。
0989デフォルトの名無しさんNGNG
Windows cygwin版clisp 2.31での話。
clisp -E ASCII は認識されて*default-file-encoding*, *pathname-encoding*,
などが、デフォルトの#<ENCODING CHARSET:ISO-8859-1 :DOS>から#<ENCODING CHARSET:ASCII :DOS>に
変更されました。

しかし
clisp -E ja_JP.SJIS
は何の効果もないもよう。

トップレベルで
(setq shift-jis (make-encoding :charset 'charset:shift-jis :line-terminator :dos))
(setq *default-file-encoding* shift-jis)
(setq *pathname-encoding* shift-jis)
(setq *terminal-encoding* shift-jis)
として、
(ext:cd "/cygdrive/c/マイ ミュージック")
とすると、
*** - PARSE-NAMESTRING: syntax error in filename "/cygdrive/c/マイ ミュ/" at position 12
とエラー。

(parse-namestring "マイ ミュージック")とすると
*** - PARSE-NAMESTRING: syntax error in filename "マイ ミュージック" at position 0
とエラー。
"マイ ミュージック"はちゃんと9文字として認識されています。

また、(setq *terminal-encoding* shift-jis)をすると、
(format t "~S~%" 'a) => ~S~%
というバグが発現しました。

イヤ〜ンな感じ。俺のやり方がタコなだけだといいんだけど。
レス数が950を超えています。1000を超えると書き込みができなくなります。