Lisp Scheme Part18at TECH
Lisp Scheme Part18 - 暇つぶし2ch249:デフォルトの名無しさん
07/09/30 20:25:27
>>246
ここに全部書いてあるよ
URLリンク(www.r6rs.org)

250:デフォルトの名無しさん
07/09/30 20:30:48
個人的な感覚では、ocamlは型にうるさいschemeって感じだけど、
haskellは全然別物って気がしてる。
haskellは入門書を読んで、ちょろちょろ書いてみる程度しか知らないが。


251:デフォルトの名無しさん
07/09/30 20:41:40
R6RSでたんだ。知らなかったよ。
どこが変わったのかな・・・

252:デフォルトの名無しさん
07/09/30 21:17:23
REPL が無くなったんだっけ? >> R6RS

253:デフォルトの名無しさん
07/09/30 23:12:29
WindowsのUIがまともに使えるLispってACL以外にあるのけ?


254:デフォルトの名無しさん
07/09/30 23:31:48
>>253
>>180

255:デフォルトの名無しさん
07/10/01 00:15:59
つ LispWorks

256:デフォルトの名無しさん
07/10/01 00:21:12
分散処理のライブラリを書いてたらLispっぽくなってきた
/( ^o^ )\なんてこったい

257:デフォルトの名無しさん
07/10/01 00:29:05
>>254
Corman、日本語扱えるようになったの?

258:デフォルトの名無しさん
07/10/01 00:42:12
日本語っつーかunicode対応してないの?

259:デフォルトの名無しさん
07/10/01 00:52:46
>>256
グリーンスパンの(ry

260:デフォルトの名無しさん
07/10/01 01:26:32
>>249
㌧クス!

261:デフォルトの名無しさん
07/10/01 19:53:54
なんで誰も>>204に「“一寸”ですよ」と教えてあげない件

262:デフォルトの名無しさん
07/10/02 00:32:38
宣言的という事がよくわかりません。どうしたらいいですか。
タコな質問ですみません。

263:デフォルトの名無しさん
07/10/02 03:01:18
処理の手順を書くのは手続き型言語で良いんだけど
その中でも、何かを求める式を考えるときは Scheme を使う俺
手続き型言語で複雑な式は考えたくない

264:デフォルトの名無しさん
07/10/02 22:06:16
しっかしLispってマイナーだよね…
誰も知らんぞ

265:デフォルトの名無しさん
07/10/02 22:13:15
どんなとこに居るんだよw

266:デフォルトの名無しさん
07/10/02 22:30:38
>>264
中学高校のパソ部ですか?ww

267:デフォルトの名無しさん
07/10/02 22:32:52
このつまらない流れは自演なの?

268:デフォルトの名無しさん
07/10/03 00:37:23
しっかしLispってマイナーだよね…
×誰も知らんぞ
○誰も開発に使ってないぞ

269:デフォルトの名無しさん
07/10/03 00:38:27
Lispなら聞いたことあるくらいは言ってもらえる。
Schemeとなると更に知名度下がるけど。

270:デフォルトの名無しさん
07/10/03 00:50:54
俺の周りの奴には一通りプログラミング言語の歴史を説明しておいたから
Lisp を知らない人は居ない。まあ憶える必要の無い言語くらいに思われている
みたいだけど。

271:デフォルトの名無しさん
07/10/03 01:11:04
これを見せればOK\(^o^)/
URLリンク(www.asahi-net.or.jp)

272:デフォルトの名無しさん
07/10/03 01:13:30
URL切れちゃった/(^o^)\
URLリンク(www.asahi-net.or.jp)

273:デフォルトの名無しさん
07/10/03 01:20:20
次からテンプレに貼ります。

274:デフォルトの名無しさん
07/10/03 01:23:52
>>272のリンクにあるみたいにLispがそんなにすげーなら
なんで>>268みたいなことになるんだ?
逆に言えばLispって誰も使わないってことは…

275:デフォルトの名無しさん
07/10/03 01:35:13
Lisperはジェダイかニュータイプなんだよ。

276:デフォルトの名無しさん
07/10/03 01:39:46
>>274
凄すぎて普通程度の脳みそだと使いにくいってことじゃね?

277:デフォルトの名無しさん
07/10/03 01:52:47
>>274
Lisperは一向に完成する見込みのない「LISP以上の何か」を作るのに忙しい



278:デフォルトの名無しさん
07/10/03 08:10:41
マジレスすると、仕事でプログラムやってる奴の
ほとんどは仕事として淡々と与えられたものを使っているだけ。
プログラム自身に興味がある奴はごく一部。

279:デフォルトの名無しさん
07/10/03 08:24:13
programing言語を選択する managerには有り難味がわからない言語だからな。


280:デフォルトの名無しさん
07/10/03 08:43:56
Lispの凄さが真実なら、マネージャーにはすげーありがたい話だろ。
でも誰も使わないっていうんはつまりそういうことなんじゃね?

281:デフォルトの名無しさん
07/10/03 08:45:01
なんで日本政府は一般的にもっと教育、啓蒙しなかったのかな。
その尻拭いに日本政府が金出して安い開発環境作れよ\(^Λ^)/
Allegro高いから買えないんだよ/(^Λ^)\

282:デフォルトの名無しさん
07/10/03 08:46:45
頭のとんがったマネージャーが悪いんだなw

283:デフォルトの名無しさん
07/10/03 08:55:47
啓蒙しようとして先行き過ぎて第5世代がこけちゃったんだよ。
それにちゃんと国のお金で Kyoto Common Lisp (aka GCL) をつくってるじゃん。


284:デフォルトの名無しさん
07/10/03 08:59:37
そうでしたか。すみません\(^λ^)\

285:デフォルトの名無しさん
07/10/03 10:17:54
r5rs→r6rsのdiff解説ページありますか?

286:デフォルトの名無しさん
07/10/03 10:19:28
URLリンク(practical-scheme.net)

287:デフォルトの名無しさん
07/10/03 11:21:28
>>280
つまりそういうこと。
たまたま巡り合わせで一緒に仕事してるだけの玉石混合の面子の中に、
「全員が使いこなせること」を期待して投入できる言語じゃないんだな。
だからマネージャーにはLispは選べない。ほぼ全員が「できる奴」である稀な場合を除いて。
マネージャーに選んでもらえるように作られたJavaあたりとは、そのへん対極だね。

288:デフォルトの名無しさん
07/10/03 18:34:43
"Common Scheme"キタコレ

289:デフォルトの名無しさん
07/10/03 21:40:00
質問させてください。
gaucheでマクロを展開した結果を確認したいのですが、
macroexpandで完全に(展開できなくなるまで)展開されません。

例えば

(define-syntax my-let
(syntax-rules ()
((_ () . body)
(begin . body))
((_ ((var expr) . binds) . body)
(let1 var expr (my-let binds . body)))))

(macroexpand '(my-let ( (b 3)) (list a b)))
;;=> (#<identifier gauche#let> ((b 3)) (#<identifier user#my-let> () (list a b)))

という感じです。my-letが1段階しか展開されません。

完全に展開した結果を得るにはどうしたらよいのでしょうか?

290:デフォルトの名無しさん
07/10/03 22:14:15
>>287
しかしできない奴はとことんできないので、言語はあまり関係ないかも。
言語よりも開発を進めやすいツール・環境を整えられるかが大事だと思った。

そういう意味でJavaは選ばれやすいかもしれない。
Lispにチーム開発向けのツール類ってあるのかな。

291:デフォルトの名無しさん
07/10/03 22:20:24
Lisp信者が言うほどにLispが優れてるって証拠が出て来ないんだよね。
俺たちはLispが最高だって信じてるぜ!って話しでいいならそれでいいけど。

292:デフォルトの名無しさん
07/10/03 22:22:46
自分の周囲を一般化しすぎなんだろう…。
米軍とかスピンアウトしたロボティクス企業とかはいまだに使ってるし、
ちゃんとその手のエンジニアを募集している。
A. 自分の周囲でだれも使ってない → 世間でだれも使ってない
B. 自分の周囲ではマニアが趣味でやってる → 世間でもマニアしか使ってない
は飛躍しすぎだろう。人数ベースでいえば Java より使われていない事は事実だけど、
コンパイラメーカーがやっていける程度の需要はあるってこと。

293:デフォルトの名無しさん
07/10/03 22:23:16
勉強もしないでうわべだけ知ってるつもりになりたいだけならあきらめたほうがいいよ

294:デフォルトの名無しさん
07/10/03 22:30:56
>>291
別に優れてはいないと思うよ。自分で好きにいじくれるところが好きなんであって、
1. 速度ではアセンブラや C でチューニングしたものには劣る
2. 文字数単位での表記の簡潔さやライブラリの充実度では LL 言語よりすくない
3. ユーザー数は C/C++/Java/LL言語 あたりよりすくない
あたりなら大抵の Lisper/Schemer なら認めるところだろう。

少なくとも俺が Lisp をやめらんないのは自由さ、それだけが理由。
師匠の受けうりだが、他にもっといい言語や表記方法があれば速攻乗りかえるよ。

295:デフォルトの名無しさん
07/10/03 23:42:54
そのマイナー言語で何が達成されたのか?
その自由な言語で何が達成されたのか?
新卒の学生だって面接で聞かれるようなことなのに、Lisp信者が全然答えられないってことが問題なんだ。
Java,C++はいろんなところでたくさんの人の役に立ってる。
Perl,JavaScriptは業界標準だし、Rubyにはrailsがある。
同じ関数型言語のhaskellはpugsの実装を3ヶ月と経たずに達成した。
じゃあLispは一体何をもたらしたんだ?

296:デフォルトの名無しさん
07/10/03 23:44:35
>>289
macroexpandはよくわからんが、
そのマクロ自体がR5RS的には変じゃね?

(define-syntax my-let
(syntax-rules ()
((_ () body ...)
(begin body ...))
((_ ((var expr) binds ...) body ...)
(let1 var expr (my-let (binds ...) body ...)))))

たぶん、この辺の話題と絡んでくると思う。
URLリンク(practical-scheme.net)

なんか俺もあんまり理解できてないので詳しい人の見解が聞きたい。

297:デフォルトの名無しさん
07/10/03 23:48:00
本気で逝ってるの?釣り?

298:デフォルトの名無しさん
07/10/03 23:53:35
>>295
釣り師いいかげんうざいよ。それとも本気?
本気で知りたいならまず1年Lispを使ってみな。

残念ながらここは面接室じゃないんだよ。

299:あえてつられてみよう
07/10/03 23:59:34
>そのマイナー言語で何が達成されたのか?
我々のプロジェクトのプロトタイプをクライアントに承認させるに十分な性能を短期間で叩き出した
>その自由な言語で何が達成されたのか?
同上
>新卒の学生だって面接で聞かれるようなことなのに、Lisp信者が全然答えられないってことが問題なんだ。
小僧の人生経験なんか知ったことか
>Java,C++はいろんなところでたくさんの人の役に立ってる。
それを否定した事はいちどもねぇよ
>Perl,JavaScriptは業界標準だし、Rubyにはrailsがある。
LLが役に立つ分野を否定した覚えもないが?
>同じ関数型言語のhaskellはpugsの実装を3ヶ月と経たずに達成した。
それがどうした?
>じゃあLispは一体何をもたらしたんだ?
生まれてから今までいくつネタを提供したとおもっているんだ?
だいたいマジな理由なら最初に答えたよ。


300:デフォルトの名無しさん
07/10/04 00:03:33
米軍の兵站システムや軍事シミュレーション、ロボット制御で役に立ってるよ。
過去の実績というなら Prolog、ML、JavaScript、Haskell の実装をもたらした。
あと GUI 統合システムの先駆けで、ガベージコレクション技術を進歩させ、
ファミコン時代の開発環境を提供し、3D-CG 開発環境としてマリオ64などをもたらした。
あと Java 作者の Gosling や Guy L Steel、Java の世界に世代別 GC を導入した David Moon、
Ghostscript の作者 Peter といった分野で貢献してるね。そうか Richard M Stallman がいなけば GNU はなかったので GCC もなかったね。
まぁ、ひたすら難癖をつけるのが目的なんだろうけど…

301:デフォルトの名無しさん
07/10/04 00:06:22
あー有名人の名前を出すとよけい粘着否定したくなるか。300 は忘れてくれ。

302:デフォルトの名無しさん
07/10/04 00:06:52
Lisp を否定する物ではないけど、Lisp は常にプロトタイプの為の言語かもしれない、
とは割と本気で思う。Lisp が解くのは先端の尖った領域の課題で、
一般的に広まるようなものは、きっとLispでは解かれた後に別の言語で
書きなおされるんだろう。

303:デフォルトの名無しさん
07/10/04 00:08:57
Lispは継続的に宣伝してくれるSun並みの規模の企業いないだろ。
まずそれが第一の問題。

304:デフォルトの名無しさん
07/10/04 00:09:20
ていうかマジでもう答でてるよな。
自由で柔軟で強力で、ゆえに「言語の意味と生産性」が使い手の能力の高純度の反映となる言語。

だいたい、多くの人間に等しく効能を与えるタイプの言語じゃないことは散々触れられているのに、
ここに来てまだ
> Java,C++はいろんなところでたくさんの人の役に立ってる。
> Perl,JavaScriptは業界標準だし、Rubyにはrailsがある。
みたいな「たくさんの人が使うことがその言語の凄さ」という価値観から来る例をもってくるあたり、
いかに「人の話をまったく聞かずに、誰も俺に答えない誰も俺に答えないと連呼してる」かってのがよくわかる。

305:デフォルトの名無しさん
07/10/04 00:10:59
>>300
有名人云々はともかく、昔GCCをhackしていて、ターゲットアーキテクチャの定義とかがなんか
Lispっぽい言語で書いてあって驚いたことがある。Lisp(的な発想)が無ければあれだけ簡潔に
ポータブルなコンパイラを作るのは難しかったかもしれないね。

306:デフォルトの名無しさん
07/10/04 00:11:46
>>304
たぶんプログラムなんて書いたこともない人なんだろうね。

307:289
07/10/04 00:12:54
>>296
. bodyみたいな使い方は
URLリンク(www.ice.nuie.nagoya-u.ac.jp)
を見て知ったんですが、どうなんでしょう。

define-syntaxはdefine-macroより制約が多すぎてなかなか書けない……

308:デフォルトの名無しさん
07/10/04 00:13:14
>>300
OO, generics, reflectionの世界に果たした貢献も大きい。
今も昔もプログラミング言語の実験場の一つ。


309:デフォルトの名無しさん
07/10/04 00:14:51
一部の人間の宣伝文句の割りにはマイナーなのも事実。
ラテン語みたいなもんかなあ。

310:デフォルトの名無しさん
07/10/04 00:14:59
>>303
だけど、宣伝されて皆が興味を持つLisp、なんてありえると思う?
Lispは永遠にスーパーエンジニアの秘密兵器なんじゃないだろうか。
ま、おれはLispで凄いキラーアプリつくる予定だけど。

311:デフォルトの名無しさん
07/10/04 00:17:35
>>238

312:デフォルトの名無しさん
07/10/04 00:20:05
>>305
RMS の経歴を考えれば妥当でしょ。俺は↓のほうがびっくりした。
URLリンク(lispuser.net)
AoE II 遊んでただけど知らなかったわ。

313:デフォルトの名無しさん
07/10/04 00:22:55
慣れないうちは()の多さに目が疲れる
それを乗り越えれればきっとはまれる

314:デフォルトの名無しさん
07/10/04 00:23:01
KiczalesだってAMOPの中の人だもんなあ

315:デフォルトの名無しさん
07/10/04 00:25:49
最初気になった括弧が、段々ただの「紙の端」くらいにしか思わなくなってくるから不思議だ。

昔の自分は何故、閉じ括弧が連続している部分をあんなに不安げに見つめていたのか、
もううまく思い出せないよ。あんな箇所、全然見る必要無いのにな。

316:デフォルトの名無しさん
07/10/04 00:26:26
>>313
エディタの設定で括弧の色を薄くするという、なんともチープなハックもあるがw


317:デフォルトの名無しさん
07/10/04 00:29:33
ところで括弧の話が出たついでにおまえらに聞くが、R6RSの [ ] ってどう思う?
Lisp慣れてる人は「そんなの要らん」だろうけど、これで少しでも慣れない人に
わかりやすくなるならアリなのかな、とも思うのだが。

318:308
07/10/04 00:30:52
あら、ちょっと探している間にずいぶんと流れてる…
>>307
URLリンク(practical-scheme.net)

って探すのに15分以上かかったのね…

319:デフォルトの名無しさん
07/10/04 00:32:28
工学の為の工学か

320:デフォルトの名無しさん
07/10/04 00:32:39
>>317
おれは関数適用以外の括弧に[]つかうのはアリだと思うけど、
R6RSの投票結果ページにあった反対意見の中には、
処理系独自の拡張用に[]をとっておいて欲しい、というのもあった。
なるほどなあとも思った。

321:デフォルトの名無しさん
07/10/04 00:33:45
独自拡張は#~使えよ。

322:デフォルトの名無しさん
07/10/04 00:34:28
>>315
その不安感分かるw
そして慣れると段々とカッコが見えなくなってくる。脳での処理方法が変わるんだろうね。
>>317
初心者に何の助けにもならないと思う>>[]
別に()の数が減るわけじゃないし。「異様」なカッコだらけのLispプログラムに、
ちょっと違うカッコ付けたって、普通のプログラムになるわけじゃないし。

323:デフォルトの名無しさん
07/10/04 00:35:35
>>320
確か CLtL にも [ ] を(デフォルトでは)定義しない理由でそんなことが書いてあったな

324:デフォルトの名無しさん
07/10/04 00:35:51
>>317
最小にこだわってたんじゃなかったか?とツッコミたくなるね。[ ] をユーザーに解放しないなんてとんでもない。

つうか define-syntax もよー。チューリング完全ならいいってもんじゃねーだろ。
パターンマッチ + 実用上十分な衝突の回避を defmacro の上に実装してよって思うね。

325:デフォルトの名無しさん
07/10/04 00:38:16
KOKUBANに書ければどうだっていいんだよ

326:デフォルトの名無しさん
07/10/04 00:38:52
>>316
括弧の良さというのは表現の“軽さ”だと思うんだよね。あれ以上シンプルな記号はあまりない。
これが begin ~ end とか、XMLみたいな表記だったら、仮に論理的に同じこと書けても使い物にならんと思う。

327:デフォルトの名無しさん
07/10/04 00:39:35
その昔スーパー括弧閉じってのがあってですね。


328:デフォルトの名無しさん
07/10/04 00:40:53
>>327
パンチカードでは重宝であったw

329:デフォルトの名無しさん
07/10/04 00:43:13
支援機能つきエディタの発展とともに消えたんだよな >スーパー括弧

330:デフォルトの名無しさん
07/10/04 00:45:52
どんなことがあってもXSLTの再帰関数よりは簡潔です

331:デフォルトの名無しさん
07/10/04 01:25:55
vimですら、対応する括弧が常にハイライト表示なのに、
今時、括弧羅列が見にくいなんてあり得ないわ。

332:デフォルトの名無しさん
07/10/04 02:17:29
本とかで習うとそういう印象なのかもね

333:デフォルトの名無しさん
07/10/04 07:47:34
適切にインデントされてるのとインデントの部分に薄い縦線引いてくれるといいんだけどなぁ。>本


334:デフォルトの名無しさん
07/10/04 10:43:55
>>318
R6RSでそのへんの意味論が決定されたってことは、
R6RS的には後者もOKってことでいいのかな?

335:デフォルトの名無しさん
07/10/04 10:45:33
S式に対する意味論だからそうだね。
まあ以前でも . 使えない実装の方が珍しかっただろうけど。

336:デフォルトの名無しさん
07/10/04 12:56:53
C系から来た人間には、閉じ括弧を纏めちゃうのも疑問だったよ。
閉じ括弧は一つ一つ書いた方が判りやすいのに、って。
実際最初はそうやって書いてた。
今は閉じるのが楽だし慣れたけど。

337:デフォルトの名無しさん
07/10/04 13:57:22
まっとうなインデントの為されたソースなら、何がどう書いてあっても
(hoge (fuga ...
    (hage (higii 10 ...
      (ahya ...
    (pugera ...
このあたりの形で「骨組みの把握」は済んじゃうんだよね。「右っかわ」は殆どディテール専門。
だから閉じ括弧を纏めたほうがスッキリなんだろうな。
もちろん極論だけど、閉じ括弧はリーダが構造を捉える為のものであって、人間が構造を捉える為の
ものではない、という感じ。

これ、Pythonソースの見方に近いのかな? Python触ったことないけど。
少なくともC系のソースは、同じ「骨組みの把握」をするにも、もうちょっとこう、文のアタマ側とケツ側、
両方からじわじわ捉えていく感覚が必要になる。俺の場合は。

338:デフォルトの名無しさん
07/10/04 14:29:27
パイソンは;等を省略すると、
構文構造を追うものがインデントしかない。
だから構文解析から得た情報で、
正しいインデント処理をエディタに任せる書き方慣れていると、
いろいろと面倒な時もある。
インデントは人間が明示的に行う場面が多くなる。
行末で)や}や;の代りに、次の行でのインデント上げを行う。


339:デフォルトの名無しさん
07/10/04 22:36:18
それが良いんだよ。

340:デフォルトの名無しさん
07/10/05 02:31:10
工学のための工学とか頭悪すぎて笑った。


341:デフォルトの名無しさん
07/10/05 02:51:44
自演乙

342:デフォルトの名無しさん
07/10/05 17:26:29
Lisper/Schemerオナニー見せ合いきめえwwwwwwwwwwwwwwwww


343:デフォルトの名無しさん
07/10/05 19:22:42
オナニーすら出来ない技術者以前の厨が喚いてます

344:デフォルトの名無しさん
07/10/05 22:29:28
R6RSの日本語訳マダー?

345:デフォルトの名無しさん
07/10/06 18:33:04
Common LispでもSchemeでもない俺様Lispって今どれぐらいあるのかな
どこかに一覧無い?

346:デフォルトの名無しさん
07/10/06 18:36:11
いったいどうやってそんな一覧を作るんだよ。

347:デフォルトの名無しさん
07/10/06 18:43:56
そのオレ様リスプ使用者が集まってくれないと作りようがないんだがw

348:デフォルトの名無しさん
07/10/06 19:34:59
俺様リスプをつくるような奴が、一覧をつくるとか、そんな無駄なことをする人間だと思うのか?

349:デフォルトの名無しさん
07/10/06 19:44:43
"俺様"抽出は他の人で
URLリンク(www.dmoz.org)
URLリンク(www.dmoz.org)

350:デフォルトの名無しさん
07/10/06 21:38:29
Lisp処理系の作成って情報系じゃ普通に宿題で出るらしいね

351:デフォルトの名無しさん
07/10/06 21:47:01
たしかにMLで作った気がするなあ。しょぼいやつだったけど。

352:デフォルトの名無しさん
07/10/07 00:03:07
設定ファイルが必要になった->XMLで->なんか項目が増えすぎ->動的変更したくなった->なんかLispみたいになった->どうせならLispでいいじゃん->そのまま製品に

こういう事なら2度あった


353:デフォルトの名無しさん
07/10/07 00:15:29
Lisp使って仕事させてくれるなんて羨ましいな。
俺の会社じゃ絶対無理だ。「Lisp?何それ?それで書くと何人月減るのか証明しろよ」って言われる。
…やっぱschemeで仕事できる会社探すわ。

354:デフォルトの名無しさん
07/10/07 00:55:02
馬鹿だな、こっそり使うんだよ。とんがり頭の上司にバレた頃にはもう手遅れなのだ。

355:デフォルトの名無しさん
07/10/07 02:50:19
見付かったら
「これはXMLファイルですよ。<>の変わりに()を使うのがWeb2.0なんですよ?」
と言えばおk。

356:デフォルトの名無しさん
07/10/07 04:33:50
巡回構造のS式の印字表現(read/writeできる)てありますか?
なんかGaucheでは#なんとか#みたいなのを見た事ありますが、
一般的なんでしょうか。

357:デフォルトの名無しさん
07/10/07 04:35:21
すいません
巡回じゃなくて循環ですた


358:デフォルトの名無しさん
07/10/07 05:55:18
>>356
srfi なので一般的って言っていいんじゃないでしょうか。
URLリンク(srfi.schemers.org)

common lisp 由来ですね。
URLリンク(www.lispworks.com)


359:デフォルトの名無しさん
07/10/07 08:28:49
あ、SRFIにあるんすね。
こういうのって、相互参照してる場合どうなるのかなと。
(define x (list 'a 'b))
(define y (list 'c 'd))
(begin (set-cdr! (cdr x) y) #t)
(begin (set-cdr! (cdr y) x) #t)
(write-with-shared-structure x)
#1=(a b c d . #1#)
(write-with-shared-structure y)
#1=(c d a b . #1#)

やっぱこうなるか。
write-with-shared-structureで各々の変数を保存して、
後でread~で取り出せるかなと思ったんですが、
共有関係が消えてしまいますね。
(define x '#1=(a b #2#))
(define y '#2=(c d #1#))
みたいな事は可能なのかな。
完全に構造を保存する場合はセルをダンプするしかない?


360:デフォルトの名無しさん
07/10/07 08:37:11
(define x '#1=(a b . #2#))
(define y '#2=(c d . #1#))
の間違いです。
参照先が全部確定するまでread-with-shared-structureは結果を
保留する必要があるし、write~も一度に関係するリストを全て渡すか
しないと無理だから、このサンプルみたいなインターフェースじゃ無理ですね。


361:デフォルトの名無しさん
07/10/07 11:47:08
Lisper&Schemerの誰か、異論・反論よろしく

スレリンク(prog板:311番)
311 名前: 仕様書無しさん [sage] 投稿日: 2007/10/07(日) 02:56:19
> ではメッセージをちゃんとメッセージ(オブジェクト)として実装している言語はないか
> というとそんなこともなくて、古くは、メッセージングのOOの影響を受けて作られた
                   ~~~~~~~~~~~~~~~~~~~~~~
> ACTOR という言語(これは、メッセージングのOOから派生したアクター理論に基づいて
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> 作られました)では、メッセージもちゃんとオブジェクト(ACTOR ではアクターと呼ぶ)で
 ~~~~~~
> 表わされていましたし、最近の言語なら Io という言語で、同じくメッセージは
> 実体のあるオブジェクトとして内部的にも表現されている、という例があります。でも希有です。



362:デフォルトの名無しさん
07/10/07 11:57:52
Racter懐かしいな。「警官の髭は完成半ば」だっけ?

363:デフォルトの名無しさん
07/10/07 12:04:14
昔は「OOを思想からマスターしてオッサン技術者共を超えてやるぜ!」
とか思ってた。
で、CLOS勉強したら結局OOって単なるメソッドディスパッチなのね、
と思って萎えた…。


364:デフォルトの名無しさん
07/10/07 14:11:37
CLOS の記法は即物的で夢が無い

365:デフォルトの名無しさん
07/10/07 14:27:34
マルチプルディスパッチの夢は見ないのか?

366:デフォルトの名無しさん
07/10/07 14:36:43
>>364
だが、そこがいい

367:デフォルトの名無しさん
07/10/07 14:54:14
夢は無くとも簡潔さがある!効率がある!自由度がある!
…なんかLispが人気にならない理由が分かった気がする。

368:デフォルトの名無しさん
07/10/07 15:13:32
>>365
夜は:around methodに包まれて寝る。

369:デフォルトの名無しさん
07/10/07 16:19:38
人気がないのは新しくないからじゃね?

370:デフォルトの名無しさん
07/10/07 17:19:05
>>238

371:デフォルトの名無しさん
07/10/07 19:47:44
関数名で処理内容がわかりづらいのはどうにかしてほしいな
○○*とかprincとかprin1とか


372:デフォルトの名無しさん
07/10/07 19:54:56
まあそこらへんは……歴史が長い言語だからねぇ

373:デフォルトの名無しさん
07/10/07 19:58:52
OOは、実用的には呼び出し元の再利用と考えると良いと思う。

374:デフォルトの名無しさん
07/10/07 21:07:49
実用的には特に何も考えなくて良いだろう。

375:デフォルトの名無しさん
07/10/07 23:46:23
Lisp使えるからってオブジェクト指向がばっちりなわけでも無ければ、
SICPをちゃんと読んだわけでも無さそうだね。


376:デフォルトの名無しさん
07/10/08 00:01:47
>>375
おれはオブジェクト指向バッチグーだけど、
SICPにオブジェクト指向なんてあったっけ?抽象化はあったけど。

377:デフォルトの名無しさん
07/10/08 00:17:14
>>376
「~でもなければ~でもない」の意味も分からないのか

378:デフォルトの名無しさん
07/10/08 00:38:54
>>377
自分の句読点の位置を見直しましょう。

379:デフォルトの名無しさん
07/10/08 00:45:04
、< もうやめて!わたしの為に争わないで!

380:デフォルトの名無しさん
07/10/08 08:18:46
このタイミングでSICPを持ってくるのか
schemeキチガイは黒板と現実の区別がつかないのな

381:デフォルトの名無しさん
07/10/08 09:01:58
高度に発達した黒板は現実と区別がつかない。

382:デフォルトの名無しさん
07/10/08 09:35:14
オーオー、お前等楽しそうじゃん#AA略

383:デフォルトの名無しさん
07/10/08 10:25:39
>>380はLisp>schemeって考えてんのか?

384:デフォルトの名無しさん
07/10/08 10:28:45
不等号キター!

385:デフォルトの名無しさん
07/10/08 10:50:05
schemeとLispはイスラム教とキリスト教の関係なのか?

386:デフォルトの名無しさん
07/10/08 10:57:37
>>383
コンピュータで動かすことを考えればね。
黒板上なら別にそんなことはないと思う。

387:デフォルトの名無しさん
07/10/08 11:47:26
>>383
中置記法か。お前Lisperじゃないな

388:デフォルトの名無しさん
07/10/08 12:12:42
なんかこういう
URLリンク(www.prescod.net)
事を言っている人が居るみたいなんですが、
どうも的外れな気がするんですが…
皆さんどう思われますか?


389:デフォルトの名無しさん
07/10/08 13:28:54
CommonLispは土方専用だろ
洗練された知的階級の為のSchemeと同じスレで扱う事自体がおかしい

390:デフォルトの名無しさん
07/10/08 13:30:57
schemeはpythonとかと同じで教育用っつーかお試し用っつーかそういうもんだろ

391:デフォルトの名無しさん
07/10/08 13:33:41
↑土方乙。しかもPythonすら理解できてないのかwwwww

392:デフォルトの名無しさん
07/10/08 13:36:58
Common Lisp: 土方歳三
Scheme: 原田左之助

393:デフォルトの名無しさん
07/10/08 13:38:58
洗練された知的階級なんて言葉で自己言及した時点で洗練された知的階級じゃないよ!

ってことを身をもって明らかにするschemerならではの反面教師的教育なのです

394:デフォルトの名無しさん
07/10/08 13:40:05
教育用の言語使ってる割には頭悪そうだな

395:デフォルトの名無しさん
07/10/08 13:43:36
これから教育を受ける段階にある奴ってことだからね。

396:デフォルトの名無しさん
07/10/08 13:45:45
教育すら受けられない中卒Common Lisper

397:デフォルトの名無しさん
07/10/08 13:52:34
そもそも >>389 は Common Lisp も Scheme も使った事が無いんだから
放っといたら良いじゃん

398:デフォルトの名無しさん
07/10/08 15:13:52
つれないこというなよ

399:デフォルトの名無しさん
07/10/08 15:45:11
>383
仕様のサイズ的には合ってね?

400:デフォルトの名無しさん
07/10/08 15:49:15
SchemeはR6RSでかなり分厚くなったと聞いたが

401:デフォルトの名無しさん
07/10/08 16:51:33
それだけ不純になったのよ

402:デフォルトの名無しさん
07/10/08 17:19:43
>>388
斜め読みしただけだけど、やってることは S 式の標準的な書式の見た目を
XML 文書と比較してるだけなのかな。
だとすると
> XML is not S-Expressions
このタイトルは不適切だな。

403:デフォルトの名無しさん
07/10/08 17:33:39
S式はCSVみたいにRFCに定義されたりしないの?

404:デフォルトの名無しさん
07/10/08 17:37:24
ISLISPがRFCになってなかったっけ?

405:デフォルトの名無しさん
07/10/08 17:59:10
ISLISPって全然はやってないんだなw

406:デフォルトの名無しさん
07/10/08 19:11:14
>>392
Mormon Lisp (Ruby): まつもと ゆきひろ

407:デフォルトの名無しさん
07/10/08 20:28:44
CommonLisp+末尾最適化+継続 = 大方のSchemerは文句いわない
Scheme - 末尾最適化 - 継続 = 粗大ゴミ



408:デフォルトの名無しさん
07/10/08 20:42:00
つまり素のLISPはゴミって事?

409:デフォルトの名無しさん
07/10/08 20:42:29
CL = RedHat Linux
Scheme = Plan9

てな感じ

410:デフォルトの名無しさん
07/10/08 20:44:23
今となっては RHL はあんまりw

411:デフォルトの名無しさん
07/10/08 20:46:58
>>408
そりゃCommonLisp以前に戻るんだからしょうがないべよ
その他大勢の方言の一つでしかないんだもの。

412:デフォルトの名無しさん
07/10/08 21:06:18
CommonLISPは分別ゴミ


413:デフォルトの名無しさん
07/10/08 21:11:16
>>408
素のLispはただの理論だからなぁ。
道具として便利であるためには、当然肉付けが必要になるよ。

414:デフォルトの名無しさん
07/10/08 21:26:50
クロージャすらないようではゴミと言われてもしかたあるまい

415:デフォルトの名無しさん
07/10/08 21:28:27
>>414


416:デフォルトの名無しさん
07/10/08 21:35:07
>>414
つ FUNARG

417:デフォルトの名無しさん
07/10/08 21:43:34
CL = スイスアーミーナイフ
Scheme = 肥後の守

418:デフォルトの名無しさん
07/10/08 21:49:56
Lispとかけてイケメンととく。

419:デフォルトの名無しさん
07/10/08 22:03:51
その心は、


「かっこが大変よろしゅうございますw」

とかヌカスつもりじゃないだろーな?

420:デフォルトの名無しさん
07/10/08 22:12:48
あーそれ俺が言おうと思ってたやつなのに・・・ひどい

421:デフォルトの名無しさん
07/10/08 22:23:18
むしろ「カッコばかりで中身がありません」じゃないのか?

422:デフォルトの名無しさん
07/10/08 22:25:16
でも簡単にペアになれるんだぜ?

423:デフォルトの名無しさん
07/10/08 23:37:14
少数点以下多数ある数値少数第1位までにして、切り上げして出力する方法ってある?
20.767841011743453→20.8
処理系はgaucheで。

424:デフォルトの名無しさん
07/10/09 00:09:52
ほんとにそれだけしたいなら(10進で)10倍してceiling(かな?)でいいんとちゃう?
単純でわかりやすいし。

425:デフォルトの名無しさん
07/10/09 00:29:55
>>422
うまいこと言うなあ

426:デフォルトの名無しさん
07/10/09 21:15:28
>>422
ウホッ

427:デフォルトの名無しさん
07/10/09 23:32:08
>>424
ありがとうございます。出来ました。
もうひとつ同じような内容ですが、
例えば、-1.0という答えを-1.000という回答に小数点以下第3位まで出す場合はどうすればよろしいですか?
やはりgaucheで

428:デフォルトの名無しさん
07/10/10 00:10:43
URLリンク(www.premiumtv.12gbfree.com)

429:デフォルトの名無しさん
07/10/10 00:17:47
>>406
Moron Lispだと思った。

430:デフォルトの名無しさん
07/10/10 00:25:30
どうでもいいけど、S式でXML表現するときって名前空間はどうすんの?

431:デフォルトの名無しさん
07/10/10 00:27:11
>>429
それも正解。

432:デフォルトの名無しさん
07/10/10 00:49:07
>>427
かなり無理やりっぽいが…

(define (hoge kazu keta)
(let ((b (exact->inexact kazu))
(c (string-length
(number->string
(inexact->exact (round kazu))))))
(format #f "~v,,,'0,a" (+ c keta 1) b)))

(hoge 1 3)

もっとまっとうな方法がありそうな気がする


433:デフォルトの名無しさん
07/10/10 00:51:38
それってformatでパッとできないの?

434:デフォルトの名無しさん
07/10/10 01:18:31
>>430
コモンリスプならパッケージで桶

435:デフォルトの名無しさん
07/10/10 01:34:06
>>434
返信ありがとう。
URNとかも平気なのかな。
まあ、完全な同値変換はできないだろうけど。勉強してみる。

436:デフォルトの名無しさん
07/10/10 02:06:07
こんな表現にすればぁ
(tag :namespace (...) :attribute (...) :nodes (...))


437:デフォルトの名無しさん
07/10/10 05:10:29
>>430
A Lisp Based XML Parser
・LXML parse output format
URLリンク(franz.com)

438:デフォルトの名無しさん
07/10/10 05:14:27
追加
URLリンク(opensource.franz.com)

439:デフォルトの名無しさん
07/10/11 12:19:10
このスレを見ている人はこんなスレも見ています。(ver 0.20)
Bart's PE Builder スレッド 5枚目 [Windows]
懲りずに騙されて花火板にまで飛ばされたわけだが3 [花火]
【CFNM】ちんちん見~ちゃった☆Part14【えっ~!】 [game12tr]
uim スレッド 7 [Linux]
2ch特化型サーバ・ロケーション構築作戦 Part26 [2ch運用情報]

440:デフォルトの名無しさん
07/10/11 18:12:43
>>19
> Schemeで書かれた正規表現ライブラリ
> URLリンク(www.cs.rice.edu)

URLリンク(www.ccs.neu.edu)

441:デフォルトの名無しさん
07/10/14 21:19:32
gaucheのGauche-mingw-0.8.11+meadow使ってるんですが、日本語の扱いが上手くいきません。
(print "こんにちは")
だと
縺薙s縺ォ縺。縺ッ
って出てしまう。
どのようにすればよろしいでしょうか?


442:デフォルトの名無しさん
07/10/14 21:59:28
文字コード

443:デフォルトの名無しさん
07/10/14 23:04:31
>>441
set-buffer-file-coding-systemとset-buffer-process-coding-systemで設定。
どっちかっていうとemacsの設定の話だな。

444:デフォルトの名無しさん
07/10/15 18:23:55
文字列が定義されてるとき、その文字列の組み合わせを列挙して、その数も表示する関数(com k seq)を作ってます。(setq abcd (list 'A 'B 'C 'D))として、たとえば(com 3 abcd)を評価すると、
(ABC)
(ABD)
(ACD)
(BCD)
4
となります。
先頭を選んで残りからk-1個選ぶ。先頭を選ばず残りからk個選ぶ。というのを再帰で書けば出来そうというのは考えたんですが、うまくかけません。習ってるのはdefun cond if cons car cdr print list null setqとかで、これだけで書きたいです。
また要素のi番目を調べる関数(ith seq i)と、2つのリストを結合する関数(merg seq1 seq2)、リストに一つの要素を加える関数appは以前に作ってて、これは使えます。
どなたか教えてくれませんか?

445:デフォルトの名無しさん
07/10/15 20:27:47
>>444
Common Lisp 入門スレにヒントがでてたよ。どのくらいまで自力でできたの?

446:デフォルトの名無しさん
07/10/15 21:44:49
うーん。いろいろ書いてみたんですが、うまく書けなくて…

447:444
07/10/15 23:46:07
(defun top (seq tmp)
(print (app tmp (car seq)))
(cond ((null (cdr seq)) )
(T (top (cdr seq) tmp)))
(setq tmp NIL)
)
(defun comb (seq k)



(cond ((= k 1) (top seq tmp) )
((null (cdr seq)) )
(T (setq tmp (list (car seq))) (comb (cdr seq) (- k 1)) (comb (cdr seq) k)
)))




>(comb abcd 2)

(A B)
(A C)
(A D)
(B C)
(B D)
(C D)

K=2のときはうまくいくんですが、3以上のときがうまくいかなくて・・・
どうしたらいいのか・・・・



448:デフォルトの名無しさん
07/10/16 00:05:16
(defun comb (seq k)
(setq tmp NIL)
(comb2 seq k tmp)
)

(defun top (seq tmp)
(print (app tmp (car seq)))
(cond ((null (cdr seq)) )
(T (top (cdr seq) tmp)))

)
(defun comb2 (seq k tmp)



(cond ((= k 1) (top seq tmp) )
((null (cdr seq)) )
(T (setq tmp (app tmp (car seq))) (comb2 (cdr seq) (- k 1) tmp)
)))
こうしたら
(ABC)
(ABD)はでるようになりました。
先頭を選ばず残りからk個選ぶ部分がうまくできません。

449:デフォルトの名無しさん
07/10/16 00:22:15
(comb '(a b c d) 3)
=> ((a b c) (a b d) (a c d) (b c d))
みたいな関数を作って表示は別にしたほうがいいかもしれんね

450:デフォルトの名無しさん
07/10/16 00:26:24
>>449
一応表示は top関数で表示してます。

(defun comb (seq k)
(setq tmp NIL)
(comb2 seq k tmp)
)

(defun top (seq tmp)
  (print (app tmp (car seq)))
  (cond ((null (cdr seq)) )
   (T (top (cdr seq) tmp)))
)

(defun comb2 (seq k tmp)

(cond ((= k 1) (top seq tmp) )
    ((null (cdr seq)) )
    (T (setq tmp (app tmp (car seq))) (comb2 (cdr seq) (- k 1) tmp) (comb2 (cdr seq) k NIL)
))
としました。


451:デフォルトの名無しさん
07/10/16 00:26:55
結果は

[37]> (comb abcd 3)

(A B C)
(A B D)
(C D)
(B C D)
T
[38]> (comb abcde 3)

(A B C)
(A B D)
(A B E)
(C D)
(C E)
(D E)
(B C D)
(B C E)
(D E)
(C D E)
T
ここまでなんとかなりました。 あと先頭要素が加わってないやつに加えられれば良いんですが・・・・

452:デフォルトの名無しさん
07/10/16 00:27:48
comb2定義の最後の括弧が抜けました・・・

453:デフォルトの名無しさん
07/10/16 00:44:01
>>449
読み違いました。そういう手もありですね。
しかしどうやるのか・・・

454:デフォルトの名無しさん
07/10/16 01:02:20
まず紙にでも書いて整理しろよ
頭で想像できてない事をプログラムできるわけないだろ

455:デフォルトの名無しさん
07/10/16 01:05:14
紙にも書いてみましたが>>450のやつから進みません・・・

456:デフォルトの名無しさん
07/10/16 01:15:28
紙に書いても判らんなら、もう一度単純ケースの把握からやってみれば?
ABC 2のケースとか。
あと、リスト処理と考えるより単純な集合の比較の問題って思った方がいいぞ。
carとかnullとかリストオペレーターをそのまま使うんじゃなくて
問題に適合するように抽象化してみるとか。

457:デフォルトの名無しさん
07/10/16 01:28:25
ABC 2 だったら
A選ぶ場合
B選ぶ場合
AB
B選ばない場合
AC
A選ばない場合
B選ぶ場合
BC
B選ばない場合
なし
って感じですよね?でもプログラムだとうまくいかないんですよねぇ。

458:デフォルトの名無しさん
07/10/16 01:36:47
プログラム的に考えてみろよ
例えばビットの組み合わせ問題として解く

1) 記号が3種類なので3ビットで表す
A 001
B 010
C 100

2) 重複に注目しながら全パターンを列挙してみる
AB 011
AC 101
BA 011 x 重複
BC 110
CA 101 x 重複
CB 110 x 重複

答え 110 101 110 すなわち AB AC BC

459:デフォルトの名無しさん
07/10/16 01:44:52
ごめん
答え011 101 110 すなわち AB AC BC
ね。

ABCD 3のケースならビット1が3つあるパターン
A 0001
B 0010
C 0100
D 1000
ならば
ACD 1101
ABD 1011
ABC 0111
BCD 1110


460:デフォルトの名無しさん
07/10/16 03:10:09
>>450
再帰関数についてもうちょっと勉強しないと…

(defun comb (seq k)
(top (comb2 seq k))
) としておいて、comb2は、
kが0でなければ、
 seqから一つxを抜き出して、
 (comb2 (seqからxを除いたもの) (- k 1))の先頭にxを付け足すしたリスト
 を全てのxに対して行って、皆listして返す。
k=0ならNILを返す。

k-1の時の結果から、kの時の結果を作り出す部分と
k=0の時の結果から再帰関数を構成する。


461:デフォルトの名無しさん
07/10/16 08:10:19
>>458
それはわかるんですが。うーん
>>460
先頭にxをつけ加えたリストをすべてのxに対して行うって言うのが書けないんです。正直、言うと誰か書いてもらいたいです。一旦答えわかったら理解できるかもしれないです

462:デフォルトの名無しさん
07/10/16 10:55:02
再帰で書く。
(car seq)に対して行った結果を、(cdr seq)についてやった結果に付け加える。
nilになるまでやる。

463:デフォルトの名無しさん
07/10/16 14:20:44
やっぱりできないんで、答えお願いしてもいいですか

464:デフォルトの名無しさん
07/10/16 14:25:18
やっぱりできないんで、答えお願いしてもいいですか

465:デフォルトの名無しさん
07/10/16 14:31:04
>>258
r6rsでは、
> Characters are objects that represent Unicode scalar values.

ちょっと困ったのが、stringはseqence of characterだから、
サロゲートペアを含めるには、stringじゃなくてbytevectorにしないと、
r6rs準拠にならない。

466:デフォルトの名無しさん
07/10/16 14:31:59
>>463>>464
宿題スレに行け。

467:デフォルトの名無しさん
07/10/16 16:27:15
>>465
なんで?
文字を素直に UCS-4 にしてしまえばいいじゃないか。

468:デフォルトの名無しさん
07/10/16 17:08:54
それじゃ「Unicode scalar values」じゃなくなってしまう。


> (integer->char sv) procedure
>
> Sv must be a Unicode scalar value,
> i.e., a non-negative exact integer object
> in [0, #xD7FF] ∪ [#xE000, #x10FFFF].

469:デフォルトの名無しさん
07/10/16 17:31:53
いや、サロゲートペアなんてのが出てくるのは UTF-16 をそのまま 16bit 値として
扱った場合だけでしょ。
string の内部形式として UTF-32 を使ってればそもそも気にする必要はないし、
内部形式に UTF-16 を使っていたとしても、char アクセス時にそれなりに変換
すればいい。
内部形式を UTF-16 にした string で、それをナイーブに char の配列として
実装しちゃいかんというだけのように読めるけどなあ。

470:デフォルトの名無しさん
07/10/16 18:05:26
UTF-16とかUTF-32とか関係ないです。
R6RSの文字は"Unicode scalar value"を表現します。
またR6RSに従うならそれしかできません。
"Unicode scalar value"はちゃんとした定義のある言葉です。

471:デフォルトの名無しさん
07/10/16 20:10:07
サロゲートペアってのは UTF-16 でしか使われないんだから、UTF-16 と無関係
なわけないじゃないか。
たとえば、U+2000B は UTF-16 で 0xD840 0xDC0B というサロゲートペアで
表されるけど、U+D840 や U+DC0B なんて文字があるわけではない。

あんたが (string (integer->char #xD840) (integer->char #xDC0B)) ができないって
言ってるみたいだから、俺は (string (integer->char #x2000B)) すればいいって
言ってるんだけど、何か勘違いしてる?

472:デフォルトの名無しさん
07/10/17 02:12:21
468で既に自分が何言ってるのかわかってないことを暴露している奴に、
そんな親切につきあわなくても……。もはやスレ違い同然。

473:デフォルトの名無しさん
07/10/17 12:30:18
Schemeのリスト操作関数について質問です。
Webでサンプルコードとかを検索すると、n番目のリストを参照するための
オペレーターとしてlist-refという名前の関数がよく使われてるっぽいんですが、
これに対応するlist-set!がみつかりませんでした。
ペアに対してのオペレーター(car cdr set-car! set-cdr!)は標準でありますが、
リストに対しては整備されてないんでしょうか。
↓みたいなのがSRFIとかで定義されていればそれを使いたいのですが。

;n番目以降の部分リストを返す
(define (list-tail l n) (if (zero? n) l (list-tail (cdr l) (- n 1))))
;n番目の要素を返す
(define (list-ref l n) (car (list-tail l n)))
; 破壊版 set
(define (list-set! l n obj) (set-car! (list-tail l n) obj) l)
; 非破壊版 set (list-replace?)
(define (list-set l n obj)
(let loop ((i 0) (x l) (r '()))
(if (pair? x)
(if (= i n)
(loop (+ i 1) (cdr x) (cons obj r))
(loop (+ i 1) (cdr x) (cons (car x) r)))
(reverse r))))

474:473
07/10/17 12:40:14
ちょっと今調べたらlist-tailとlist-refはR5RSにあるみたいですが
list-set!やlist-set相当はありませんでした。

475:デフォルトの名無しさん
07/10/17 14:01:40
そんな操作を使いまくるようならベクタを使う気がする。

476:デフォルトの名無しさん
07/10/17 19:55:25
魔法言語リリカル☆Lispフリーウェア化
URLリンク(blog.bugyo.tk)


477:473
07/10/18 00:18:00
効率の話はともかくとして、list-setみたいなパターンはよく使うと思うんですが。
インターフェースを揃えておく利点として、他のコンテナに簡単に移行できる
という今更語るまでもなくCLや他の言語でも証明されてる事ですし。
takeやdropはSRFIで定義されてるのに不思議ですね。

478:デフォルトの名無しさん
07/10/18 00:23:43
欲しいと思ったことないけどな。
ランダムアクセスするなら >>475 の言うようにベクタを使うべきなんじゃないの?

479:デフォルトの名無しさん
07/10/18 01:17:33
>>478
~するべき、とかの話はおいといて、
例えばプロトタイピグとかでコンテナをいちいち決めたくないと思いませんか。
list-set相当の処理は入るけど大部分が副作用なしのリスト処理の場合とか。



480:デフォルトの名無しさん
07/10/18 01:22:37
正直言って思わない。1分で作れるし。

481:デフォルトの名無しさん
07/10/18 01:23:49
setfみたいのならいいけど、
~-set!が、コンテナの数だけあるのも、なんだかな。

やっぱOOが必要なんだろうけど、
プログラミング業界で一番OOに盛り上がりがないからな。
CLOSの頃と違って。

482:デフォルトの名無しさん
07/10/18 01:29:42
とりあえずlist-set相当は無いらしいという事は判ったので
この話は終わりますね。

>>481
OOというよりイディオムとしてのインターフェースは統一した方が
判りやすいと考えてるんですが。(今のところOOは必要と思ったことないです)

483:デフォルトの名無しさん
07/10/18 01:32:39
>>480みたいな人が多くて、
方言上等!みたいなのがこの世界です。

484:デフォルトの名無しさん
07/10/18 04:11:35
君が思ってるほどよく使われるイディオムでは無いってこと。ベクタってものがあるから。

485:デフォルトの名無しさん
07/10/18 05:03:08
>>481
setf 的な set! だったら srfi にあるね。
URLリンク(srfi.schemers.org)

486:デフォルトの名無しさん
07/10/18 09:39:14
>>482
> (今のところOOは必要と思ったことないです)

今のところlist-set!は必要と思ったことないです



487:デフォルトの名無しさん
07/10/18 17:45:40
クラス作ってどうこうのOOじゃなくて、MP的な意味でのOOじゃだめなの?

488:デフォルトの名無しさん
07/10/18 17:53:16
MPってなんや

489:デフォルトの名無しさん
07/10/18 18:20:21
Meta Programmingちゃいまっか?

490:デフォルトの名無しさん
07/10/18 19:15:23
MP = Message Passing

491:デフォルトの名無しさん
07/10/18 19:46:49
Magic Point

492:デフォルトの名無しさん
07/10/18 20:33:35
もっとぷにぷにして

493:デフォルトの名無しさん
07/10/18 20:34:45
マッスルパワーだろ、常考

494:デフォルトの名無しさん
07/10/18 20:56:36
『みじめな ポインター』じゃねーの?

495:デフォルトの名無しさん
07/10/18 21:30:32
もぷー

496:デフォルトの名無しさん
07/10/18 21:38:49
お前ら何言ってるんだ。
「Mですか?」の略だろ。LISP的に考えて。

497:デフォルトの名無しさん
07/10/19 00:17:01
My Program?

498:oWlyiBCrkzVQNj
07/10/19 04:20:45
KXW9XK <a href="URLリンク(nycokewromgk.com) [url=URLリンク(bezgtedzkmkl.com) [link=URLリンク(ckqlcozchtel.com) URLリンク(mtedzghiaczp.com)

499:デフォルトの名無しさん
07/10/19 16:40:57
バカな流れになるとこれが沸いてくるのはなんでだ

500:デフォルトの名無しさん
07/10/19 21:58:19
偶然です

501:デフォルトの名無しさん
07/10/20 01:49:22
以前、このスレ(だっけ)でも話題になった、eclipse用のslimeの様なもの。
swank backend を使った、開発環境が、取り上げられています。

URLリンク(www.ibm.com)

screen shotを見る限りでは、現時点でも、ずいぶんイケてるっぽいです。

わたしは、eclipse環境を使ってないので、今すぐに試す気はしませんが、
補完候補が、GUIで縦に表示されるのを、そのうち味わってみたいです。

502:デフォルトの名無しさん
07/10/22 14:23:53
Schemeってなんか使いやすくないですか?

503:デフォルトの名無しさん
07/10/22 23:05:43
そうですね

504:デフォルトの名無しさん
07/10/22 23:49:33
だよね

505:デフォルトの名無しさん
07/10/23 00:30:44
やっぱりね

506:デフォルトの名無しさん
07/10/23 01:03:12
でもそんなの関係ねー

507:デフォルトの名無しさん
07/10/23 20:39:42
はい、おっぱっぴー

508:デフォルトの名無しさん
07/10/23 23:30:00
前にもそういう一発系のネタあったよね。
どんなだったか忘れちゃったけど。
LISPの永続性と真逆の関係だね。

509:デフォルトの名無しさん
07/10/24 22:16:11
YコンビネータってなんでY ?
「ワイはコンビネーターや」ってことかい?

510:デフォルトの名無しさん
07/10/24 23:57:15
そんなあほな

511:デフォルトの名無しさん
07/10/25 03:00:23
「ワイは猿や!コンビネーター猿や!」
「必殺、包み包み!」

512:デフォルトの名無しさん
07/10/25 12:20:54
なにゆうてまんねん

513:デフォルトの名無しさん
07/10/25 18:13:59
ポール・グレアムが耳だけ出した覆面かぶってるって話

514:デフォルトの名無しさん
07/10/26 01:41:26
>>513
それはポール大好きグラハム・ちゃっぷまん@世界の料理ショーじゃまいか?

515:デフォルトの名無しさん
07/10/26 13:57:51
グラハム・カー@世界の料理ショー
ビリー・グラハム@テレビ宣教師

516:デフォルトの名無しさん
07/10/26 15:37:32
このスレは勉強になります

517:デフォルトの名無しさん
07/10/28 11:46:07
うそをつかないでください

518:デフォルトの名無しさん
07/10/28 12:25:45
グラハム・ボネット@横山やすし

519:デフォルトの名無しさん
07/10/29 20:31:26
r6rsってスタンダードになれなさそうだよねぇ
後始末が面倒くさそう

520:デフォルトの名無しさん
07/10/29 22:28:03
Cltl3はまだですか?

521:デフォルトの名無しさん
07/10/30 00:05:28
君が書くんだ

522:デフォルトの名無しさん
07/10/30 07:33:45
電話帳なみにぶ厚い仕様書を頼む

523:デフォルトの名無しさん
07/10/30 10:32:29
黒板に書けば1枚でも分厚いよ

524:デフォルトの名無しさん
07/10/30 12:31:12
うちの村の電話帳は薄いよ

525:デフォルトの名無しさん
07/10/30 17:33:45
>>520
アレをかける人で執筆時間がとれる人いるんだろうか。


526:デフォルトの名無しさん
07/10/30 19:22:26
GLSを拉致して・・・

527:デフォルトの名無しさん
07/11/04 23:24:20
3冊ほどLisp本キボン


528:デフォルトの名無しさん
07/11/05 01:08:37
Common Lisp the Language, 2nd Edition
On Lisp
Practical Common Lisp

529:デフォルトの名無しさん
07/11/05 04:27:03
入門書がないのはナゼ。

530:デフォルトの名無しさん
07/11/05 07:48:55
始めるならschemeがいいよ
CLはつまんない制約ばっかりで最初は滅入るから

531:デフォルトの名無しさん
07/11/05 12:53:03
>>529
入門は一生に一度だけだから、比較的マイナーな分野だと言えよう

532:デフォルトの名無しさん
07/11/05 12:53:34
>>530
そんなこたあない

533:デフォルトの名無しさん
07/11/05 14:09:03
>>531
そんなこたあない


534:デフォルトの名無しさん
07/11/05 14:28:16
>>528
thx
>>534-
他の皆さんは?(・∀・ )っ/凵 ⌒☆チンチン


535:デフォルトの名無しさん
07/11/05 22:25:23
>>531
BSD類のインストーラに凝ったものが無い、というのと同じような気がする

536:デフォルトの名無しさん
07/11/05 23:23:43
URLリンク(www.hi-ho.ne.jp)

・マクロ(schemeインタプリタ)を実装

だって。


537:デフォルトの名無しさん
07/11/06 05:04:00
>>535
浦島かよ。
PC-BSDのインストーラはLinuxみたいに凝ってるし、
FreeBSDも7からGUIインストーラが用意される予定。

538:デフォルトの名無しさん
07/11/06 09:16:35
予定に過ぎないのであれば大筋合ってるじゃん

539:デフォルトの名無しさん
07/11/06 09:35:42
>>537
OpenBSDのインストーラは最後の砦だw

540:デフォルトの名無しさん
07/11/06 12:11:48
>>537
浦島かよ。
FreeBSDのGUIインストーラは7に入らないことが決定済み。

541:デフォルトの名無しさん
07/11/06 12:20:59
もまえら、Unix板に返れ。


542:デフォルトの名無しさん
07/11/06 16:33:01
もまえら、Unix板に変えれ。

543:デフォルトの名無しさん
07/11/06 22:29:14
SFUが.NETみたいに標準搭載になればいいのにねえ。
WinFXでWin32を順次置き換えていくらしいから、
もう既にWin32で囲い込みする必要もないだろうに。
サポートの手間がメンドクサイからまあ、なさそうだけど。


544:デフォルトの名無しさん
07/11/06 22:45:05
マイクロカーネルだって事を M$ 自身が忘れてしまっている

545:デフォルトの名無しさん
07/11/07 00:20:35
>>543
なぜこのスレで書いてるのか知らんが、Windows Vista では
Enterprise、Ultimate 版に SFU の後継である SUA が載ってるよ。

546:デフォルトの名無しさん
07/11/07 14:26:53
slime専用sbcl coreをmake一発で作りたいとおもい、
sbcl-core:
rm -f ${SBCL_CORE}
sbcl <<EOF
(load "${SRC_DIR}/${PACKAGE_NAME}/swank-loader.lisp")
(save-lisp-and-die "${SBCL_CORE}")
EOF
としてみたのですがうまくいきません
どうしたらよいでしょうか。

547:デフォルトの名無しさん
07/11/07 18:49:20
エラーメッセージは?

makeの継続行は最後に\
here documentでは必要ないが、
makeは一行で1 shell script。行継続しないと。ってことかな?

548:デフォルトの名無しさん
07/11/08 02:50:15
schemeで
common lispの
(let ((count 0))
 (defun increment ..
 (defun decrement ..

のような処理をしたい場合はどうすればいいのでしょうか?

549:デフォルトの名無しさん
07/11/08 04:32:17
>>548
(define inc #f)
(define dec #f)
(let ((count 0))
  (set! inc (lambda ...))
  (set! dec (lambda ...)))

550:デフォルトの名無しさん
07/11/08 20:42:17
>>549
schemeの理論をそれほどちゃんと理解しているわけじゃないが、
厳密に言えばincrementをlambdaに束縛するのがincrementを呼ぶ前に
行われるとは限らないんじゃないか?

551:デフォルトの名無しさん
07/11/08 21:52:25
(let ((count 0))
 (define inc (lambda ...))
 (define dec (lambda ...)))
ってできないの?

552:デフォルトの名無しさん
07/11/08 23:42:14
最近勉強始めたんだけどschemeで作るプログラムのアーキテクチャが全然想像できない
オブジェクト指向だったらMMVCとかあるけどschemeでオブジェクト指向やってもうれしくもなんともないし

553:デフォルトの名無しさん
07/11/09 01:06:31
うれしくなければやらなければいい。

>>551
r5rs - 5.2.2 Interanal Definition

554:デフォルトの名無しさん
07/11/09 01:12:47
初心者で質問なんだけど、手続きが可変長引数を取るとき、
その全てを引数として他の可変長引数を取る手続きに渡すにはどうすれば良い?

(define (f1 . x)
x)
(define (f2 . x)
(f1 x))
(f2 1 2 3 4 5 6) ; ((1 2 3 4 5 6))になっちゃう(1 2 3 4 5 6)にしたい


555:デフォルトの名無しさん
07/11/09 01:20:39
(apply f1 x)

556:デフォルトの名無しさん
07/11/09 01:24:09
>>555
ありがとー

557:デフォルトの名無しさん
07/11/09 01:27:48
>>552
scheme とか lisp には言語を自由に拡張できるマクロが...
なので
> プログラムのアーキテクチャ
てなものを考えてもしょうがないと思うけど...

「特定の言語とかモデルに捕らわれないで問題領域解決用の専用言語を作る」
のが lisp 系言語の流儀だと思う.



558:デフォルトの名無しさん
07/11/09 01:38:39
Lisp : 粘土
Java : 煉瓦
Ruby : 絵の具

559:デフォルトの名無しさん
07/11/09 01:42:26
俺言語とかDSLを作らなくても最終目的に向かう途中で実行系自体がDSLみたいな状態になる。
プログラムを作るというより実行系の環境を最終目的物に書き換えていくみたいな感じ。

粘土細工作るときの作業台全体みたいな物だと思ってるんだけどどうなんだろう。


560:デフォルトの名無しさん
07/11/09 01:42:57
うわ、くだらねぇもの書いている間にシンプルなお答えが orz


561:デフォルトの名無しさん
07/11/09 02:20:03
その点、haskellとかocamlとかどー考えてんだろ

562:デフォルトの名無しさん
07/11/09 02:44:35
Haskell 実行する前に問題解決

563:デフォルトの名無しさん
07/11/09 07:59:36
>>551
出来る
けど内部定義のdefineだから
グローバルな束縛にならない

一方set!なら可視な束縛の変更だから
グローバルな環境の変更もできる

553がシンプルな答えだけど

564:デフォルトの名無しさん
07/11/09 08:42:26
>>563 の言うようにset!がシンプルだけど,
let環境の値としてinc, dec(を含むリスト)を返し,それを外部でinc, decで束縛すれば...

(define tmp
 (let1 count 0
  (define (inc) ...)
  (define (dec) ...)
  (list inc dec)))

(define inc (car tmp))
(define dec (cadr tmp))

;; 自分では動くか試してない(ぉ

565:デフォルトの名無しさん
07/11/09 10:18:36
それなら、defineせんでも、lambda式返せばいい。

566:546
07/11/09 12:24:49
>547
ありがとうございます

make sbcl-core
rm -f /home/hoge/.sbcl/sbcl.core-with-slime
sbcl <<EOF
This is SBCL 0.9.17, an implementation of ANSI Common Lisp.
More information about SBCL is available at <URLリンク(www.sbcl.org)

SBCL is free software, provided as is, with absolutely no warranty.
It is mostly in the public domain; some portions are provided under
BSD-style licenses. See the CREDITS and COPYING files in the
distribution for more information.
* (load "../src//slime-cvs/swank-loader.lisp")
load: not found
*** Error code 127

というメッセージが出ているので、makeの問題では無いと思うんですが…


567:デフォルトの名無しさん
07/11/09 12:35:36
Scheme も internal define なんて導入せず、それ以前の Lisp みたいに
define は top level をいじることにしとけばよかったのにな。
そうすれば begin の
5.1 Programs
> At the top level of a program (begin <form1> ...,) is equivalent
> to the sequence of expressions, definitions, and syntax
> definitions that form the body of the begin.
5.2.2 Internal definitions
> Wherever an internal definition may occur (begin <definition1>
> ...,) is equivalent to the sequence of definitions that form the
> body of the begin.
みたいな特別扱いも不要だし
(define x 10)
(define y x)
y => 10
(let ()
  (define x 10)
  (define y x)
  y) --> error
なんてわかりづらいこともなくなったのに。

568:デフォルトの名無しさん
07/11/09 14:36:31
beginのその特別扱いってなんであるんだ?
処理系書くとき邪魔だよねえ。

しかしdefineで内部関数を書けるのは便利。
labelsとかfsetとかは醜い。書きづらいし読みづらい。

569:デフォルトの名無しさん
07/11/09 15:16:43
二つ目の方が、
(begin <form1> ...)じゃないから、
(begin (begin <definition1> ...))を機械的に、
<definition1> ...とsplicingするわけにいかないのがきつい…

こっちはR6RSではないんでしょ。
・Internal definitions are now defined in term of letrec*.

トップレベルの方はライブラリがらみでまた気にするところ増えたけど。



570:デフォルトの名無しさん
07/11/09 15:48:37
(begin (begin <definition1> ...))が
(begin <definition1> ...)になって、次は、
<definition1> ...でいいんじゃないのかなあ?

その辺り、R6RSの方が解釈しやすい書き方だけど。
<body> <library body> <top-level body>と、
構文上のノンターミナル使って定義してあるから。
R5RSは文章での説明が多くて理解するのに頭を使う。



571:デフォルトの名無しさん
07/11/09 21:44:17
The Little Shemerを簡単じゃないかと思衣ながら読んでいたら、
8章の途中から泣きそうになった(高階関数のあたり)。

何とか理屈はわかったけれど、身に付くかどうか・・・
がんばってみます。


572:デフォルトの名無しさん
07/11/09 23:47:21
>>571
おお仲間だ!
multiremberEcoとかcontinuationとか出てきたあたりで学習速度がすっごいダウンするよね

573:デフォルトの名無しさん
07/11/10 00:50:26
The Little Shemerは、
曖昧に理解せず、身に付けさせるための本だから、
ちゃんと読み終わったら身に付くよ。

574:デフォルトの名無しさん
07/11/10 00:56:59
seasonedとかreasonedはどうだった?

575:デフォルトの名無しさん
07/11/10 12:38:29
lisp で並列分散処理プログラムを実際に書いている人は居ます?
どういった処理系もしくはライブラリを使ってますか?
やっぱりほとんどいないのかな。。

576:デフォルトの名無しさん
07/11/10 12:57:24
3行目があるせいで釣りにしか見えん。

577:575
07/11/10 13:40:41
まじめに自分もその環境でコーディングしたいと考えています。
並列プログラミングの話ってほとんど語られていないと思ったんで。

578:デフォルトの名無しさん
07/11/10 14:08:27
Erlisp は期待してたんだけど、どうなったのだろう

579:デフォルトの名無しさん
07/11/10 14:09:17
cmlisp とか, *lispとかの話かい???



580:デフォルトの名無しさん
07/11/10 14:36:44
CL のライブラリだよ

581:デフォルトの名無しさん
07/11/10 22:16:14
アナルlisp?

582:デフォルトの名無しさん
07/11/11 00:04:04
Schemeの入門はLittle Schemerしかないのかな。
手習いや湯浅先生の入門本は入手しづらいし。

583:デフォルトの名無しさん
07/11/11 02:55:56
あなりすぷ・・・

584:デフォルトの名無しさん
07/11/11 12:23:59
(cons 'ちんぽ 'アナル)

585:デフォルトの名無しさん
07/11/12 07:54:12
`(ちんぽ . アナル)

586:デフォルトの名無しさん
07/11/12 09:50:01
Python実装だけど並列処理の記述はLispでやる予定の俺がいますよ


587:デフォルトの名無しさん
07/11/12 22:13:04
みんなschemeの処理系なに使ってんの?
みんな自作?

588:デフォルトの名無しさん
07/11/12 22:21:59
ごうしゅをつかってまつ

589:デフォルトの名無しさん
07/11/12 22:49:07
Gauche 時々 MIT

590:デフォルトの名無しさん
07/11/12 23:10:25
587 じゃないけど...

MIT 使ってる人は初めてだ。もし良かったら、
どんな時に Gauche じゃなくて MIT を使うか
教えて下さい。

591:デフォルトの名無しさん
07/11/12 23:26:12
MITしか入ってない環境で作業するとき・・・。

592:591
07/11/12 23:50:57
職場で借りてるファイルサーバになぜか入ってて時々使ってるって程度の話ね。

593:デフォルトの名無しさん
07/11/12 23:58:55
多くのディストリとかcygwinに、わりとデフォで入っているという理由で guile を使うことがある

594:デフォルトの名無しさん
07/11/13 00:16:13
>>591,592
どうもありがとう。何か拘りがあって使ってらっしゃるのかと思いました。

595:デフォルトの名無しさん
07/11/13 00:46:26
>>587
slang

596:デフォルトの名無しさん
07/11/13 01:25:24
リストの中からある要素を探して、その要素の前にあるオブジェクトを破壊的に挿入する
にはどうしたらいいでしょう。例えば、3 の前に 'a を挿入したいです。
(let ((x 3))
(let ((ls (list 1 2 3 4 5)))
;; ここ
ls))
=>(1 2 'a 3 4 5)


597:デフォルトの名無しさん
07/11/13 02:27:53
俺初心者で悪いけど、こういうこと?

(define (find-insert lst fnd val)
(define (find-cdr lst f)
(if (equal? (cadr lst) f)
lst
(find-cdr (cdr lst) f)))
(let ((l (find-cdr lst fnd)))
(set! (cdr l) (cons val (cdr l)))))

(define ls '(1 2 3 4 5))
(define x 3)
(find-insert ls x 'a)
(write ls)

598:デフォルトの名無しさん
07/11/13 04:01:03
>>597
お付き合いいただいてどうもです。ヒントになりました。
setf を使えば良かったみたいです。3 の後になってしまいますが、
次善の策としてこれでも良いです。
(let ((x 3))
(let ((ls (list 1 2 3 4 5)))
(let ((place (member x ls)))
(setf (cdr place) (cons 'a (cdr place))))
ls))
=>(1 2 3 a 4 5)

599:デフォルトの名無しさん
07/11/13 12:00:26
>>587
俺はPLTだな…IDEが付いてくるからって理由だけだが。

600:デフォルトの名無しさん
07/11/13 12:14:47
gaucheとscm。
scmはdefaultでreadlineがあるからちょこちょこ書くときはこっち。

601:デフォルトの名無しさん
07/11/13 18:00:34
scheme48(とguile)
有理数が使えていろんな環境で使えるのはこれくらいしかない(と思う)
ocsなんかも面白そうだけどまだあんまり使ったことない

602:デフォルトの名無しさん
07/11/13 18:05:51
一度どれか使っちゃうと、
独自仕様部分のポーティングが面倒になる。

603:デフォルトの名無しさん
07/11/13 18:51:27
つまりスキームなんてどれも使うな、コモンリスプ最強ってことか?

604:デフォルトの名無しさん
07/11/13 20:17:53
>>603
Common Lispの処理系が動かない環境もあるんでつ(´・ω・`)

605:デフォルトの名無しさん
07/11/14 01:05:28
どんな環境?

606:デフォルトの名無しさん
07/11/14 06:55:03
zaurus-openbsdとか

607:デフォルトの名無しさん
07/11/14 13:22:12
clispくらい動きそうだけどな

608:デフォルトの名無しさん
07/11/14 13:58:42
つPalmOS

609:デフォルトの名無しさん
07/11/14 18:19:10
>>607
動きそうだけど動かないですねぇ
clispもGCLもGaucheもMzSchemeもGambit-Cも

Gambit-Cはビルドは成功するけどリーダがいかれてて
3 -> 0
8 -> unbound error
とかになります
ソースが機械翻訳のCだから追う気になれないけど
規則性のあるバグだから見つかればつぶせそうです

scheme48は依存ライブラリもなく、GCも多倍長計算も有理数も自前なのにi386 onlyでポーティングされてるのが疑問
だから自分でパッケージ作っていれてます

610:デフォルトの名無しさん
07/11/15 15:48:16
Linuxならi386以外にもportされてるけどな
URLリンク(packages.debian.org)

611:デフォルトの名無しさん
07/11/16 01:12:44
というかzaurusなら普通にscheme48のパッケージが流通しているわけであるが。

感度の悪いアンテナ持ってるやつってどうよ?

612:デフォルトの名無しさん
07/11/16 06:53:05
>>611
zaurus-"OpenBSD"の話です
i386のみにportingされているのは事実です
i386じゃなくても動くのも事実ですけどね

613:デフォルトの名無しさん
07/11/16 07:42:01
好きで使っているOSへの愚痴は、そのOSの板でやってくれ。

614:デフォルトの名無しさん
07/11/16 23:20:53
そう、ここは好きじゃないのに使わされている OS への愚痴を書き込む場所です

615:デフォルトの名無しさん
07/11/16 23:48:10
好きでも嫌いでもないOSの愚痴はどこに書き込んでもいいです

616:デフォルトの名無しさん
07/11/16 23:51:51
押忍

617:デフォルトの名無しさん
07/11/16 23:58:29
OCS ってこれか。

URLリンク(will.iki.fi)

618:デフォルトの名無しさん
07/11/17 01:17:35
御意

619:デフォルトの名無しさん
07/11/20 13:14:54
>>600
ledit使えばいいんじゃね? > readline

$ ledit gosh -i

$ alias gau='ledit gosh -i'してる。

620:デフォルトの名無しさん
07/11/20 15:57:12
SECDR-Schemeってソース見てみたいんだけど、誰か持ってない?
テンプレのリンクは切れてて見れませんでしたわ。

621:デフォルトの名無しさん
07/11/20 23:48:16
以前ダウンロードしたときはリンク切れから適当にURLを推定して当てた記憶があるですよ。

622:デフォルトの名無しさん
07/11/21 10:39:21
だから、そのダウンロードしたソースを持ってないでしょうか?
って聞いてるんだわ。(^~^)

623:デフォルトの名無しさん
07/11/21 10:49:39

             「 ̄ `ヽ、   ______
             L -‐ '´  ̄ `ヽ- 、   〉
          /           ヽ\ /
        //  /  /      ヽヽ ヽ〈
        ヽ、レ! {  ム-t ハ li 、 i i  }ト、
         ハN | lヽ八l ヽjハVヽ、i j/ l !
         /ハ. l ヽk== , r= 、ノルl lL」
        ヽN、ハ l   ┌‐┐   ゙l ノl l
           ヽトjヽ、 ヽ_ノ   ノ//レ′
    r777777777tノ` ー r ´フ/′
   j´ニゝ        l|ヽ  _/`\
   〈 ‐ 持ってるが lト、 /   〃ゝ、
   〈、ネ..         .lF V=="/ イl.
   ト |お前の態度が とニヽ二/  l
   ヽ.|l         〈ー-   ! `ヽ.   l
      |l気に入らない lトニ、_ノ     ヾ、!
      |l__________l|   \    ソ

624:デフォルトの名無しさん
07/11/23 13:49:48
CommonLispやSchemeでは、
2個以上の引数を取るandやorはマクロで定義されている様なんですが、
関数を使っても定義できるはずです。
なぜマクロを使っているのでしょうか。

625:デフォルトの名無しさん
07/11/23 14:01:08
無駄な評価をふせげるから。

626:デフォルトの名無しさん
07/11/23 14:02:36
そんで、大昔は、特殊形式でやる流儀もあったけど、
今はマクロで済むことはマクロでやる流儀。

627:デフォルトの名無しさん
07/11/23 14:39:20
誰かfranzセミナー行った人、内容教えて

628:624
07/11/23 14:55:37
>625
関数だと引数をみんな評価してしまうけど、
マクロならしないってことですか?

>626
すいません
特殊形式とマクロの違いがよくわかってないんですが、
引数を関数とは違う順序で評価するという点で同じで、
そのうち特殊形式はプリミティブなものと言うような理解で
いいんでしょうか。



629:デフォルトの名無しさん
07/11/23 15:32:46
>>628
andもorも、「左から見ていって、途中でオシマイという運びになったらその後ろは評価しない」ものでしょ?
でも関数は「まずすべての引数を評価する」機構なわけで、それではandもorも実現できない。
一方、マクロは引数をまったく評価しない。だからこれを使って定義されている。

特殊形式は、すべての引数を評価するとは限らない関数、みたいなもので、
想像の通り、プリミティブなものだ。

てかこの辺り、Lispの勉強の初日や二日目の範疇じゃないか?

630:デフォルトの名無しさん
07/11/23 22:22:56
遅延評価を導入すれば関数として統一的に定義じゃないかという吊りかも

631:デフォルトの名無しさん
07/11/24 09:36:14
脳内のイメージが遅延評価な人なのかもしれん。Haskell でも試してみたら?

632:デフォルトの名無しさん
07/11/24 11:00:01
>>628
なんのために書籍の「ON LISP」があると思っているのか

633:デフォルトの名無しさん
07/11/24 11:28:27
賢い人を更に教育するため。

私たちにとっては,On Lisp でレベルアップして,
更にいろいろ教えてくれる様になったその人たちに
より突っ込んだを質問が出来るようになる。だな。

634:デフォルトの名無しさん
07/11/24 13:54:45
初心者はANSI Common Lispがいいよ。On Lispはちょっと応用すぎる。
あとはEmacs Lisp Tutorialとかも参考になるだろうね。

635:デフォルトの名無しさん
07/11/24 14:04:06
Scheme→Common Lispだと拒否しちゃいそうだけど
Common Lisp→Schemeだと使い分けられそう。

636:デフォルトの名無しさん
07/11/24 14:08:24
プラットフォームがBlackboardならScheme、それ以外ならCommon Lisp。

637:デフォルトの名無しさん
07/11/24 15:35:48
引数の評価についてはSICPでも超序盤で触れてるね

638:デフォルトの名無しさん
07/11/24 16:42:39
>>633のような輩に無料で教えるほど賢い人は暇ではないだろうな

639:624
07/11/24 22:13:01
>629
>andもorも、「左から見ていって、途中でオシマイという運びになったらその後ろは評価しない」ものでしょ?
なるほど、単なる論理演算かと思ってました
ありがとうございます

>630,631
最近Haskellをかじって
うはwwwマクロもういらねんじゃね?www
とかいって喜んでたんですが、やっぱりそれであってるんですね

640:デフォルトの名無しさん
07/11/25 02:35:01
>>115-128 あたりで同じやりとりをした気がするけど、遅延評価でも関数じゃ setq とかが書けないんで、マクロは必要。

641:デフォルトの名無しさん
07/11/25 03:53:03
マクロがあってもスペシャルフォームは書けないはずだけど。

642:デフォルトの名無しさん
07/11/25 10:05:48
setq って quote して set するだけだと思ってたけど、他に何かしてたっけ?

643:デフォルトの名無しさん
07/11/25 13:39:38
遅延評価でquoteが書けるか?

644:デフォルトの名無しさん
07/11/25 16:05:00
>>642
説得してる

645:デフォルトの名無しさん
07/11/25 16:12:29
>>642
それだと(多くの処理系では)グローバルしかセットできない

646:デフォルトの名無しさん
07/11/25 17:16:37
なるほど。
# 普段 ELisp しか使ってないから、 set するだけだと思ってた。

じゃ、 case とかが書けないからマクロは必要、に訂正かな。

647:デフォルトの名無しさん
07/11/27 01:33:45
>>635
SchemeとXyzzyLispって俺はどうすれば…。

648:デフォルトの名無しさん
07/11/27 02:05:34
どうしようもないね

649:デフォルトの名無しさん
07/11/27 03:29:28
>>635
俺は逆だなぁ、CLだとなんでも揃うのだけどSchemeだと原理主義ありきなんで妥協してくれないから。


650:デフォルトの名無しさん
07/11/27 11:05:23
原理主義ってどんなの?
「プリミティブがあれば充分」論者はR6RSで少なくなっていくと思う。
moduleとかOOとか。

651:デフォルトの名無しさん
07/11/27 11:21:24
じゃあ、さっさと R6RS を実装しやがれ

652:デフォルトの名無しさん
07/11/27 11:33:55
あんなR6RSを正直に完全実装するのがでてくるかな?
リファレンス実装以外で。

653:デフォルトの名無しさん
07/11/27 11:38:14
今のメジャーな処理系が実装するというよりは、新しい処理系で R6RS 準拠ってのが出てきそうな気がする

654:デフォルトの名無しさん
07/11/27 11:57:18
SchemeのC++0xやー

655:デフォルトの名無しさん
07/11/27 17:28:37
個人的にはR5RSにリードマクロとsyntax-caseと{read,write}-byteとfile-seekとsystemと環境を明に操作する手段とimplicit forceとfull numeric towerとFFIさえあれば良いだけなんだけどなぁ
実装してる処理系はあるけど標準化されてないってのがネック
UTF-8ファイルの読み書きで1バイト読み込むのか1文字読み込むのか実装依存(1文字読み込む実装は知らないけど)だし

構文オブジェクトもファーストクラスにして
(define foo (syntax ...なんて構文で定義したり
applyの第1引数に構文オブジェクトを受け取るように出来たらいいのに
でもそうすると構文木解釈系でしか動かないだろうから相当遅くなるし
そもそも合成構文はevalされる前に展開されるから無理か

ただCLと違って値も関数もdefineで定義できるのに
構文定義だけdefine-syntaxってのが美しくない気がする
define-syntaxは処理系に対して、defineは実行系に対しての構文だと割り切るしか無いか

656:デフォルトの名無しさん
07/11/27 19:57:37
そういえば以前PCLの翻訳が進んでるって話題でてたけどどうなったんだろう。
中止になったのなら半分まで進めて止まってる翻訳再開しようかな・・・

657:デフォルトの名無しさん
07/11/27 22:43:16
>>656 あなたは「RHG読書会」というお告げが聞こえたような気がした --more--

658:デフォルトの名無しさん
07/11/28 11:59:24
>>656
Lisp関係の書籍出している出版社に問い合わせてみては?
既に進んでいるなら、翻訳者陣に参加して加速してくださいw

659:デフォルトの名無しさん
07/11/29 16:42:48
>655
ハゲド
ごちゃごちゃしたいならCLに行けば良いんだから
schemeは原理主義的な性格を守っていってほしい

構文オブジェクトは普通のマクロ入れると
コンパイラのコード生成ルールを吐いてくれるように出来ないかな?
ほんとに動的なマクロだと無理だろうけど...

660:デフォルトの名無しさん
07/12/06 13:58:46
continuation の挙動について理解できていない点があり,
以下のような 2 種類の Scheme コードを書いてみました.

;;; case-A ----------------------------------------
(define continuation-A #f)
(define procedure
(lambda (n)
(define counter-A n)
(call-with-current-continuation
(lambda (k)
(set! continuation-A k)
(write counter-A) (newline)
)
)
(set! counter-A (+ counter-A 1))
(write counter-A) (newline)
)
)

(procedure 0) ; ==> 0 と 1 が表示される
(continuation-A #t) ; ==> 2 が表示される
(continuation-A #t) ; ==> 3 が表示される
(continuation-A #t) ; ==> 4 が表示される

;;; case-A おわり

661:660
07/12/06 14:00:00
;;; case-B ----------------------------------------
(define continuation-B #f)
(do ((counter-B 0 (+ counter-B 1)))
((= counter-B 10) 'finished)
(if (= counter-B 5) (call-with-current-continuation (lambda (k) (set! continuation-B k))))
(write counter-B) (newline))
; ==> 1 2 3 ... 7 8 9 finished が表示される

;;プログラム実行部
(continuation-B #t) ; ==> 5 6 7 8 9 finished が表示される
(continuation-B #t) ; ==> 5 6 7 8 9 finished が表示される
(continuation-B #t) ; ==> 5 6 7 8 9 finished が表示される

;;; case-Bおわり

662:660
07/12/06 14:02:18
case-A では
continuation-A が生成されたときから変数 counter-A が
ずっと見えたままであり,
continuation-A の呼び出しごとに counter-A の束縛値が
1 ずつインクリメントされていく.
(continuation-A が呼ばれるたびに,
「continuation-A 生成時における counter-A の束縛値」である 0 に
いちいちリセットされることはない.)

case-B では
continuation-B が呼ばれるたびに counter-B の束縛値は
「continuation-B 生成時の counter-B の束縛値」である 5 に
リセットされる.

多分基本的なところが理解できていないのだと思いますが,
この 2 つのコードにおける continuation 上の変数の見えかたについて
なぜこのような違いが生ずるか,お教えいただければ助かります.

663:デフォルトの名無しさん
07/12/06 15:14:39
わざわざdoなんか使うから話が余計ややこしくなってる。
doを再帰に展開してごらん。

664:デフォルトの名無しさん
07/12/06 15:14:49
doは再帰だから。
doのdefine-syntaxがR5RSに書いてあるから読んでみたらどうよ?
束縛環境を良く考えると分かるはず。↓while版

(define continuation-B #f)
(let ((counter-B 0))
(while (< counter-B 10)
(if (= counter-B 5)
(call-with-current-continuation (lambda (k) (set! continuation-B k))))
(write counter-B)
(write-char #\ )
(inc! counter-B))
(print 'finished))
(continuation-B #t)
(continuation-B #t)
(continuation-B #t)


665:デフォルトの名無しさん
07/12/06 15:15:39
do は counter-B の値を破壊的に書き換えてない。
新しい環境作って、そこで同じ名前に別の値を束縛してるだけ。
だから元の場所に戻ると、そこの環境にはそのときの値が残ってるから、その値が参照される。

set! は破壊的に書き換えるから、元の値が残ってない。

666:デフォルトの名無しさん
07/12/07 04:31:10
Clojure試してるんだけどClassCastExceptionばかりで使い物になんないよ……
どうなってんのこれ。

667:デフォルトの名無しさん
07/12/07 20:01:29
clusure じゃないの?って検索してみたら…

java スレ行け。

668:デフォルトの名無しさん
07/12/07 20:02:20
× clusure
○ closure

669:デフォルトの名無しさん
07/12/08 01:05:55
>>666 作ってるよーという話がでたばかりの言語に安定性を期待しすぎなんじゃないの?

670:デフォルトの名無しさん
07/12/08 02:36:47
Clojureは広い意味でのLISPっぽさがあっていいんじゃないの?

671:デフォルトの名無しさん
07/12/08 08:02:24
一般的なLispとの違いがまとめてあるけど、
URLリンク(clojure.sourceforge.net)
どう考えてもLispでしょ。

Haskell方面で良く使われているSTM、
それにreactive Agent使った並列Lispの一種で面白いと思う。
STMでいろいろ遊んでみたかったんで試してみます。>>666サンクス

>>667みたいな馬鹿はなんなんだろ。

672:デフォルトの名無しさん
07/12/08 09:36:17
java で書かれたなんらかの言語の実装系に問題があるなら
なんらかの言語は無関係と思うが?
ClassCastException って java の例外でそ?

673:デフォルトの名無しさん
07/12/08 09:39:16
661=671乙

javaで書かれた何かの言語の処理の実装系に問題があるなら
その何かの言語よりjavaに通じた人に質問する方が効果あると思うが?

ClassCastException は java の例外でしょ?

674:デフォルトの名無しさん
07/12/08 09:43:08
と考えたが、Cで書かれたschemeの処理系に問題があった場合、
C使いだけでなくschemerに聞くのも有りか…

javaグラマに偏見あるな俺は

675:671
07/12/08 10:12:13
>>673
>>664は俺なんだけど何で分かったの!びっくり!
と思ったら>>661 orz

>>666の間違いかよ!

676:673
07/12/08 10:52:39
>> 675

誤りについては御寛恕賜りたく、

677:デフォルトの名無しさん
07/12/08 12:54:42
>>674
あるみたいだね

678:デフォルトの名無しさん
07/12/08 13:17:21
最初はJDK1,7のクロージャの実装がまだバグが多くて愚痴った内容を誤爆していたのかと思った。
JVMの上で動くClojureというLISP処理系の話とは思わなかった。

679:デフォルトの名無しさん
07/12/08 13:53:24
>>671
>>>667みたいな馬鹿はなんなんだろ。

2ch だからといって安直に馬鹿とかアホとか書くのは止めた方が良いよ。

680:デフォルトの名無しさん
07/12/08 14:20:34
ポメラニアンファック! ヽ(`Д´)ノ

681:デフォルトの名無しさん
07/12/09 04:58:51
>>679
書いた本人が安直な馬鹿だから、言ってもしょうがない。

682:デフォルトの名無しさん
07/12/09 19:56:01
>>666
ClassCastExceptionなんていうJavaの例外が出てる時点で、処理系の不具合だろうが。
不具合あるなら、ソース読むか、コミュニティに報告するかだろ。
それができないんだったら、安定版がリリースするまでおとなしく黙ってろ。

683:デフォルトの名無しさん
07/12/10 01:39:04
>不具合あるなら、ソース読むか、コミュニティに報告するか
あるいは愚痴を言う、だろ?

そのキツい態度はこのスレに取って良い未来を生み出さないと思うのだが。


684:デフォルトの名無しさん
07/12/10 04:00:09
>>683
その優しい態度も良い未来を生み出さないという意味では同じであろう。
つまり、好きにそれぞれの芸風でやってくれ。w

685:デフォルトの名無しさん
07/12/10 08:09:12
俺は優しくしているつもりはない。
ただフレームを生み出すよりは無視する方がまだマシだというお馴染みの主張をしたいだけで


686:デフォルトの名無しさん
07/12/11 10:12:56
R6RSなんかより、MS謹製のLisp#に期待だなぁ。
強力なIDEの付いたVisual Lisp# 2008出してくれないかな。。

687:デフォルトの名無しさん
07/12/11 10:22:16
俺は型付き Lisp が欲しいな。勿論型推論込みで。

688:デフォルトの名無しさん
07/12/11 12:00:24
インタープリタで型推論とか出来るんだろうか

689:デフォルトの名無しさん
07/12/11 12:44:23
hugsとかやってるじゃん

690:デフォルトの名無しさん
07/12/11 19:11:27
>>686
どんなMS独自仕様が拡張されているの?

691:デフォルトの名無しさん
07/12/11 21:02:04
OCamlなんかもインタプリタで型推論してますね

ところでScheme48でscmファイルからモジュールを,openする方法ってないんでしょうか?
モジュールを,openしたヒープイメージを,dumpか,buildする方法だとなんか大げさだし
標準入力で,openさせて-a batchする方法だと標準入力が塞がっちゃうし
(open structure-name)とかで,openできればいいんですけど…

692:デフォルトの名無しさん
07/12/11 21:59:56
>>690
.NET Framework をシームレスに呼べるようになってたりするのだろう。w
それはそれで便利かも。

693:デフォルトの名無しさん
07/12/11 22:16:56
F#ですか

694:デフォルトの名無しさん
07/12/11 22:33:57
MSによりLisp#が開発される暁には、.net frameworkを呼べるようになるだけではなく、
Java→C#で行われたような言語レベルでの大幅な強化・改善が行われるだろう。

695:デフォルトの名無しさん
07/12/11 22:38:10
丸括弧が無くなるんじゃねーの

696:デフォルトの名無しさん
07/12/12 00:55:36
あの会社としては、CLtLとかRxRSなんて気にしないで新標準を作っちゃうんだろうけど、
それでも依然として LISP ではあるところが LISP の包容力の大きさだ。w
まじでやってほしい気がしてきた。

697:デフォルトの名無しさん
07/12/12 10:45:55
lispであるための条件って
表現がS式であることしか無いような気がしてきた

698:デフォルトの名無しさん
07/12/12 16:29:24
M式の立場は?

699:デフォルトの名無しさん
07/12/12 17:06:11
SM式?

700:デフォルトの名無しさん
07/12/12 20:24:54
665で1文字読み込む実装は知らないなんて書きましたけど
無知すぎました
エンコーディングさえ設定すれば1文字読み込むことも出来る実装がちゃんとあるんですね

701:デフォルトの名無しさん
07/12/13 09:49:24
>>695
( ) の代わりに全部 { } で書くの?

702:デフォルトの名無しさん
07/12/13 17:35:11
>>700
>665で1文字読み込む実装は知らないなんて書きましたけど

665にはそんな記述見あたらないんだけど…
655の間違いだな

703:デフォルトの名無しさん
07/12/13 22:19:54
>>695
dylanのことかーっ

704:691
07/12/14 01:07:29
slib/scheme48.initに答えが書いてありますねorz
slibはscheme48を冷遇してるから期待してなかったんですが…

705:700
07/12/14 20:29:02
>>702
訂正どうもです

706:デフォルトの名無しさん
07/12/14 23:11:54
『Gaucheプログラミング』

Kahuaプロジェクト 著
川合 史朗 監修
ISBN978-4-87311-348-7
定価3,360円

707:デフォルトの名無しさん
07/12/14 23:50:51
>>706
発売日は決まったの?

708:デフォルトの名無しさん
07/12/15 07:58:50
>>706
「プログラミングGauche」じゃなかったっけ?


709:デフォルトの名無しさん
07/12/15 08:43:01
「プロGaucheグラミング」

710:デフォルトの名無しさん
07/12/15 08:46:56
「プGロaグuラcミhンeグ」

711:デフォルトの名無しさん
07/12/15 08:50:12
それが出たら終了だな

712:デフォルトの名無しさん
07/12/15 09:29:05
「プログラミング」

   ∩___∩
   | ノ       ヽ
  /  ●   ● | G、Gauche!
  |  ///( _●_)//ミ
 彡、  /⌒)(⌒ヽノ
  ./  /  / \ \
  l   ノ    `ー‐'


713:デフォルトの名無しさん
07/12/15 12:14:48
ガウチェ

714:デフォルトの名無しさん
07/12/15 17:26:12
assqとassocはeqとequalの違いがあると本に書いてありました。
でも、どんな場合に違いがでるのかわからないので説明があるどこかのURLを教えてください。
お願いします。

715:デフォルトの名無しさん
07/12/15 17:49:32
>>714
eqとequalの違いは判る人?
それすら判らない人?

716:デフォルトの名無しさん
07/12/15 17:50:56
>>714
URLリンク(www.google.co.jp)

717:デフォルトの名無しさん
07/12/15 18:35:24
>>714
"Comparator"の違い。

718:デフォルトの名無しさん
07/12/15 18:37:57
>>715
わかりません。

>>716
やってみましたが下記のような感じで書いてあり、いまいち初心者にはピンと来ないのです。

eq
二つのオブジェクト(実体)が同じものの時。
実体が同じということは、その内容が変われば、他方の内容もそれにつれて変わるような関係。
シンボルや、整数値の場合は、名前や値が同じだけで同じと判別する。
equal
中身が同じものを指しているなら真。

719:デフォルトの名無しさん
07/12/15 18:49:29
>>714
一致する場合はこう。

(assq 'a '((a b) (c d))) ; => (a b)
(assoc 'a '((a b) (c d))) ; => (a b)

違いは以下のような場合。実行してみるとこういう違いがある。

(assq '(4 5) '(((1 2) 3) ((4 5) 6))) ; => #f
(assoc '(4 5) '(((1 2) 3) ((4 5) 6))) ; => ((4 5) 6)

>>718の説明から理解するのは難しい。

720:デフォルトの名無しさん
07/12/15 18:50:39
>>718
Javaの == と equals との関係に似ている
eq はポインタ同値

721:デフォルトの名無しさん
07/12/15 18:59:02
>>718は変。
eq
< 二つの引数が同じオブジェクトなら真。
equal
< 二つの引数が別のオブジェクトでも中身が同じなら真。

722:デフォルトの名無しさん
07/12/15 19:09:49
>>718
うるさいことを言わなければ、は以下のような使い分けになる。

・シンボルであることが明らかな場合は eq を使うことができる。(eqのほうが速い)
・そうでないときは equal が安全。
・その中間として eql ってのがある。構造のあるもの(リスト・文字列・配列など)でないことが
判っていればこちらのほうが速い。
・数値同士だと判ってるなら =、文字列同士なら string= がたぶん速い。

なぜこんなことになってるか知りたければもっと勉強するべし。

723:デフォルトの名無しさん
07/12/15 19:10:00
>>719-721
ありがとうございます。すごくよくわかりました。
(assq '(4 5) '(((1 2) 3) ((4 5) 6))) ; => #f
(assoc '(4 5) '(((1 2) 3) ((4 5) 6))) ; => ((4 5) 6)
の場合には(4 5)が別々のオブジェクトをさすポインタだからeqでは偽になるんですね。
でもequalだとオブジェクトが同じだから真になるんですね。

724:デフォルトの名無しさん
07/12/15 19:19:45
>>718
assqの実装は大体こんな感じになっている。

(defun assq (key alist)
(cond
((null alist) nil)
((eq key (car (car alist))) (car alist))
(t (assq key (cdr alist)))))

assocならこう

(defun assoc (key alist)
(cond
((null alist) nil)
((equal key (car (car alist))) (car alist))
(t (assq key (cdr alist)))))

>>724が言うようにeqlや=やstring=を使えば用途に応じて高速なものが使える。

725:デフォルトの名無しさん
07/12/15 19:25:35
>>723
> でもequalだとオブジェクトが同じだから真になるんですね。
< でもequalだとオブジェクトの中身が同じだから真になるんですね。


726:デフォルトの名無しさん
07/12/15 19:34:35
>>722>>724>>725
ありがとうございます。

>>722
むずかしいけど、>>724の解説をみて、使うと便利だということは理解できました (^ ^;

>>724
そういうプログラムなんですね。eqとequalの使われてるところとか参考になりました。

>>725
ありがとうございます。そういうことを書いたつもりでした。でもプログラミングのことを正確に話し言葉にするのって難しいです。


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch