06/10/31 23:53:40
SLIMEの起動画面はもう少し静かにならんのか
370:デフォルトの名無しさん
06/10/31 23:55:52
Win32版sbclがshift-jisに対応することを切に願う。
371:デフォルトの名無しさん
06/11/01 00:14:10
You can do it!
372:デフォルトの名無しさん
06/11/01 05:02:59
>>370
書いた。
373:デフォルトの名無しさん
06/11/01 07:44:45
>>369
Emacs 側の変数設定でできた気がする
374:デフォルトの名無しさん
06/11/01 08:18:38
アニメーションを抑制するなら、
(setq slime-startup-animation nil)
375:デフォルトの名無しさん
06/11/02 01:38:52
>371-372
shift-jis使えるの?
376:デフォルトの名無しさん
06/11/02 02:03:59
>>375
いつもの人がパッチ送ってくれてたよ。
CLX で日本語を表示させたくて、文字コードを JIS に変換する処理を書いた事があるけど、
ここら辺を参考にすれば自分で作るのも簡単だと思う。
URLリンク(sbcl.cvs.sourceforge.net)
377:デフォルトの名無しさん
06/11/02 03:06:02
パッチ当てれば普通に使えるみたい。
Windows で動かすにはコードページを alias として追加する必要があるのかな。
$ echo $LANG
ja_JP.SJIS
$ ./src/runtime/sbcl --core output/sbcl.core
This is SBCL 0.9.18.18, 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.
* sb-impl::*default-external-format*
:SJIS
* (coerce "表示" 'list)
(#▼U8868 #▼U793A)
* (string-to-octets "表示")
#(149 92 142 166)
378:デフォルトの名無しさん
06/11/02 18:50:54
実行ファイル作れるの?
379:デフォルトの名無しさん
06/11/02 23:03:14
>>378
作れるよ。ってか、もしかしてメーリングリスト見ながら書いてるノカ?
Windows でも cygwin/mingw があればいけるらしいけど…
380:デフォルトの名無しさん
06/11/02 23:13:35
えーと SBCL の話でいいのかな。
これの実行ファイル作成は
copy /b sbcl.exe + runtime.core runtime.exe
と同等の処理なので、必要なのは SBCL 自体だけ、cygwin も mingw も不要です。
381:デフォルトの名無しさん
06/11/02 23:28:36
ソカ、スマソ
382:デフォルトの名無しさん
06/11/03 00:18:38
それはともかく、Win32 で SBCL 使ってる香具師は
(sb-win32::ansi-codepage)
の内容を当てた patch を sbcl-devl に送れ。
1.0 で日本語 Windows がサポートされるかどうかの瀬戸際だぞ。
383:デフォルトの名無しさん
06/11/03 00:28:42
そういや SBCL は 1.0 の前にソースコードのクリーンアップがあると思ってたけど、
このままリリースに突入するっぽいね。kludge 系は潰すのかと思ってた。
384:デフォルトの名無しさん
06/11/03 00:49:23
何ヶ月か前の議論見ればわかるけど、SBCL が 0.10 ではなく 1.0 になるの
にはマーケティング的意味しかないよ。
とは言え多数の「いつかやろう」を「1.0 までにやろう」に push したのは
確かだから、充分に意味のあることだったと思う。
385:デフォルトの名無しさん
06/11/03 01:12:12
特に stabilize する意図は無いんだ。stable 版が出たらパッケージでも作ろうかとしてたんだけど、、、
1.0 は一般への影響はそれなりにあるのかな? SBCL を授業で使う大学とか出て来ると良いね。
386:デフォルトの名無しさん
06/11/03 09:49:45
quack.elに慣れると閉じ括弧を全部 ] で打つ癖がついてしまって困る。
387:デフォルトの名無しさん
06/11/04 21:04:21
SBCL on Windows でも日本語が使えるようになったよ。
URLリンク(article.gmane.org)
URLリンク(with2ch.net)
1.0 までにマージされるといいけど。
388:デフォルトの名無しさん
06/11/04 22:05:37
>>387
GJ!
389:デフォルトの名無しさん
06/11/06 01:14:32
SBCLのSTYLE-WARNINGは黙らせられないの?
390:デフォルトの名無しさん
06/11/06 22:06:13
schemeで、
(hoge a b c (hoge d e f) g)
のような式を書いたときに、
hogeが自分の括弧のネストレベルを判断して
動作を変えるようにしたいと思っています。
上の例でいえば、
1番目のhogeがネストレベル1の動作
2番目のhogeがネストレベル2の動作
をするようにしたいんですが、
やっぱりevalを定義し直すしか無いですか?
391:デフォルトの名無しさん
06/11/06 22:51:51
何をやりたいか、ではなく、何故そういうことをやりたいか、を書いた方が有用な助言が
得られる可能性は高いだろう。
392:デフォルトの名無しさん
06/11/06 23:14:18
>>391
俺は>>390じゃないけど、デバッグ用のユーティリティだと予想。
393:デフォルトの名無しさん
06/11/07 02:14:50
マクロにしろ関数にしろ、なんか変数にネストレベルを持って
それによって分岐するようにすればできるんじゃないの。
394:デフォルトの名無しさん
06/11/07 04:32:03
ネストの深さで動作が変わるのか?
読みにくそうだな。。。
>>390は>>391のレスにきちんと応えてほしい。
395:デフォルトの名無しさん
06/11/08 00:11:03
DrSchemeを触り始めたんですが、補完はどうやったらできるんですか?
Ctrl+Spaceを押すと「自動拡張」とステータスバーに出るけど、
意味がわからない。何かキーを押すと普通に入力されるだけだし……
396:デフォルトの名無しさん
06/11/09 22:00:44
URLリンク(journal.mycom.co.jp)
Cusp の紹介。
内容には色々言いたい点もあるけど...
397:デフォルトの名無しさん
06/11/12 18:42:22
lambda age
398:デフォルトの名無しさん
06/11/12 20:08:26
LISPでJavaのtoStringメソッドのような機構ってどのようなものがありますか?
399:デフォルトの名無しさん
06/11/12 20:30:00
(format nil "~a" ■)
400:デフォルトの名無しさん
06/11/12 20:34:30
(write-to-string ■)
401:デフォルトの名無しさん
06/11/13 00:16:24
(defmethod print-object ((object ■) stream)
...)
402:デフォルトの名無しさん
06/11/13 01:51:59
なんかエロイ
403:デフォルトの名無しさん
06/11/13 01:54:35
○○な部分を■で隠してあるんだな
404:デフォルトの名無しさん
06/11/16 21:04:25
SICP is dead.
405:デフォルトの名無しさん
06/11/16 21:55:51
Why?
406:デフォルトの名無しさん
06/11/16 23:34:42
MIT is phasing out 6.001.
407:デフォルトの名無しさん
06/11/17 01:47:50
後継の講座は Python らしいね
408:デフォルトの名無しさん
06/11/17 01:50:43
CMUCL か
409:デフォルトの名無しさん
06/11/17 01:57:32
そのボケ方は
Lisper 以外にはまったく通じないんだぜ?
410:デフォルトの名無しさん
06/11/17 02:00:38
ここに Lisper 以外がいるとでも?
411:デフォルトの名無しさん
06/11/17 18:58:34
リスパー伊東
412:デフォルトの名無しさん
06/11/17 19:06:51
CASIO AI-1000
413:デフォルトの名無しさん
06/11/18 06:20:48
schemeのcurrent-continuationは失敗だと思う。
それだったらgccみたいなLabel as Valueとcurrent-environment
を導入してくれた方がありがたい。
協調型スレッドもどきを作れたとしても、コストが掛かりすぎる。
IPとその時の環境が見えればccは実装できるんだから、
個別に取得できるようにすべきだった。
414:デフォルトの名無しさん
06/11/19 06:27:57
今までSchemeには予約語がないと思っていたけど、R5RSを見ると
defineとかの<syntactic keyword>は<variable>に含まれないので
予約語なのね。大抵の処理系では束縛できてしまうから、知らなかった。
415:398
06/11/19 12:16:10
(format nil "~a" ■)
cのfprintfみたいなもの。
(write-to-string ■)
javaのSystem.out.print()みたいなもの
(defmethod print-object ((object ■) stream)
...)
オブジェクト指向をした場合の
JavaのtoStringのメソッド的なもの
と理解しててよいのでしょうか?
416:デフォルトの名無しさん
06/11/19 16:15:06
アナロジーは理解の助けになる場合もあるが、例え話だけで理解したつもりになるのは
危険でもある。「理解しててよいのでしょうか」と聞かれたら「駄目」と答えるだろう。
それ以上のことをきちんと知りたいなら、ちゃんと勉強したほうがいい。
417:デフォルトの名無しさん
06/11/19 16:17:39
つか write-to-string の例えは違うんじゃね
418:デフォルトの名無しさん
06/11/19 16:30:17
toString() に一番近いのは write-to-string だろうな
419:デフォルトの名無しさん
06/11/20 01:18:44
何でみんな MIT Scheme 使わないの?
420:デフォルトの名無しさん
06/11/20 01:23:20
なんで MIT Scheme 使うの?
421:デフォルトの名無しさん
06/11/20 01:38:47
Scheme 界では数少ないネイティブコンパイラやん。
他はネイティブでも JIT とかトランスレータとかやん。
422:デフォルトの名無しさん
06/11/20 01:48:42
その割に遅かった希ガス(最近試してないけど)
423:デフォルトの名無しさん
06/11/20 04:03:44
同じく最近試してないけど、unicode 周りが悪夢のようなことになっていたような。
424:デフォルトの名無しさん
06/11/20 06:44:12
FreeBSD 6 で SBCL 使ってる人、テストに協力してくだされ。
URLリンク(article.gmane.org)
URLリンク(article.gmane.org)
425:デフォルトの名無しさん
06/11/20 13:22:45
>>424
weft didn't produce an output.
といって表示されねーので説明きぼんぬ。
426:デフォルトの名無しさん
06/11/20 14:37:56
>>425
SBCL のスレッドを FreeBSD で動かすパッチです。
Google Groups の archive
URLリンク(groups.google.com)
URLリンク(groups.google.com)
427:デフォルトの名無しさん
06/11/20 15:56:58
caseを試してみましたが、
SCMでは
(case 'hoge (('hoge) #t) (else #f)) => #f
となってしまいます。
(eqv? 'hoge 'hoge) => #t
なのに、なぜ最初の式では#tが返らないのでしょうか。
428:デフォルトの名無しさん
06/11/20 16:04:19
(case 'hoge ((hoge) #t) (else #f)) => #t
caseラベルは定数しか書けないので、暗黙にquoteされる
429:427
06/11/20 16:31:41
>428
教えていただいてから気がついて、
r5rs 7.3のcaseのコードを読み直してみたら、
(if (memv key '(atom ...)) ...
となっているのを確認しました。
ありがとうございます。
430:デフォルトの名無しさん
06/11/20 23:12:24
>>413
同意
431:デフォルトの名無しさん
06/11/20 23:46:49
>>424
CVS に取り込まれたみたいだね。お疲れさん。
俺は FreeBSD ユーザじゃないので試せないけど。
432:デフォルトの名無しさん
06/11/21 07:27:09
>>424
乙。
433:デフォルトの名無しさん
06/11/21 11:28:26
>>424
神パッチキターーこれで FreeBSD でもスレッドが!! うひょぉ
434:デフォルトの名無しさん
06/11/23 08:41:03
ところで、昨日一昨日のFranzセミナーの件はどうなったの?
435:デフォルトの名無しさん
06/11/23 09:48:12
>>413
禿げ上がる程同意
436:デフォルトの名無しさん
06/11/23 15:16:59
>>435が10年後に悔やむスレになりそうだ。
437:デフォルトの名無しさん
06/11/23 15:31:18
誰かLispで2chブラウザ作って!
438:デフォルトの名無しさん
06/11/23 15:53:13
>>437
あるだろ。
439:デフォルトの名無しさん
06/11/23 18:36:08
詳しく
440:デフォルトの名無しさん
06/11/23 18:47:02
navi2ch?
441:デフォルトの名無しさん
06/11/23 19:30:41
なるほど、そゆことか
442:デフォルトの名無しさん
06/11/23 22:47:16
>>437
rep2好きの俺だがKahuaとかで2chブラウザ作ったら面白そうだな
443:デフォルトの名無しさん
06/11/24 02:27:42
Kahuaで2chブラウザとかワロスwwwwwwwwwwwwwww
444:デフォルトの名無しさん
06/11/24 02:45:21
なにそれ?Webアプリになってるってこと?
445:デフォルトの名無しさん
06/11/24 08:37:19
>>444
rep2ってphpでかかれた2chブラウザって言うか補助サーバがあるんよ。
(ブラウザって言うのにすごい抵抗があるんだが)
446:デフォルトの名無しさん
06/11/26 18:51:55
Schemeで
(string->???? "(lambda () 5)")
> 5
となるような関数ってありますか?
447:デフォルトの名無しさん
06/11/26 19:06:31
作ればある。でも宿題ならもうちょっとちゃんと問題文を書かないと…
[リストの三番目を返す?]
gosh> (define (string->???? str) (caddr (read-from-string str)))
string->????
gosh> (string->???? "(lambda () 5)")
5
[関数を評価する?]
gosh> (define (string->???? str) ((eval (read-from-string str) ())))
string->????
gosh> (string->???? "(lambda () 5)")
5
448:446
06/11/26 19:21:57
>>446
ありがとうございました。自作CUIにコピペさせて頂きます。
で、[関数を評価する]がしたかったのです。
類推で (string->list string) としたら
◯| ̄|_ だったもので…
449:デフォルトの名無しさん
06/11/26 22:10:11
◯| ̄|_がかえってくる関数
450:デフォルトの名無しさん
06/11/27 09:36:00
なるほどなあ。
string->number等との類推で考えればstring->listをread-from-stringみたいに
考えるのも一つの解釈か。
451:デフォルトの名無しさん
06/11/27 12:57:27
.NETでつかえるSchemeの実装ないですか
それあればそれなりに強力なライブラリと使える言語の両方が手に入るのに・・・(´・ω・`)
452:デフォルトの名無しさん
06/11/28 04:02:35
触ったことはないけど。
URLリンク(www.ccs.neu.edu)
453:デフォルトの名無しさん
06/11/28 06:44:04
◯| ̄|_
○| ̄|_
微妙に丸の文字が違うな。
454:デフォルトの名無しさん
06/11/28 07:01:54
◯◯◯
◯◯◯◯◯
◯| ̄|_ ̄ |◯ プカプカ
~~~~~~~~~~~~~~~~~~~~~~~~
455:デフォルトの名無しさん
06/11/29 11:37:32
◯| ̄|_
○| ̄|_
◯| ̄|_
○| ̄|_
◯| ̄|_
○| ̄|_
|
|
|
456:デフォルトの名無しさん
06/11/30 15:15:55
SBCL 1.0!
457:デフォルトの名無しさん
06/12/01 05:32:39
遂に来たね。
458:デフォルトの名無しさん
06/12/01 20:20:00
srfiのtexiって無いですか?
infoでも良いんですが。
できれば全部揃っているとうれしいです...
459:デフォルトの名無しさん
06/12/01 20:34:05
URLリンク(slashdot.jp)
460:デフォルトの名無しさん
06/12/02 09:17:04
うわぁ。さすがスラドだね。
461:デフォルトの名無しさん
06/12/02 12:48:20
あらためて思うけどCLの実装系ていいよね
ちゃんと仕様のあるバカでかい関数群が確実にあるんだから
462:デフォルトの名無しさん
06/12/02 13:20:10
>>461
そうだね。よく「仕様が巨大」とか言われるけど、今の基準ではそれほどでもないと思う。
(JavaのクラスライブラリとかSRFIを全部入れたSchemeのほうが大きいんじゃないかな)
でも、そろそろXMLとかネットワークとかのいまどきの機能を加えたCLtL3を制定してほしい。
463:デフォルトの名無しさん
06/12/02 19:48:53
とりあえず「言語仕様」と「ライブラリ仕様」を分けて~
んで「ライブラリ仕様」は小刻みにupdateさせてやってほしい
464:デフォルトの名無しさん
06/12/02 22:12:11
CLRFI というのがあるけど流行ってないねえ。
標準化って実装するよりもパワーが必要だから、asdf を使って主要な処理系で
動くようにすればそれでいいじゃないかということなのかも。
465:デフォルトの名無しさん
06/12/03 01:11:03
lispはマクロが強力だとのことなので、
例えば(cl-to-scheme cl-func)みたいな感じでclのライブラリをscheme用に変換してくれるマクロがありそうな気がしますがどうなんですか?
また、schemeはコンパイラがないので、sbclとかを使うために、
(scheme-to-cl scheme-func)みたいなマクロがあると便利にlispはマクロが強力だとのことなので、
例えば(cl-to-scheme cl-func)みたいな感じでclのライブラリをscheme用に変換してくれるマクロがありそうな気がしますがどうなんですか?
また、schemeはコンパイラがないので、sbclとかを使うために、
(scheme-to-cl scheme-func)みたいなマクロがあると便利におもいますが、
存在するのでしょうか?おもいますが、
存在するのでしょうか?
466:デフォルトの名無しさん
06/12/03 01:14:43
lispはマクロが強力だとのことなので、
例えば(cl-to-scheme cl-func)みたいな感じでclのライブラリをscheme用に変換してくれるマクロがありそうな気がしますがどうなんですか?
また、schemeはコンパイラがないので、sbclとかを使うために、
(scheme-to-cl scheme-func)みたいなマクロがあると便利におもいますが、
存在するのでしょうか?
467:デフォルトの名無しさん
06/12/03 03:24:03
まぁ、CL で Shceme を実装することは可能だし、Scheme で CL を実装することもできるからな。
>>466 の言うようなマクロはどっちも可能だが、CL と Scheme は思想が異なるのでメリットはあまりない。
CL で Scheme を実装するのは結構簡単(Norvig の教科書だと 10 ページくらいでつくってた)なので
学生の課題などで結構見かける。 cl-to-scheme はメリットがあまりないのと、CL を実装するコストが
大きいのでだれもやらないんじゃないか。
468:デフォルトの名無しさん
06/12/03 03:26:19
2chもまともに使えない奴には教えてやらん
469:デフォルトの名無しさん
06/12/03 05:12:53
schemeにはコンパイラが無いなんてどこで聞いてきたんだい。
MIT-Scheme
Larceny
Chez
Chicken
Stalin
Bigloo
Gambit
PLT
あと何かあったっけ。歴史的にはRabbitとかTとか。
470:デフォルトの名無しさん
06/12/03 10:33:14
つうか荒しなんじゃね? c.l.l で暴れてる gavino みたいなタイプの。
471:デフォルトの名無しさん
06/12/03 12:03:45
Common Lisp と Scheme とでは reader の仕様が違うから、マクロでの実装は
無理なんじゃないかな。
472:デフォルトの名無しさん
06/12/03 12:22:36
URLリンク(unit.aist.go.jp)
テレビで見るたびに思ってたんだけど、このロボットはリスプっぽいよね
473:デフォルトの名無しさん
06/12/03 13:47:40
>>470
c.l.lなんて流量たくさんでとても読めない。どうやって読んでるの。
474:デフォルトの名無しさん
06/12/03 14:13:29
『Scheme について』
URLリンク(cl-www.msi.co.jp)
やっぱり Scheme は学習用ってことなのかね
475:デフォルトの名無しさん
06/12/03 14:30:33
>>459-460
あーそれは俺が酔っ払いながらタレコんだやつだな。
しかし、自分では実装側にいるつもりだったのに、使ったことない事情通扱い
されてたのにはまいった。
476:デフォルトの名無しさん
06/12/03 14:54:22
>>469
CL でいう SBCL みたいな位置付けのが無いね。
日本人はみんな Gauche を使ってるイメージだけど。
477:デフォルトの名無しさん
06/12/03 15:36:34
他言語との比較はいいけど、lisp 言語族の中くらいは仲良くやってほすぃ…
478:デフォルトの名無しさん
06/12/03 16:09:20
>>474
その判断をするのはスキーム設計者の反論を聞いてからの方が良いのではないかな?
479:デフォルトの名無しさん
06/12/03 17:23:57
反論聞きたいですねー
480:デフォルトの名無しさん
06/12/03 17:36:46
反論じゃないけど、継続(continuation)と関係あるような気がするんだよねー
481:デフォルトの名無しさん
06/12/03 17:57:36
schemeはいつまで経ってもオモチャレベルから脱しきれない印象があるんだよね。
これは多くの人が感じていることだと思う。
ただ、口に出すとはばかられるから、まあ、サイレントマジョリティって感じかな。
482:デフォルトの名無しさん
06/12/03 18:36:23
黒田寿男って何様のつもりなんだか・・・。
483:デフォルトの名無しさん
06/12/03 18:52:26
Scheme 好きも CL をバカにしたり見下す人が多いからお互い様だろ。
いちいち気にしないほうがいいと思うよ
484:デフォルトの名無しさん
06/12/03 18:55:42
ぜひ>474に対する意見聞いてみたい。
c.l.sあたりに簡単な翻訳つけて投下すれば良いんだろうか。
485:デフォルトの名無しさん
06/12/03 19:02:26
>>483
お互い様か。そうだったね。あまりいい評判がない guile だけど Linux で
成果をあげようと精進してるんだろうなーと思い直せた。黒田寿男みたいに
プロパガンダに走らないきちんとした議論をするには Scheme にもきちんと
したアプリケーションが必要なんだろう。ところで Scheme で書かれた一番
大きいアプリケーションってなんだろう?
486:デフォルトの名無しさん
06/12/03 19:05:08
>>484 それはウザいだけで何も得るところはないのでやめとけ。
Lsip-1 vs Lisp-2 とか定番のフレームになるだけ。
487:デフォルトの名無しさん
06/12/03 19:12:22
>>484
下らん煽りうぜーよ。好きなほう使えばいいだけじゃん。
そんな論争で得られるものなんてもうほとんど残っていない。
俺はCL派だが、Schemeを攻撃しようなんて思わんぞ。
488:デフォルトの名無しさん
06/12/03 19:13:01
煽る奴はたいていどちらかの経験しかない奴だな
489:デフォルトの名無しさん
06/12/03 19:19:18
これが後の黒田発言である。
490:デフォルトの名無しさん
06/12/03 19:29:26
LL言語批判くらいで止めとけばよかったのにねー
491:デフォルトの名無しさん
06/12/03 21:59:03
黒田の発言ってこれかな
URLリンク(practical-scheme.net)
> この事例を解説された数理システムの黒田氏は、懇親会とかでも
> 「SchemeなんかをCLと一緒にしないで欲しい。」とSchemeをけちょんけちょんに
> おっしゃるわけで、とても悔しいわけだが、それでもとにかく実際の業務を通して
> 実力を示しておられるからこそ、あそこまで自信を持って主張できるのだろう。
しかし Scheme 好きの人間の前でこれを言うってすごいなぁ
492:デフォルトの名無しさん
06/12/03 22:33:07
おまえらおちつけよ。もうちょっと心を広くもてよ。
どっちがというと CL のセミナーで CL マンセー発言を聞いて気分を害するほうがどうかと…
493:デフォルトの名無しさん
06/12/03 23:57:12
2 蓑輪 太郎Mona OSにおける次世代Schemeシェルの開発
詳細キボンヌ
494:デフォルトの名無しさん
06/12/04 00:09:01
Common Lisp 好きだけど、スクリプト言語批判の ANSI CL には無駄な仕様が
*1つも* 無いってのはどうかと思った。
loop マクロはともかく、X3J13 自身が deprecated だと言ってる -if-not 系
の関数とか、format の ~R や ~P などの「それは本当にフォーマット文字列で
指定すべきことなのか?」な仕様とか。
495:デフォルトの名無しさん
06/12/04 00:23:29
~r のような冗談機能はやっぱり必要ですよ
496:デフォルトの名無しさん
06/12/04 01:30:39
>>494 「Lisp の良いとこを取ろうと思ったら~」省略していい無駄な仕様はないってことだろう。
つうか、後半の文章を読むとコンパイラ周りやスペシャル変数なんかを備えずに、ほんの一部の機能だけを
実装しただけで、Lisp の良いところを備えたとか Lisp を超えたとか主張するのを苦々しく思ってたんだろうね。
ふと、R な言語の人の昔 Lisp セミナーの印象に関する記事読んで苦々しく思ったのを思いだした。
> ソースは全然見てないんだけど、印象からは、AllegroServeの完成度は、 WEBrickといい勝負と見た。
発表者の力量不足もあったかもしれんけど、そりゃねーだろ。
497:デフォルトの名無しさん
06/12/04 03:40:18
>>474 のマクロが作れないってどういう事?
498:デフォルトの名無しさん
06/12/04 03:46:15
schemeはdefine-syntax系だけでdefmacro相当なのはないんじゃないっけ?
まあだいたい処理系毎にあるんだろうけど。
499:デフォルトの名無しさん
06/12/04 03:52:30
Scheme は Lisp ではないってところが気になる。
500:デフォルトの名無しさん
06/12/04 03:56:41
SchemeはCommon Lispではない、の間違いではないかと。
501:デフォルトの名無しさん
06/12/04 04:09:14
>>474 のは、>>486 みたいな理解でおけ?
Scheme の勉強始めようと思って、環境をつくろうとしてたところなので、
出鼻をくじかれたような感じで。
502:デフォルトの名無しさん
06/12/04 04:35:48
つまんでみれば実際どうなのかわかるんじゃねえの?
503:デフォルトの名無しさん
06/12/04 05:11:11
つまんだくらいで、lispはプログラムを書くプログラムが書けるってのがわかるのか…
しかも、scheme と common lisp の違いまで。
504:デフォルトの名無しさん
06/12/04 06:18:38
少なくとも、つまんでみなきゃなんにもわからんだろ?
505:デフォルトの名無しさん
06/12/04 06:54:34
> 少なくとも
ホントに「少なく」なったな
506:デフォルトの名無しさん
06/12/04 07:02:49
つまんね
507:デフォルトの名無しさん
06/12/04 07:05:03
つまんでますよ、どっちも。
508:デフォルトの名無しさん
06/12/04 07:42:32
まぁ、自分に都合の悪い流れは誰でもつまらない。
509:デフォルトの名無しさん
06/12/04 13:16:10
>>501
少なくともまだ勉強してない人には関係ない話だ
万一Schemeが無駄なものであってもSchemeの勉強は無駄にはならないから安心して勉強汁w
510:デフォルトの名無しさん
06/12/04 14:37:19
どれだけ立派な肩書きがあろうと自社の製品のためだけに他を中傷して自分の利益を
はかろうとする人間は技術者として失格だと思う。自分のオナニーのために他人を
レイプして楽しんでるように見えた。
511:デフォルトの名無しさん
06/12/04 14:57:46
>>510
それコの業界の人ほとんどみんな当てはまっちゃうよ……(LinusタンからBillGまで)。
512:デフォルトの名無しさん
06/12/04 16:57:55
>>510
レイプした時点で既にオナニーではないと思う
513:デフォルトの名無しさん
06/12/04 17:23:41
レイプは、相手の気持ちを無視して自己完結しているという意味で、
オナニーと同類。
514:デフォルトの名無しさん
06/12/04 21:24:04
つかshiroさん呼んでるくせに普通に失礼だよなw
515:デフォルトの名無しさん
06/12/04 21:38:43
「朝まで生テレビ」方式だな。意図的に話が噛み合わないとを期待したメンバ。w
516:デフォルトの名無しさん
06/12/04 23:36:19
>>514
呼んではないみたいよ
ハワイからの中継でやったみたい
517:デフォルトの名無しさん
06/12/05 06:22:54
FreeBSDで動くお薦めのCommon Lisp処理系を教えてくだされ。
518:デフォルトの名無しさん
06/12/05 08:20:56
sbcl
519:デフォルトの名無しさん
06/12/05 08:31:53
ラムダ式の意味について質問です.
λxyz.MNO という式は,以下のコードと同じことを意味している
のでしょうか?
(lambda (x y z)
((M N) O))
520:デフォルトの名無しさん
06/12/05 09:00:28
日本語でおk
521:デフォルトの名無しさん
06/12/05 14:02:07
>>519
違う。
522:519
06/12/05 14:49:40
では,λxyz.MNO というラムダ式を Scheme の表現に対応
させて表すことはできるでしょうか? できるとしたら,どんな
表現になるでしょうか?
523:デフォルトの名無しさん
06/12/05 14:52:43
M、N、O、がそれぞれ何かによる
524:デフォルトの名無しさん
06/12/05 15:21:54
λxyz を (lambda (x y z) ...) と書いちゃう時点でだめだめ。
細切れで質問されても面倒なだけだから宿題なら問題文を全部書け。
525:519
06/12/05 17:25:21
>>523
M, N, O は,それぞれ任意のラムダ式,ではどうでしょう?
>>524
学生ではないので...
ラムダ計算がどんなものなのか知りたくなって本など読み始めたんです
が,入り口の記法のところですでにつまづいているので,Scheme に対
応させれば多少は理解しやすくならないかと思って質問しています.
526:デフォルトの名無しさん
06/12/05 18:50:32
さあもりあがってまいりました
527:デフォルトの名無しさん
06/12/05 18:51:17
カリー化云々言わなけりゃ合ってね?
528:デフォルトの名無しさん
06/12/05 19:01:18
ラムダ計算=LISP ではないので、スレ違い。
ラムダ計算の話がしたいのなら、数学とかの板へ池。
529:デフォルトの名無しさん
06/12/05 19:07:48
(lambda (x) (lambda (y) (lambda (z) ((M N) O)))) じゃね?
530:519
06/12/05 21:43:21
>>527
> カリー化云々言わなけりゃ合ってね?
なるほど.カリー化を省略しなければ,
>>529
> (lambda (x) (lambda (y) (lambda (z) ((M N) O)))) じゃね?
になる,っていう理解でいいんですかね.
>>528
数学板だと,今度は Scheme がスレ違いっぽいので...
Scheme や Lisp をやってから理論的背景のラムダ計算に興味を
持つ人って多そうですし,ラムダ計算に詳しい人も多いんじゃ
ないかと思ってここで聞いてみました.
531:デフォルトの名無しさん
06/12/05 23:36:32
λ式と対応させるなら haskell の方が楽だと思うけど
532:デフォルトの名無しさん
06/12/06 01:12:19
λ計算を学ぼうとする Schemer への助言としては、lambda 式にたとえて
理解しようとするのはやめとけ。
たとえば、λxyz.z x y ≡ λxy.λz.z x y つまり cons というのは
(lambda (x y z) (z x y)) と置き換えてちゃわからんぞ。
533:デフォルトの名無しさん
06/12/06 01:41:46
お前にはセンスが無いの一言で片づければOK
534:デフォルトの名無しさん
06/12/06 02:29:35
533 がセンスありそうには見えない
535:デフォルトの名無しさん
06/12/06 03:48:42
>>533の1行でセンスの有無をはかれるとは思えないが、
それをはかれるつもりでいる>>534の1行レスからは
負のセンスに対する悪寒みたいなもんを感じる。
536:デフォルトの名無しさん
06/12/06 11:16:07
(λ計算の)λ式において関数抽象 λ は結合がゆるく,関数適用は結合がきつくて左結合
さらに λxy.M は λx.(λy.M) の略記
だから λxyz.MNO = λx.(λy.(λz.MNO)) = λx.(λy.(λz.((MN)O)))
λ計算ではCurry化は当たり前のように使われるけど,
SchemeにはCurry化がないから ; つまり (lambda (x y) ...) != (lambda (x) (lambda (y) ...))
λ計算の実例としては不適当
有名な "SKK = I" を試そうとS, Kを定義して ((S K K) 'x) とやっても途中で「引数が足りません」になっちゃうね
Curry化のあるOcamlかHaskellをお薦めする
ここにはλ計算を知ってる人が多いのは確かだと思うよ
537:519
06/12/06 22:45:28
>>532
> λxyz.z x y ≡ λxy.λz.z x y
がラムダ式の規則でそうなる,というのはわかります.
また,
> λxy.λz.z x y つまり cons
も,SICP の Exercise 2.4 あたりにあるように,
(define (cons x y) (lambda (z) (z x y)))
の話だろうという見当はつきます.でも,
> λxyz.z x y ≡ λxy.λz.z x y つまり cons
となると何が言いたいのかよくわからないのですが...
また,
> (lambda (x y z) (z x y))
というのはどのラムダ式を置き換えてるんでしょうか?
λxyz.z x y を
(lambda (x) (lambda (y) (lambda (z) ((z x) y))))
と置き換えてもわからない? なにが???
>>536
解説ありがとうございます.
どうもカリー化が鍵の一つのようなので,
>>531
Haskell もぼちぼち勉強してみます.
538:デフォルトの名無しさん
06/12/06 23:59:54
haskell だとYコンビネータが
y f = f (y f)
で終わりなのが気持ちいいな
539:デフォルトの名無しさん
06/12/08 23:15:57
黒田がスクリプトをボロクソに言っているヤツってこれか
URLリンク(cl-www.msi.co.jp)
Common Lisp 教の狂信者だなw
540:デフォルトの名無しさん
06/12/08 23:48:25
孤高の絶対王者という己の脳内ポジションを
アジ文章で楽しく消費してみました、ってだけの文章だな・・・。
理解されたいのかされたくないのか、とても微妙な乙女心を感じる。
541:デフォルトの名無しさん
06/12/09 19:57:43
>>539
これ結局のところ
現場で使って大丈夫なんですか?(ほかの連中ついてこれるの?の意)
と問われたときに困るだけなんだよね。
文句言う位なら普通に仕事でつかってアピールできるように浸透させないといけないんだけど
それをやるのは俺様の様な人間のすることではないって感じで反感しかわかなくなるんだよね。
<チラシの裏>
好きな言語ほどその言語の愛好者が怖い人やキモチワルイ人ばっかりな今日この頃だなぁ~
</チラシの裏>
542:デフォルトの名無しさん
06/12/09 21:22:15
できる人は協調するより自分で全部やったほうが速いのも事実
543:デフォルトの名無しさん
06/12/09 22:10:17
Common Lispに標準規格が存在する利点は
それができる人間(できなきゃ学べ)前提の仕事場にできるってことだろ。
その条件に当て嵌らない奴ばっかの環境にわざわざ引き降ろして論じても
意味がない。
> 文句言う位なら普通に仕事でつかってアピールできるように浸透させないといけないんだけど
> それをやるのは俺様の様な人間のすることではない
当然だろ。後者の環境にいる決定権のない奴固有の事情なのだから、その解決を
既にそういう(前者の)環境にいる人間に要求するのは筋違い。
544:デフォルトの名無しさん
06/12/09 22:40:06
規格書が読めるレベルがようやく一人前、だとは思う
だけどそのレベル以下の奴って山ほどいるんだよな…
545:デフォルトの名無しさん
06/12/09 23:09:17
>>543
> Common Lispに標準規格が存在する利点は
> それができる人間(できなきゃ学べ)前提の仕事場にできるってことだろ。
あまり現実的でない利点だと思う。
標準規格が無かろうが「できなきゃ学べ」は仕事場の前提であり、
しかし標準規格があろうが、その前提がまっとうに機能する保証はあまりない。
「できない人を居丈高に自信満々に罵る際の、精神的後ろ盾」
という程度の利点だね、これは実質的には。
546:デフォルトの名無しさん
06/12/09 23:18:07
しかしさあ、ANSI X3.226-1994 が実用的かというと、イマドキの用途に使うに
は国際化もソケットもスレッドも正規表現も XML もないわけで、結局実装次第
なわけだろ。
んで、実装次第ということであれば Scheme だってちゃんと選択肢に入るんじゃ
ないか? 言語仕様自体はちゃんと標準化されてるわけだし。
まあ Scheme で hygienic なマクロが書けないなんて言っちゃう人の Scheme
批判なんてまともに読むだけ無駄なのかもしれんが。
547:デフォルトの名無しさん
06/12/10 00:11:46
>>546
正規表現はリーダーマクロがあるから不要、
XMLは所詮劣化S式だから無視、とか言うんじゃね?w
国際化はなんて言うのか聞きたいねぇ。
548:デフォルトの名無しさん
06/12/10 00:31:49
>>547
>とか言うんじゃね?w
知ってるんじゃん…
549:デフォルトの名無しさん
06/12/10 00:57:42
なんかムキになってる?
>>545
仕事でつかう事を考えれば、なるべく厳密な仕様があったほうがいいだろう?
言語のコア部分が実装依存って結構キツいよ。で、仕様は最小限であるべき、と
できるだけリッチであるべきという思想の違いだろ。
>>546
名前の衝突とかいってるから r5rs にパッケージシステムがないっつー事をいってんじゃない?
複数人で並行で別々のモジュールを作るとさ、パッケージがないときついからな。あと、俺たち
Scheme 派も CL の末尾再帰の最適化が処理系依存だとか文句いってるからおたがいさまだろ。
不毛なフレームを避けるためにも、かるくスルーすればいいだろう。
あと、ソケットとか XML は普通言語仕様には入れないと思うよ。r6rs にも入らないだろう。
つうか、そんなの入ったらヤダ。r7rs くらいには並列計算が進歩してネットワークあたりまえ
とかなってるかもしれんけど、少なくとも今はねぇ。
550:デフォルトの名無しさん
06/12/10 01:39:47
いやホント、なんでそんなムキになってるの
551:デフォルトの名無しさん
06/12/10 01:47:41
べつにレベル低い話じゃなけりゃムキになってもいいと思うけど
552:デフォルトの名無しさん
06/12/10 02:11:02
でも、見た目よりレベル低いと思うよ。単に頑固な人じゃないかな。
553:デフォルトの名無しさん
06/12/10 02:18:18
どのへんがレベル低いか教えて
554:デフォルトの名無しさん
06/12/10 02:35:51
人としてだと思う
555:デフォルトの名無しさん
06/12/10 02:38:25
>>553
規格をユーザーとしてしか読んでない。たぶん CLOS の実装すらしたことない。
556:デフォルトの名無しさん
06/12/10 02:46:21
なるほど、実装経験者でなければ
レベルが低い議論にしかならないということですね。
557:デフォルトの名無しさん
06/12/10 04:18:26
>>556
馬鹿な誤読なのか馬鹿な皮肉なのが微妙だけど、
いずれにせよピント外れだなぁそれ。
558:デフォルトの名無しさん
06/12/10 09:37:25
>>545
> その条件に当て嵌らない奴ばっかの環境にわざわざ引き降ろして論じても
> 意味がない。
自分の都合と合わないことは直後に書いてあっても読まないのかww
559:デフォルトの名無しさん
06/12/10 10:13:40
その箇所が543の言い分をどう支えるのか、まったく意味不明だけど。
文末に草生やすくらい「じしんまんまん」みたいだから、よかったら説明してよ。
560:デフォルトの名無しさん
06/12/10 10:31:17
URLリンク(cl-www.msi.co.jp)
で書かれていることはgensymで他と重ならない名前を作り出せるかってこと ?
で、ほとんどのScheme(少なくともGaucheでは)
(規格には入ってないオプショナルなものだけど)
できるってことでおk ?
でもScheme的には同様なことはdefine-syntaxつかえよって
いう認識でよろしいでしょうか ?
561:デフォルトの名無しさん
06/12/10 12:08:58
本当に不毛な論争になったね。
Lisp & Schemeに栄光あれ。
pythonに負けるな…
562:デフォルトの名無しさん
06/12/10 13:37:42
不毛はC++の役割。
Lisp系はカッコつけなきゃね。
563:デフォルトの名無しさん
06/12/10 13:52:02
ズッ
564:デフォルトの名無しさん
06/12/10 14:46:31
(/ 1 4)
565:デフォルトの名無しさん
06/12/10 15:29:13
そういえば、タグ付き有理数みたいなのを実装した処理系ってあるのかな。
64bit 環境だと 29bit / 29bit くらいは楽勝で埋め込めそうだけど。
566:デフォルトの名無しさん
06/12/10 16:00:34
>>561
rails の流行で ruby が来そう
567:デフォルトの名無しさん
06/12/10 16:25:56
RoR は Ruby ならではってわけじゃないからなあ。LoL なんかもあるし。
568:デフォルトの名無しさん
06/12/10 22:47:30
AllegroServe + AllegroCache は負けてないと思うけど、情報や人材が・・・
569:デフォルトの名無しさん
06/12/10 22:49:34
>>568
良いんだけど、あの値段はさすがに躊躇するのだよな。
サーバ増えたときコストが重くのしかかる。
570:デフォルトの名無しさん
06/12/10 23:03:45
common lispと心中する気がないと個人じゃ買えないとか。
企業でも使えないと判断したときのリスクが高いとか。
571:デフォルトの名無しさん
06/12/10 23:22:20
Professional なら個人でも買えるだろ…一昔前の開発環境だと思えば。
Kahua ってどうなのかなー?どっかで運用実績ある?
572:デフォルトの名無しさん
06/12/10 23:25:28
web で allegro は無いだろう。
負荷に応じてスケールアウトしてくには高杉。
573:デフォルトの名無しさん
06/12/10 23:40:24
用途次第じゃないでしょうか。 まぁ、バックエンドの Oracle は定番でしょうねぇ。
つうか RDB 以外は評価の対象にすらならないけど。
574:デフォルトの名無しさん
06/12/10 23:58:56
Kahua って最近どうなのかね?
このスレでも話題でないけど開発低調なの?
575:デフォルトの名無しさん
06/12/11 00:05:00
kahuaはチャット(lingrのgauche部屋)ではたまに話題になってるっぽいよ。
MOPとかいう手法を使って負荷分散するのがどうのとか書いてたが
ほとんど理解できてないので進んでるのか進んでないのかよくわからんかった。
過去ログも見れるので興味あるなら見てみればいんでね?
576:デフォルトの名無しさん
06/12/11 00:09:59
>lingrのgauche部屋
URLリンク(www.lingr.com)
ここだな。
577:デフォルトの名無しさん
06/12/13 00:33:46
>>567
Rubyならではってのは無いけど十分牽引力になってるみたい
Editors' Choice 2006 | Linux Journal
URLリンク(www.linuxjournal.com)
ここの言語部門でRubyがベストチョイスにされているあたり確実に流れが来ているのでは
まぁRubyはマクロが無いのが弱いと思うんだけどねぇ
578:デフォルトの名無しさん
06/12/13 12:55:12
syntax-rulesって、
パターンごとに自分自身の名前を書かなきゃならないですけど、
あれって無くてもいいような気がするんですがどうなんでしょう。
たとえば、
(define-syntax begin
(syntax-rules ()
((begin exp ...)
((lambda () exp ...)))))
は、
(define-syntax begin
(syntax-rules ()
((exp ...)
((lambda () exp ...)))))
と書けても良い気がします。
579:デフォルトの名無しさん
06/12/13 13:05:06
素人なんで良く知らんけど名前書かないと (foo . args) みたいなのが表現出来ないんじゃなかろうか。
あと名前じゃなくて適当なシンボルならなんでもいいような気がする。
580:デフォルトの名無しさん
06/12/13 13:05:56
君が知りたいのは "_" か?
581:デフォルトの名無しさん
06/12/13 13:09:22
それはだから適当なシンボルでしょ
582:デフォルトの名無しさん
06/12/13 13:12:47
580は579を見る前に書いたので悪しからず
583:578
06/12/13 13:19:18
>579
すいませんよくわからないんで、
もう少し詳しくお願いします。
>580
"_"ってなんですか?
r5rsのindexには無いみたいなんですが...
584:デフォルトの名無しさん
06/12/13 13:24:28
(define-syntax begin
(syntax-rules ()
((_ exp ...)
((lambda () exp ...)))))
585:デフォルトの名無しさん
06/12/13 13:28:14
>>583
こんなんとか
(define-syntax foo
(syntax-rules ()
((_ x) x)
((_ . x) 'x)))
(foo '(1 2 3)) => (1 2 3)
(foo 1 2 3) => (1 2 3)
586:578
06/12/13 13:48:14
>584
なるほど、そんな書き方もあるんですね。
ありがとうございます。
>585
それだったら、
lambda式がやっているような感じで、
(define-syntax foo
(syntax-rules ()
((x) x)
(x 'x)))
の様にすれば良い気がします。
ただ、(x 'x)はわかり難いので、
何か別の表記をいれた方が良い気もしますが。
つまるところ、syntaxをlambda式みたいに使えないのか
って事なんです...
587:デフォルトの名無しさん
06/12/13 13:50:41
俺言語作るのならありかもしれんが、とりあえずSchemeはそう決まってるってことだろ
588:デフォルトの名無しさん
06/12/13 14:00:50
>>586
syntax-rules がそうなっているのは名前がある方が再帰を書きやすいからかな
(define-syntax and
(syntax-rules ()
((and) #t)
((and test) test)
((and test1 test2 ...)
(if test1 (and test2 ...) #f))))
589:578
06/12/13 14:12:09
>587
すいません質問のしかたが悪かったみたいです。
なぜschemeはsyntax-ruleの各々のパターンの先頭に
自身の名前を書くような設計を選択したのだろうか、
ということです。
たまたまそういう書式を選択したのか、
それとも>578みたいな事をすると、
何か問題が発生するのかどうかということを知りたいんです。
>588
それはありますね。
ただ、再帰関数を書くときは無くても何とかやっているので、
同じでもよくないか、とか考えているんですが...
590:デフォルトの名無しさん
06/12/13 14:15:58
引数のパターンじゃなくて、評価しようとする式のパターンなんじゃね?
591:578
06/12/13 14:29:56
>590
なるほど、説得力がありますね。
592:デフォルトの名無しさん
06/12/13 18:48:03
Schemeでマクロと継続はすげーわかりにくいんだが、
R5RSではサラっと流しすぎじゃね?
もっと細かく説明した公式な文章ってある?
593:デフォルトの名無しさん
06/12/13 19:26:11
R5RSは仕様であって解説とかチュートリアルではないからね。
公式になるのかどうかわからんか、細かいこと知りたければ論文だろう。
R5RSのマクロなら、ClingerとReesの"Macros That Work" (POPL91) とか。
継続は何がいいかな。すげー基本的な概念なんで、初出とか思いつかない。
チュートリアル的なものならFriedmanのPOPL88のノートなんてどうだ。
URLリンク(www.cs.indiana.edu)
594:デフォルトの名無しさん
06/12/13 22:16:13
>>593
わかりにくいだけじゃなくて、
あれで挙動を規定できてるのか?
595:デフォルトの名無しさん
06/12/13 22:42:30
>>594
規定できてなかったら
処理系の実装者が「ここが曖昧だあー」って騒ぐんじゃないか?
596:デフォルトの名無しさん
06/12/14 02:45:25
>>595
「変数とは何か」くらい自明なものとみなされてる,とか
597:デフォルトの名無しさん
06/12/14 04:08:24
小さい処理系のソースを見りゃ良いんじゃないか。
598:デフォルトの名無しさん
06/12/14 04:45:33
>>594
まあ、comp.lang.schemeあたりを見てると変なケースについてこれは
どうなんだって議論が時々出るから、完璧じゃないな。
継続については7.2章もあるし、かなり良く理解されていると思う。
但し、dynamic-windのbefore/after thunkの継続が未定義になってる
のは欠点。(R6RS案では明確になってたはず)
マクロについても、特にマクロを生成するマクロについて曖昧な点が
あったような気がする。
>>596
「変数とは何か」は7.2章に書いてあるのでだめかな。
だがR5RSに突っ込むならもっとでかい穴がある。マクロで生成される
internal defineとか、トップレベルのセマンティクスとか。
599:デフォルトの名無しさん
06/12/15 04:28:38
SBCL を最初に知ったのはこのスレだったのでご報告。
「お前のパッチ多過ぎ、自分でコミットしろ」と言われて developer になる
ことになりました。このスレがなければ SBCL と出会えなかったかもしれない。
感謝。
600:デフォルトの名無しさん
06/12/15 04:36:53
!素敵
601:デフォルトの名無しさん
06/12/15 07:50:54
>>598 おめでとー。SBCL にはお世話になってます。今後ともがんばってください。
602:デフォルトの名無しさん
06/12/15 08:06:32
599すげえ。
めでたいのでage
603:デフォルトの名無しさん
06/12/15 15:31:01
すげー。sbcl とλ の未来のためにがんがってくれ!
おれもclで何か作ってみようかなぁ
604:デフォルトの名無しさん
06/12/16 02:05:34
乙!
605:デフォルトの名無しさん
06/12/16 10:18:38
リーダーマクロなるものがあるそうで使ってみたいと思っています。
どうすれば使えるんでしょうか。
scheme、CommonLisp問わず、
ごぞんじ処理系について教えてください。
606:デフォルトの名無しさん
06/12/16 13:10:12
Common Lispならもれなく付いてくる。使い方はCLtL2でも読むよろし。
607:デフォルトの名無しさん
06/12/16 20:29:18
>>474 の黒田のScheme叩きにShiro氏がなんか書いてるね
Scheme:マクロ:CommonLispとの比較
URLリンク(practical-scheme.net)
608:デフォルトの名無しさん
06/12/16 20:32:31
こっちが誘導先かな
「Schemeについてどう思うか」についてどう思うか?
URLリンク(practical-scheme.net)
609:デフォルトの名無しさん
06/12/16 22:03:58
マクロについてはCommon Lisp流のほうが好きだな。
Schemeのマクロはある意味美しいのだが、書き方で悩んで仕事がはかどらない。
(もちろん俺の能力の問題だけど)
610:デフォルトの名無しさん
06/12/16 22:50:55
>>607
前にこのスレで騒いでた本人 == WiLiKi に突撃した本人 == 607 の気配がする…
なんつーか、自分の使ってる言語を批判されたくらいでそんなに癇に触るなら
Scheme はやめといたほうがいいよ。たぶん Haskell とかのほうが向いてると思うよ。
611:デフォルトの名無しさん
06/12/16 23:08:13
「気配がする」なんていう「神のお告げ」レベルの根拠で
そこまで上から説教できる精神構造って・・・
612:デフォルトの名無しさん
06/12/16 23:42:51
煽り体制が低い奴は Scheme やめといたほうがいいってのは同意だな。
あの程度の煽りでガタガタいってると comp.lang.scheme とかのフレームは読めないぞ。
613:デフォルトの名無しさん
06/12/16 23:56:15
Schemeはおもちゃ
614:デフォルトの名無しさん
06/12/17 00:10:20
ガタガタ
615:デフォルトの名無しさん
06/12/17 00:32:37
Schemeはオモチャ
616:デフォルトの名無しさん
06/12/17 01:28:55
>>610
まったくの別人だよw
言語フェチなので基本的にどれかを特定に愛しているというわけでもなかったり
って Lisp かじる人ってだいたい同じようなものだと思ったり
617:デフォルトの名無しさん
06/12/18 02:46:02
XS-Lisp・・・・なくなったのか・・・?
618:デフォルトの名無しさん
06/12/18 03:02:47
黒田氏の発言に ruby のまつもとゆきひろ氏も反応
URLリンク(www.rubyist.net)
お騒がせだなw
619:デフォルトの名無しさん
06/12/18 03:10:49
やっぱりあの人は「Lispを知らない」と思う
620:デフォルトの名無しさん
06/12/18 04:39:48
「Lispをものにした」ことはありそうだ
621:デフォルトの名無しさん
06/12/18 05:45:04
ちょwルビーの中の人、釣り耐性ヒクスwwwww
622:デフォルトの名無しさん
06/12/18 06:32:44
そりゃまぁ「釣り」ってことにしておけば
どんな耳に痛いこと言われても反応自体を小馬鹿にできて便利だが、
たぶん黒田は本気だぞw
623:デフォルトの名無しさん
06/12/18 06:32:53
しかし、そうじゃなきゃ鋭いことはできないでしょう。
624:デフォルトの名無しさん
06/12/18 07:54:15
>>620
つうか、この Matz の発言はひでぇな。
「中途半端な真似で良いとこどりとか言われて不愉快」
つー記事に対して、「劣った人々」とかいかにもな用語持ち出してきやがって。
「言語仕様?ソース読め」な連中に Lisp は選民思想とか言われるのは Matz 影響だな…
625:デフォルトの名無しさん
06/12/18 08:58:20
>624 とりあえず、黒田乙。と言っとけばいいのかな?
626:デフォルトの名無しさん
06/12/18 09:03:13
この前nil_to_sの仕様で議論してたけどあれは酷かった
627:デフォルトの名無しさん
06/12/18 09:07:54
>>624
> 「劣った人々」とかいかにもな用語持ち出してきやがって。
黒田が持ち出した文章を、Matzが「訳した」だけなんだけど。
しかも黒田はその元文を「次の言葉で言い付くされている」とまで言ってるから、
黒田の発言のどうでもいい部分の揚げ足を取ったというわけでもない。
628:デフォルトの名無しさん
06/12/18 21:11:59
とうとう perl の小飼弾氏にまで波及www
URLリンク(blog.livedoor.jp)
黒田氏は良い餌撒いたなw
しかし Lisper にとっては迷惑甚だしいがw
629:デフォルトの名無しさん
06/12/18 21:23:06
弾はプログラム下手だからw
630:デフォルトの名無しさん
06/12/18 21:23:44
Perl、Ruby、Scheme の三者の発言を見てきたわけだが
Shiro 氏の話が誹謗中傷にならずちゃんと分析して具体的なタメになる話になっている
冷静さの差かなぁ
マクロに付いての話題にちゃんと繋げているし
Ruby や perl も同じように言語の特徴や分析で戦って欲しかった
631:デフォルトの名無しさん
06/12/18 21:35:43
コメント欄見る限りMatzはスルー力が足らないように思われます
632:デフォルトの名無しさん
06/12/18 21:36:29
webを回っていた、Lispというものを知りました。
Lispの存在意義についてお聞きします。
Lispは現在どんな使い道があるのですか?
また、Lispで作られた実用的なソフトをほとんどみたことがないのですが、
どんなものがありますか?
Script Languages
URLリンク(cl-www.msi.co.jp)
>彼等が鬼の首とったように言うことの1つに Lisp はマイナーだから云々、というのがあります。
>しかし ANSI (XJ13) から正式に The Standard が出てる以上にプログラミング言語のメジャー性を裏付けるものってあるんでしょうか?
とありますが、では何故、Windowsで、まともな処理系がないのでしょうか?
Lispで作られた、実用ソフトもほとんど見たことがありません。
(xyzzyくらいです、しかも組み込みですし)
webアプリ開発でも使われているのが、ほとんどみたことがありません。
メジャーというからには、相当数ユーザー人口がいると思うのですが、どれくらいいるのでしょうか?
633:デフォルトの名無しさん
06/12/18 21:36:31
KURODA の実績って本田技研でデータベースのアーキテクチャ設計したくらいか?
ホンダは独創を好む社風だから説き伏せられていいカモにされたんだろうな。
数理システムが潰れたら本田技研のデータベースどうなるんだか。
634:デフォルトの名無しさん
06/12/18 21:36:58
> webを回っていた、Lispというものを知りました
webを回っていたら、Lispというものを知りました
635:デフォルトの名無しさん
06/12/18 21:42:09
黒田のせいで変なの来たぞw
なんでこいつらみんな同じ事言うんだろうな
636:デフォルトの名無しさん
06/12/18 21:46:12
同じ人だからだよ
637:デフォルトの名無しさん
06/12/18 21:46:40
>>632
半年ロムれ
638:デフォルトの名無しさん
06/12/18 22:13:04
クロちゃんはどの程度のlisp hackerなんだよ
Guy Lewis Steele Jr.とファーストネームで呼び合えるくらいなのか?
639:デフォルトの名無しさん
06/12/18 22:23:53
ハカーっぷりはともかく、政治力はあるねえ。ALUの役員やってたりするし。
640:デフォルトの名無しさん
06/12/18 23:50:11
黒田頑張っても毒吐いてもPaul Grahamには慣れないだろうな
そう言えばYコンビネータとかどうなったんだろ
641:デフォルトの名無しさん
06/12/18 23:54:20
そこで湯浅太一先生に期待ですよ
642:デフォルトの名無しさん
06/12/19 00:09:57
gavino といいおかしな人の行動は世界共通なのかなー
643:デフォルトの名無しさん
06/12/19 00:30:03
スレ伸びすぎワロタ
644:デフォルトの名無しさん
06/12/19 00:42:26
あのミロのサルまねみたいなタイトル画像ダサ。
645:デフォルトの名無しさん
06/12/19 00:43:00
他の Lisp Hacker からの反論も欲しいなあ。
あんなのが Lisp User の共通認識だと思われちゃうと、ますます新人が入って
こなくなっちゃうよ。(黒田氏的にはむしろ望ましいのかもしれんが)
646:デフォルトの名無しさん
06/12/19 00:55:12
まともな奴ならあれが共通認識だとは思わないでしょ。
647:デフォルトの名無しさん
06/12/19 00:58:51
>646
世の中というのを甘く見てはいかんよ。
でも黒田さんもたぶん、そういうことは想定していないんだろうね。単に
(Common) Lisp はすごいんだぞ、というアピールくらいのつもりなんじゃない
かなぁ。
648:デフォルトの名無しさん
06/12/19 01:00:09
過激なこと言って注目を集めて Franz の Lisp を売ろうという
営業手法なのかもしれんね。あれだけ言えば、とりあえず Lisp
ってどんなもんか見てみるかって気になるやつがいるかもしれん。
トラブルを起こして注目を集めるという和泉モトヤ的?手法?
649:デフォルトの名無しさん
06/12/19 01:11:11
このスレってこんな話題ばっかやね
650:デフォルトの名無しさん
06/12/19 01:42:07
>>647
いやいや、クロちゃんのシロちゃんに対するアンビバレンツを見よ。
彼は Lisp をアピールしつつも、使ってほしくないとも思ってるんだよ。
651:デフォルトの名無しさん
06/12/19 02:16:13
>>648
>トラブルを起こして注目を集めるという和泉モトヤ的?手法?
ホンダの営業がよく使う手だ
652:デフォルトの名無しさん
06/12/19 02:20:36
どうでもいいが「シロクロはっきりさせる」と言う言葉がうかんだ。
つかなんでいつもフレームになるんだろう。
頭がよくてもコモンセンスない人大杉
653:デフォルトの名無しさん
06/12/19 02:54:09
フレームはレクリエーションだから。温泉宿での卓球みたいなもの。
654:デフォルトの名無しさん
06/12/19 03:13:09
そんなことより SBCL すごいことになってるぞ
URLリンク(www.technorati.jp)
655:デフォルトの名無しさん
06/12/19 06:12:47
確かにすごいことになってるな。
656:デフォルトの名無しさん
06/12/19 06:20:58
もう荒しはやめろ
657:デフォルトの名無しさん
06/12/19 13:03:41
lisp嫌いな人って、どこら辺が嫌なんだろ。
前置記法や括弧が多い以外になんか聞いたこと有る?
658:デフォルトの名無しさん
06/12/19 13:29:21
>>657
個人的にはFORTHとかの変り種とか見てきたせいか前置記法とかは気になったこと一度も無い。
でも初めてlispを知ったときは括弧の対応をどうやってすばやく把握するのか非常に迷った事がある
特にcond周りとかで迷子になったせいで括弧の多さは辟易したが、プリティプリントや構文サポートつきのエディタの存在をしってからは気にならなくなった。
実際嫌いな人何人か見てきても見た目の括弧の多さに引いてしまい、結局のところ食わず嫌いで終わってる気がする。
659:デフォルトの名無しさん
06/12/19 15:00:07
自分は多少かじってる程度だけど、むしろずらずらと連続する括弧に快感をおぼえる。
でも、括弧をどう並べたら素晴らしいかは迷うな。
日によっても美しいと感じる並べ方が変わる。
うはw変態ww
660:デフォルトの名無しさん
06/12/19 15:27:09
Lispに触れる前は、ワサワサと連続する閉じ括弧に「なんだこりゃ」とのけぞったけど、
いざ触ってみたら、閉じ括弧は人間(プログラマ)が意識せにゃならん要素ではなかった。
コードいじってて、閉じ括弧幾つ書けばいいんだっけ? と思ったら
とりあえずダダダダっと大量に連続させて、開き括弧にカーソル当てて
エディタ様に「切れ目」を選んでもらい、そこで改行&行ごと削除。
ちょっと画用紙で工作してるときのフィーリングに似てるなと思ったりw
661:デフォルトの名無しさん
06/12/19 16:35:32
いくつかスレも立ってるが、括弧のないLISPを作る試みはすべて失敗した。
662:デフォルトの名無しさん
06/12/19 19:03:35
LISPがウケないのはカッコじゃなくて前置記法だっつうの。
663:デフォルトの名無しさん
06/12/19 19:42:10
俺の実体験から言うと括弧でしたよ。
一々括弧の対応を追わずにインデントだけで読める事に気付くまでは大変だった。
664:デフォルトの名無しさん
06/12/19 20:28:42
>>662
そんなこと言いつつ、アセンブリ言語は好きだったりしないか?
665:デフォルトの名無しさん
06/12/19 20:29:47
俺は、前置記法だな。
なんつーか、オブジェクト指向言語を使った後で使った後に、
C言語を使ったもどかしさと同じものを感じる
666:デフォルトの名無しさん
06/12/19 20:35:06
あれこれ使ってると、無意識に (x + y) とか書いてて処理系に怒らることある
667:デフォルトの名無しさん
06/12/19 21:32:49
>>666
CとSchemeの間は自動的に頭が切り替わるんだけど、
JavaScript付近の微妙なとこだと俺もそういうことがある。
668:デフォルトの名無しさん
06/12/19 22:24:49
もりあがってんな
669:デフォルトの名無しさん
06/12/19 22:42:50
オレの場合は再帰
とくに末尾再帰を考えると頭が痛くなったな
あとはやっぱりlambdaかな
高階関数とか関数型言語のエッセンスもC/C++から来た人間には辛い
括弧よりこっちの方jが壁になるんじゃないだろうか
スクリプト言語からなら壁は薄いのかも知れないけど
670:デフォルトの名無しさん
06/12/19 22:53:44
末尾再帰はだるかった
高階関数はC使いでも
関数ポインタばりばり使う変態なら結構いけるんじゃね?
とかおもった。
671:デフォルトの名無しさん
06/12/19 22:58:25
高階関数は他の言語でも結構使ってるよ。
制御構造とか作れて便利
672:デフォルトの名無しさん
06/12/19 23:01:57
再帰も高階も使いたくないなら使わなきゃいいだけなんだけどね。
使いたい状況のときに使えるのが利点なわけで、それが壁になるというのは
本末転倒の状況と言えるだろう。
673:デフォルトの名無しさん
06/12/19 23:05:05
ループマクロの書き方がわかってんなら再帰する必要もないだろ。
674:デフォルトの名無しさん
06/12/19 23:08:47
Common Lisp のLOOPマクロのすべての書き方を覚えるほうが百万倍大変だよな。w
675:デフォルトの名無しさん
06/12/19 23:41:41
>>670
関数ポインタと高階関数は違うからなぁ
レキシカルスコープで環境まで渡せるのがCommonLispやSchemeの高階関数だし
関数を作って返すことも出来ない
>>672
理解出来ていないで使えないのと使わないのでは違うんじゃ
理解していないと使う状況も利点も見えてこないと思う
>>673
ループマクロで再帰を代替えできるってのも違うような
どちらにしろC/C++からは結構なパラダイムシフトを強いられる言語ではあるような気がする
676:デフォルトの名無しさん
06/12/20 01:07:06
>>661
Skillしらん?
677:デフォルトの名無しさん
06/12/20 01:11:21
「すべて失敗した」うちの一つだと思われ
678:デフォルトの名無しさん
06/12/20 01:21:53
emacs lispの次くらいに世界で広く使われている(と思われる)
lispで書かれた極めて実用的なdesign fare workなんだけど。
URLリンク(www.google.co.jp)
数年前の4.3で10Mstep以上だと聞いた記憶がある
679:デフォルトの名無しさん
06/12/20 01:23:09
初めて聞いた
680:デフォルトの名無しさん
06/12/20 01:35:45
分野的に縁がなければ知らないのも無理がないか…
Syntaxはこんな感じで
URLリンク(www.ee.vt.edu)
とても書きやすい。これは(let 使ってるからまだlispの()syntaxの片鱗が見えるけど
681:デフォルトの名無しさん
06/12/20 01:37:49
そういやPythonもLogoも中身はLispみたいなもんだったw
682:デフォルトの名無しさん
06/12/20 01:46:49
>>661
Guido LispやMatz Lispはまだ失敗してないぞ
683:デフォルトの名無しさん
06/12/20 01:47:29
ケイデンスが開発したのか。EDA業界ではメジャーなのかな。
Lispに慣れてるせいか、Lispより読みやすいとか書きやすいとかは正直感じないなぁ。
括弧に抵抗ある人にとっては、こういうほうが良いんだろうけど、マクロとかの話を始めると
結局二重言語になってしまって却ってわかりにくいんじゃないだろうか。
684:デフォルトの名無しさん
06/12/20 02:06:34
The following example illustrates a custom syntax for a special way to build a list from an
original list by applying a filter and a transformation. To build a list of the squares of the odd
integers in the list
( 0 1 2 3 4 5 6 7 8 9 )
you write
trForeach(
?element x
?list ’( 0 1 2 3 4 5 6 7 8 9 )
?suchThat oddp(x)
?collect x*x
) => ( 1 9 25 49 81 )
instead of the more complicated
foreach( mapcar x
setof(x ’(0 1 2 3 4 5 6 7 8 9) oddp(x))
x * x
) => ( 1 9 25 49 81 )
Implementing an easy-to-maintain macro requires knowledge of how to build SKILL
expressions dynamically using the backquote (‘),
comma (,), and comma-at (,@) operators.
The definition for trForeach follows.
defmacro( trForeach ( @key element list suchThat collect )
‘foreach( mapcar ,element
setof( ,element ,list ,suchThat )
,collect
)
)
685:デフォルトの名無しさん
06/12/20 02:07:58
>>682
まだ失敗してないけど、成功するとは思えません。
いや、マジな話店頭で気軽に買える処理系がそのまま仕事で使えるようにならないと普及せんだろ?
686:デフォルトの名無しさん
06/12/20 02:15:38
>>685
2行目には賛成するが、3行目には賛成できない。
687:デフォルトの名無しさん
06/12/20 02:20:13
(defun fibo (n)
( cond
(( or (equal n 1) (equal n 2) ) 1 )
(t (plus ( fibo (difference n 1) )
(fibo (difference n 2 ) ) ) )
)
)
↓こんな感じ。
procedure( fibo(n)
if ( (n == 1 || n ==2 ) then
1
else fibo(n-1)+ fibo(n-2)
)
)
どっちで書いてloadしても良いんだけどさ。
688:デフォルトの名無しさん
06/12/20 02:21:45
言いたかったのは失敗だなんてのは
悪いけど、井の中の(ry
689:デフォルトの名無しさん
06/12/20 02:28:42
問題はCadenceが言語syntaxに知財持っていると
openな似たsyntaxの処理系訴訟されかねないって点かな
Cadenceは権利にメチャこだわる(うるさい)会社だから
690:デフォルトの名無しさん
06/12/20 02:43:36
Ruby はもうキャズム越えただろ
店頭販売の処理系じゃないとってw
その理論だと perl や PHP などの web 系の仕事は成功とは言われない訳だな
Java も処理系は売ってないな
JavaScript も Ajax などのブラウザクライアント言語として成功しているように思えるがこれも成功じゃないのかw
なにが基準で成功なんだwwww
691:デフォルトの名無しさん
06/12/20 02:49:26
>>687
こういうのもLispで自己記述できるんですか?
692:デフォルトの名無しさん
06/12/20 02:49:42
外したよ。自分で気が付かないと。
693:デフォルトの名無しさん
06/12/20 02:52:13
Lispで自己記述できるかどうかは知らない。
pretty printするとS式「でも」表示できるから中身は全くのlisp。
694:デフォルトの名無しさん
06/12/20 02:58:54
そういうreaderをLispで書くのはさほど難しくはないだろうね。
ただ、言語を普及させるってのは別の意味の労力が必要だからなぁ・・・
695:デフォルトの名無しさん
06/12/20 03:01:17
俺はそう言うopen のreader(あれは単なるreaderではなさそうなんだが)
喉から手が出るほど欲しいんだよ
生産性が桁違いなんだ
自分で作っている時間が無くて残念
696:デフォルトの名無しさん
06/12/20 03:04:40
普通は
(defun fibo (n)
(if (or (= n 1) (= n 2)) 1)
(+ (fibo (- n 1))
(fibo (- n 2)))))
って書くから、少なくともタイピング労力的には大差ない気がしちゃうのは
俺がLisp贔屓だからだろうか。w
697:デフォルトの名無しさん
06/12/20 03:05:53
たぶんね。もう少しややこしいcodeだとありがたみが分かる
698:デフォルトの名無しさん
06/12/20 03:06:51
>>696
あ、ちょっと間違えてるな。w
まぁ気分だけ汲み取ってくれ。
699:デフォルトの名無しさん
06/12/20 03:09:42
結局、Lispに慣れてないとなかなかそういう物はつれない。
だけど、Lispに慣れちゃうと特に必要性を感じない。
というわけで、あまり作られないんじゃないかと思う今日このごろ。
Pythonくらいに明確にLispとは違う言語にしちゃうなら話は違うだろうけど。
700:デフォルトの名無しさん
06/12/20 03:11:26
多分
・lispのcodeの一見難解さが(頭の体操みたいで)好き
・lispの柔軟さが好きだけどパット見た目のcode分かりやすさも重視したい俺
好みの違いの希ガス
701:デフォルトの名無しさん
06/12/20 03:14:39
いくら何でも寝ます
最近はHaskellがお気に入りだったりするw
ノシ
702:デフォルトの名無しさん
06/12/20 03:55:24
言語自体が S 式じゃなくても
言語の木構造をファーストクラスオブジェクトとして扱える
上記に伴い、文字列・ファイルストリームから評価前の木構造を取り出せる
くらいできるとずいぶん使い勝手がいいと思うんだけどなあ。
世の動的言語デザイナーは、なぜ read と eval を分離しようとしないんだろうか。
703:デフォルトの名無しさん
06/12/20 04:03:34
オブジェクトを忘れょぅょ
関数プログラミングが完全に包含しているんだから
704:デフォルトの名無しさん
06/12/20 10:32:05
閑散
黒田
盛盛
705:デフォルトの名無しさん
06/12/20 12:55:35
>702
禿同
706:デフォルトの名無しさん
06/12/20 13:08:18
結論としては、黒田マンセーということで。
707:デフォルトの名無しさん
06/12/20 21:19:56
>>702
>世の動的言語デザイナーは、なぜ read と eval を分離しようとしないんだろうか。
言語デザイナーと言語実装者が分離してないからじゃないかな。
「正しい事」より実装が簡単な事の方が重要なのです。
708:デフォルトの名無しさん
06/12/20 21:36:15
共産主義と資本主義みたいなもんか
709:デフォルトの名無しさん
06/12/20 22:02:09
>>702
C♯は標準ライブラリを使ってソースをパースしてツリーとして使えるようになってるよ。
あとはHaskellとか。
710:デフォルトの名無しさん
06/12/20 22:07:39
>>709
C#のそれは違うのだが
どう違うのか説明が難しい
711:デフォルトの名無しさん
06/12/20 23:02:11
Pythonにもあるが、ツリーが奇々怪々で使えない
712:デフォルトの名無しさん
06/12/21 10:52:10
>710
kwsk
713:デフォルトの名無しさん
06/12/21 13:23:45
LCG あたりの話かな
714:デフォルトの名無しさん
06/12/21 15:19:52
抽象構文木がS式として手軽に扱えるようになってるだけじゃなくて、
quote(やquasiquote)があるのがLispの強い所でしょう。
715:デフォルトの名無しさん
06/12/21 15:34:49
グワシ
716:デフォルトの名無しさん
06/12/21 16:39:55
>>702
そうするとCLのシンボルがどこにinternされるか問題みたいなのが
出てきて、今度はそれと戦わないといけなくなる可能性があるからなあ。
Schemeみたいにパッケージ?何それ?なら話は簡単だけど。
全て文字列でやる?
717:デフォルトの名無しさん
06/12/23 23:56:21
OCamlのCamlp4にはquotationもantiquotationもあるよ
718:デフォルトの名無しさん
06/12/29 21:32:53
scheme で,階乗を末尾再帰で書こうと思って
(define (fact n)
(letrec (((fact-sub a n)
(if (= n 0) a
(fact-sub (* a n) (- n 1)))))
(fact-sub 1 n)))
こんなふうにしたらうまくいきません.なんで?
719:デフォルトの名無しさん
06/12/29 21:35:52
letrec は labels じゃないから
720:デフォルトの名無しさん
06/12/29 21:46:54
>>718
おまいさんがやりたいのはこういうことけ?
(define (fact n)
(let fact-sub
((a 1)
(n n))
(if (= n 0) a
(fact-sub (* a n) (- n 1)))))
721:718
06/12/29 22:14:29
letrec では関数は定義できないってことでしょうか?
で,そういう場合には名前つきletを使うと.
なるほどありがとうございます.
722:デフォルトの名無しさん
06/12/29 22:17:24
>>721
letrecでやりたけりゃこうなる。
(define (fact n)
(letrec ((fact-sub (lambda(a n)
(if (= n 0) a
(fact-sub (* a n) (- n 1))))))
(fact-sub 1 n)))
723:718
06/12/29 22:22:01
>>722
lambda を使うと letrec で定義できるのに,
使わなかったら定義できないのはどうしてでしょうか?
724:デフォルトの名無しさん
06/12/29 22:23:01
>>723
どうして定義できると思うんだ?
725:デフォルトの名無しさん
06/12/29 22:29:53
(define f (lambda (...) ...))
を
(define (f ...) ...)
と書けるのと同様の syntax sugar が letrec にも欲しいってことか?
726:デフォルトの名無しさん
06/12/29 22:36:53
>>725
そうだとしたらそういうマクロを定義すりゃいいだけのこったな。
欲しけりゃ作る。それがLisp系言語の宿命ってもんだ。
(define-syntax letrecf
(syntax-rules ()
((_ (((f args ...) b ...) ...)
body ...)
(letrec ((f (lambda(args ...) b ...)) ...)
body ...))))
(define (fact n)
(letrecf (((fact-sub a n)
(if (= n 0) a
(fact-sub (* a n) (- n 1)))))
(fact-sub 1 n)))
727:718
06/12/29 22:39:37
>>725
まさにそのとおりです.
OCaml や Haskell だと両者の区別がなかったので,
scheme でもそうに違いないと早とちりしていました.
728:デフォルトの名無しさん
06/12/29 23:01:25
>>726
それってletrecと同じように関数以外の定義も受け付けるようにできね?
俺には無理だが。
729:デフォルトの名無しさん
06/12/30 01:57:11
>>728
(define-syntax letrecf
(syntax-rules ()
((_ ((f b) ...)
body ...)
(let () (define f b) ... body ... ))))
730:デフォルトの名無しさん
06/12/30 12:19:22
funcall がウザい
#' がウザい
ただソレだけの理由で CL を避けて Scheme を選んでいます
731:黒田
06/12/30 12:54:19
ソースはどこに書いてるんですか?黒板?w
732:デフォルトの名無しさん
06/12/30 17:02:17
黒田節炸裂!
733:デフォルトの名無しさん
06/12/30 19:31:56
酒は飲め飲め?
734:デフォルトの名無しさん
07/01/01 05:50:16
俺としては、ローカル変数名と関数名が重なってしまうSchemeは使いたくない
735:デフォルトの名無しさん
07/01/01 08:34:17
誰か「対話によるCommon Lisp入門」という本
3000円で譲っていただけないでしょうか?
736:デフォルトの名無しさん
07/01/01 12:21:23
でた、関数名と関数名に似たような名前付けちゃう人。
737:デフォルトの名無しさん
07/01/01 12:33:59
>734
ローカル変数を使うときに
いちいち関数名とダブってるか気にするのって面倒だよな
とうわけで俺はpythonも嫌い
738:デフォルトの名無しさん
07/01/01 18:49:09
関数内で使う予定のない関数とダブるかなんてあんま気にしない。
739:デフォルトの名無しさん
07/01/01 19:21:16
全角英数字使う人の好き嫌いなんてどうでm(ry
740:デフォルトの名無しさん
07/01/01 19:29:20
>>738
でた、関数名と関数名に似たような名前付けちゃう人。
741:718
07/01/02 04:04:45
関数定義で,使わない仮引数(Haskell の _ みたいな)はどう書くの?
742:デフォルトの名無しさん
07/01/02 04:40:06
_ でも ~ でも好きな名前つけとけばいいじゃない
743:デフォルトの名無しさん
07/01/02 23:03:27
図形言語のフレームって円に出来る?
友達が円に出来るって言い張ってるんだけど
744:デフォルトの名無しさん
07/01/02 23:20:27
>>743
そう作ればそうできるよ
745:デフォルトの名無しさん
07/01/03 02:50:19
>>743
夢は きっと 叶う
746:デフォルトの名無しさん
07/01/07 23:23:22
lambda age
747:デフォルトの名無しさん
07/01/08 12:45:33
>>737
Python使い始めの頃lenって変数を使ってハマったことがあるw
748:デフォルトの名無しさん
07/01/15 04:22:11
(M (+ 1 2))=>"(+ 1 2)=3"
みたいなマクロってどう作りますか?
749:デフォルトの名無しさん
07/01/15 05:31:36
まず、式とその値を受け取って "式=値"という文字列を返す関数を作ってみ。
750:デフォルトの名無しさん
07/01/15 09:38:49
constant foldingでぐぐれ
751:デフォルトの名無しさん
07/01/15 21:00:11
>>748
schemeで書くとこんなカンジかなぁ。
CLは知らん。
(define (s->string s)
(let ((port (open-output-string)))
(write s port)
(get-output-string port)))
(define-syntax M
(syntax-rules ()
((_ s)
(string-append
(s->string 's)
"="
(s->string s)))))
752:デフォルトの名無しさん
07/01/18 01:32:24
CL ならこうかな。
(defmacro M (expr) `(format nil "~S=~A" ',expr ,expr))
753:デフォルトの名無しさん
07/01/18 02:22:33
CL すげぇ
754:718
07/01/18 03:01:47
schemeでもこうできるじゃん
(define-syntax M
(syntax-rules ()
((M expr)
(format #f "~S = ~A" 'expr expr))))
755:デフォルトの名無しさん
07/01/18 07:14:15
format って Schemer 的にどうなの?初期のハッカーの伝統を受けついでて
冗談みたいな機能がついてるけど、それってミニマリスト的には許せないよーな
756:デフォルトの名無しさん
07/01/18 09:04:50
俺はこだわらないが
757:デフォルトの名無しさん
07/01/18 12:33:08
ミニマリストは純LISPっしょ
758:デフォルトの名無しさん
07/01/18 13:17:11
>>755
> 冗談みたいな機能
kwsk
759:黒田
07/01/18 13:45:08
黒板に書ければなんだっていいのでは? :-)
760:デフォルトの名無しさん
07/01/18 14:46:36
>>758
スキームは知らんけど、コモンリスプだとこんなんとか
(format nil "~R" 12345)
=> "twelve thousand, three hundred and forty-five"
(format nil "~:r" 12345)
=> "twelve thousand, three hundred forty-fifth"
(format nil "~@r" 1234)
=> "MCCXXXIV"
761:デフォルトの名無しさん
07/01/18 16:51:19
>>760
サンクス。それは確かに冗談みたいだ。
少なくともSRFI48には入ってないな。
762:デフォルトの名無しさん
07/01/19 12:13:50
試してみたいがこれ試すためだけに
処理系入れるのもなぁ……
SRFI何やってんの
763:デフォルトの名無しさん
07/01/20 02:20:17
CLtL*のtexiファイルってないですか?
764:デフォルトの名無しさん
07/01/22 14:16:48
RnRSのversion5.92が出たけど、R5RSと比べると結構ページ数が増えてるね。
URLリンク(www.r6rs.org)
765:デフォルトの名無しさん
07/01/22 18:32:20
いまだにオブジェクトシステムもネットワーキングライブラリも入ってない件
766:デフォルトの名無しさん
07/01/22 19:47:34
↓ここで黒田が一言
767:デフォルトの名無しさん
07/01/22 20:05:24
どーんまいん
768:デフォルトの名無しさん
07/01/25 11:04:33
なんか()がatomかcellかで論争があったって話を聞いたんですが、
どんな論争だったんでしょうか。
769:デフォルトの名無しさん
07/01/25 11:20:25
知りません
770:デフォルトの名無しさん
07/01/25 11:59:13
知らない馬鹿は無理して会話に入ってこないで
黒板にSchemeコードでも書いてて下さい。
771:デフォルトの名無しさん
07/01/25 12:44:38
黒田にSchemeコードと空目した。
772:デフォルトの名無しさん
07/01/26 01:16:42
あまりネにもたないほうがいいとおもわれ…
773:デフォルトの名無しさん
07/01/26 02:00:44
からかうなら ILC がチャンス
Scheme 屋が周りにいるとこで「黒田さーん、Scheme が使いものにならない
理由をもう少し詳しく教えてください」とでかい声で英語で聞けばよろし
774:デフォルトの名無しさん
07/01/27 00:30:00
URLリンク(onecare.live.com)
> ウイルス、ワーム、トロイの木馬、ハッカー、フィッシング詐欺、
> およびその他の脅威からコンピュータを保護します。
ポール・グレアムさん
マイクロソフトに言わせるとハッカーはウイスルやワームと同じものらしいです
775:デフォルトの名無しさん
07/01/27 21:55:26
>774
マイクロソフト自身がスパイウェア作ってるのにな
776:デフォルトの名無しさん
07/01/29 00:47:58
なにこの香ばしい展開
777:デフォルトの名無しさん
07/01/29 08:37:28
オープンソーススクリプト言語の糞信者どもが
神聖なLispスレをオナニーで荒らしているのです。
778:デフォルトの名無しさん
07/01/29 12:23:21
ジハード!ジハード!
779:黒田
07/01/29 12:45:17
Lispが負けそうになったら
自分が出て行ってPとかRをやっつける
780:デフォルトの名無しさん
07/01/29 13:30:30
どのスレへ行っても言語勝負厨はうざいな
781:デフォルトの名無しさん
07/01/29 13:52:37
宗教戦争ネタの宿命ですな。
782:デフォルトの名無しさん
07/01/30 15:09:48
どなたか途中まででいいんでよろしくお願いします。
次に示すScheme プログラムについて以下の問に答えよ。
(define (subtree? t1 t2)
(cond ((atom? t1) (eq? t1 t2))
(#t (cond ((atom? t2) #f)
(#t (or (and (subtree? (car t1) (car t2))
(subtree? (cdr t1) (cdr t2)))
(or (subtree? t1 (car t2))
(subtree? t1 (cdr t2)))))))))
関数subtree?は二つのS 式(S 表現) t1, t2 を入力とし、真偽値(#t あるいは
#f) を返す関数である。
関数subtree?が真(#t) を返すための必要十分条件は何であるか答えよ。また、
関数subtree?が実際そのような関数であることをS 式に関する帰納法を用い
た議論によって示せ。
783:デフォルトの名無しさん
07/01/30 15:11:21
また宿題かよw
784:デフォルトの名無しさん
07/01/30 15:36:23
途中まででいいのか。
必要十分条件は(ry
785:デフォルトの名無しさん
07/01/30 15:56:26
この続きはまた来週!
786:デフォルトの名無しさん
07/01/30 16:08:02
ご愛読ありがとうございました
787:デフォルトの名無しさん
07/01/30 16:09:59
>>784 先生の次回作にご期待ください
788:デフォルトの名無しさん
07/01/30 19:52:23
んじゃ宿題と関係のないところで。
>>782 のような関数だと、普通はeq?じゃなくてeqv?を使うんじゃないのかね。
eq?はオブジェクトのidentityを調べる以外に使わないでしょ。
789:デフォルトの名無しさん
07/01/30 20:44:05
>>788
(atom? t1)なんだから無問題
790:デフォルトの名無しさん
07/01/30 21:00:41
>>789
(eq? 1.0 1.0)
791:デフォルトの名無しさん
07/01/30 23:20:25
LispとPostScriptさえあれば私はハッピーになれる
URLリンク(rikunabi-next.yahoo.co.jp)
HHKの記事ですが。
792:デフォルトの名無しさん
07/01/30 23:41:23
結局要領のいいLISPの独り勝ちです。
793:デフォルトの名無しさん
07/01/30 23:44:20
forthじゃないところが泣ける……
794:デフォルトの名無しさん
07/01/31 00:24:00
forthは括弧が無いのが失敗だったな。w
括弧でわかりやすくして、逆さから読めばそのままLispになる。
795:デフォルトの名無しさん
07/01/31 01:47:08
カッコも良いけどconcatenativeじゃ無くなるからな……
796:デフォルトの名無しさん
07/01/31 08:02:53
LISP好きだけど括弧ウザイ一派です。
どうにかして括弧をなくせないか色々考えておりますが、現在の所、
予約語を言語内の特別なマクロで定義し、その予約語について
ぶら下がる語数やキーワードで判断するという手法でなんとかしよう
と思っております。予約語はreadにより振り分けられS式に変換される
としましょう。ifならば if <test-part> <then-part> <else-part>という風に。
しかしこれではelseを省略できませんので、thenやelse等のキーワードを
付ける事とします。すなわち、
if <test-part> then <then-part> else <else-part>となります。
お察しの通り、これではC言語同様にぶら下がりelseが処理できません。
でもそれで良いのです。なぜならば、C言語が現状一般的であり、
読みやすいとされる言語だからです。C言語に近い事こそが正義なのです。
そうなるとthenというキーワードも冗長に見えます。
if <test-part> <then-part> else <else-part>
なお、LISPではC言語と違い、test-partの中にもifが書けてしまいますが
これをLISPの利点としてしまうには早計です。C言語では式と文で
区別されているため、if文の代わりに条件演算子を使わなければ
書けないという仕様になっています。なぜこんな仕様にしたのでしょうか?
考えたことあるでしょうか。
797:デフォルトの名無しさん
07/01/31 08:03:40
(中略)
と、こういった事は皆さんLISPを使っていれば一度は思う所でしょう。
文法を自在に定義できるLISPは一見万能に思える言語ですが、
問題もあります。最初に、予約語はreadにより振り分けられS式に
云々と書きましたが、そうするとS式に変換した段階でソースコードとは
異なる状態で保持される事になります。これはLISPマクロと同様に
デバッガで追う事が非常に困難になる事を示しています。デバッガで
ソースコードと同期を取るには、とにかくread時に抽出したトークン列の
位置を正確に記していくしかありません。そうしても、1行に何十にも
重なったマクロでは追う事がほぼ不可能になってきます。今では
C++のテンプレートでも同様の問題として認知されていますが、
テストケースを作るといった消極的策しかいまだ解決の糸口は見えません。
こういた問題を孕んでいる以上、予約語をマクロで置き換えていくなぞ
愚行と言えるでしょう。ハードコーティング最高!と結論付けて
終わりの言葉とします。
798:デフォルトの名無しさん
07/01/31 09:33:59
Lisp:S式の理由
URLリンク(www.shiro.dreamhost.com)
括弧の理由 (1) -- Emacs による S 式編集支援
URLリンク(lispuser.net)
まぁ結局S式に落ち着くと
799:デフォルトの名無しさん
07/01/31 12:06:56
はてなブックマークで、目を疑うような記事が。
魔法言語 リリカル☆Lisp
URLリンク(lyrical.bugyo.tk)
大反響...。
URLリンク(b.hatena.ne.jp)
800:デフォルトの名無しさん
07/01/31 18:43:14
ちゅるやさんの人?
ぱちもん?
801:デフォルトの名無しさん
07/02/01 02:08:38
>LispとはLISt Processingの略で名前通りリストの処理を得意とします。 このことから人工知能の開発に多く用いられています。
802:デフォルトの名無しさん
07/02/01 02:18:30
LispがAIに使われていたのは記号処理が容易だったからなのだが……
803:デフォルトの名無しさん
07/02/01 02:24:29
リスト処理 ⊂ 記号処理
804:デフォルトの名無しさん
07/02/01 02:29:15
>>801
> リストの処理を得意とします。 このことから人工知能の開発に多く用いられています。
「このことから」で済むくらいリスト処理と人工知能の関連が
自明な相手が想定読者なのだろうか?
805:デフォルトの名無しさん
07/02/01 02:37:02
正直キモイ。ただただキモイ。
806:デフォルトの名無しさん
07/02/01 13:09:02
いいじゃん、これがLISPの門戸に人を集めるきっかけになるなら。
頂の高さは、裾野の広さ(とゴミの多さ)で支えられるものだと思うよ。
807:デフォルトの名無しさん
07/02/01 13:34:43
Lispeは非Lisperからキモがられてるし、
今さらそんな生理的嫌悪がなんだって話だ。
808:デフォルトの名無しさん
07/02/01 13:39:20
アニオタ氏ね
809:デフォルトの名無しさん
07/02/01 14:14:57
メンバーは大学4年生か
卒論控えてるというのに余裕だな...
810:デフォルトの名無しさん
07/02/01 15:30:12
>>809
世の中なめてるだけだと思う。
811:デフォルトの名無しさん
07/02/01 19:46:52
アニオタ氏ね
812:デフォルトの名無しさん
07/02/01 23:04:24
なんか頭悪そうなのが来ちゃったな
813:デフォルトの名無しさん
07/02/02 00:58:36
アニオタ氏ね
814:デフォルトの名無しさん
07/02/02 01:18:33
バベル案内
URLリンク(www.aoky.net)
815:デフォルトの名無しさん
07/02/02 01:50:27
なにこの陰険文章……。なんで Ruby 信者は他の言語を貶すわけ?
> RubyはPerlのいい部分をすべて盗んだ。
スティーブ ! CPAN ! CPAN !
816:デフォルトの名無しさん
07/02/02 01:51:24
RubyもPerlもスレ違い。他所でやれ。
817:デフォルトの名無しさん
07/02/02 03:10:36
初期のAmazonはCとLispしかリポジトリに入れなかったってので張ったんだけどなw
ちょっとポール・グレアムの話と被ったんで
818:デフォルトの名無しさん
07/02/02 13:33:15
>>817
いや、すんごく面白かったよ。自分の中では数ヶ月に一度ぐらいのヒット。
819:デフォルトの名無しさん
07/02/02 18:07:14
どっかおかしくなってるんだよ
820:デフォルトの名無しさん
07/02/03 16:45:36
>>814
その皆に愛されたmailmanとか言う
elispプログラムを見てみたいな。
Lispの生産性の良い例になってるかも
821:デフォルトの名無しさん
07/02/04 01:29:10
>820
こいつは違うんかいのう
URLリンク(www.gnu.org)
822:デフォルトの名無しさん
07/02/04 01:38:37
>Mailman is written in the Python programming language, with a little bit of C code for security.
823:デフォルトの名無しさん
07/02/04 01:41:33
PythonはLisp
824:デフォルトの名無しさん
07/02/04 13:25:45
ほんとだ
よく読まんかったorz
825:デフォルトの名無しさん
07/02/04 15:19:11
URLリンク(www.cbook24.com)
826:デフォルトの名無しさん
07/02/04 16:51:37
>>825
うおっ 出るのか!
全部印刷しなくて良かったぁw
827:デフォルトの名無しさん
07/02/04 16:54:12
漏れも買う
828:デフォルトの名無しさん
07/02/04 17:24:24
おれも、おれも。
829:デフォルトの名無しさん
07/02/04 19:02:23
じゃあ俺は印刷で。
830:デフォルトの名無しさん
07/02/04 19:39:54
>>823
お前は俺
831:デフォルトの名無しさん
07/02/04 19:41:26
俺も一冊買わせてもらうぜ野田くん
832:デフォルトの名無しさん
07/02/04 20:29:08
印刷して読んでるとこだけど本も買うよ
833:デフォルトの名無しさん
07/02/04 22:07:46
ウェブで全部読んだけど買う。
834:デフォルトの名無しさん
07/02/04 22:12:23
>>825
古い本だけど待ちわびてた。
この本で日本のCommonLisp熱が盛り上がるといいな。
835:デフォルトの名無しさん
07/02/04 22:51:59
やっぱり本だと移動中にちょこちょこ見れるからね
それにしてもSICP難しすぎるw
挫折しそうw
836:デフォルトの名無しさん
07/02/04 23:16:43
移動中に見るなら、本をバラすよりも必要な分だけ印刷する方が楽じゃない?
837:デフォルトの名無しさん
07/02/05 03:04:51
別にバラさなくてもいいと思うんだけど
毎回印刷したの止めるのも面倒だし
関連項目を読み直す場合もあるから必要な部分だけ印刷ってのは
このての本では逆に向いていないんじゃないかなぁ
838:デフォルトの名無しさん
07/02/05 03:52:16
一人3冊な
839:デフォルトの名無しさん
07/02/05 07:28:42
ちょw図書館の購入申請で勘弁してくれw
840:デフォルトの名無しさん
07/02/05 18:58:13
すごい!やっとぉ!
日本語完成したときも感動したけど
本になるとはお疲れ様です
841:デフォルトの名無しさん
07/02/05 21:25:07
こんなのあったのね
URLリンク(clemens.endorphin.org)
842:デフォルトの名無しさん
07/02/05 21:38:57
>>839
多くの人に読めるようになると考えればむしろ無問題。
843:デフォルトの名無しさん
07/02/06 15:38:02
質問があるのですが、
次のような関数を実行するとgaucheとdrschemeで結果が異なります。
readの評価タイミングは環境依存ということでしょうか?
(define (hello) (display "Hello ") (display (read)))
gauche:
gosh> (hello)
scheme <- 入力してから
Hello scheme#<undef> <- (display "Hello ")が後から実行
drscheme:
> (hello)
Hello scheme <- (display "Hello ")が先に実行される
scheme
ずっとdrschemeのように関数の前から順番に実行されるものだと思っていました。
844:デフォルトの名無しさん
07/02/06 15:56:23
順番に実行されてるけど、出力がバッファリングされてるだけ。
(display "Hello")の直後に出力されることを保証したいならgaucheなら(flush)とか入れてみれば。
他の処理系は知らね。
845:デフォルトの名無しさん
07/02/06 15:58:37
実行順序は変わっていない。
readによって出力がflushされるかどうかの違い。
846:デフォルトの名無しさん
07/02/06 16:14:53
>>844, 845
上手くいきました!ありがとうございました。
847:デフォルトの名無しさん
07/02/06 20:36:07
URLリンク(lyrical.bugyo.tk)
の体験版が出ていた。
処理系としてはSchemeのサブセットか。
1行入力して、1行出力なので、displayとかの副作用のある関数は使えない。
defmacro, define-syntax もなかった。
スタックは200であふれたが、末尾再帰の最適化をしてくれるようだ。
しかし当然だがすんごく遅い。
しかしタイトルバックにλ山が描いてあるので、個人的にはそれだけでOK。
848:デフォルトの名無しさん
07/02/06 23:38:06
「魔法言語 リリカル☆Lisp」ってなあ…、このエロゲ風の雰囲気は何とか
ならんのか。会社でいじってて、つい夢中になってしまって、気づいたら人から
変な目で見られてたよ…。
まあ、この雰囲気が売りなんだろうけど。
849:デフォルトの名無しさん
07/02/06 23:47:56
アレゲな機能が搭載されてないのがガッカリ。
850:デフォルトの名無しさん
07/02/07 00:38:52
機能一覧
URLリンク(lyrical.bugyo.tk)
letrecがないのはヘタレな自分にはつらいな。
851:デフォルトの名無しさん
07/02/07 00:49:11
NScripter上で動くのか。
昔同じこと考えたが、死ぬほど遅そうだから実装までしなかったよ。
dyb の psyntax は動かないだろうな。
852:デフォルトの名無しさん
07/02/07 20:45:02
お勉強パートは評価するときに
すたーらいとぶれいかー☆
とか言って欲しいよね
853:デフォルトの名無しさん
07/02/07 21:31:52
>>652
そういうのは分からんなあ。
すまんが私にはエロゲ教養がないのだ。
REPLのプリント時にビープ音などで通知してくれたら、ありがたいだろうとは
思う。今 taraiを回しているんだけど、ほんのちょっとなのにものすごく時間
がかかるから。
(define (tarai x y z) (if (<= x y) y (tarai (tarai (- x 1) y z) (tarai (- y 1) z x) (tarai (- z 1) x y))))
(tarai 8 4 0) => 実行中…。
おー、やっと終わった。何分かかったんだ、これ。
854:デフォルトの名無しさん
07/02/07 21:51:53
timeしようぜ
855:デフォルトの名無しさん
07/02/07 21:57:53
地獄Lispのほうはまともに動かないな
856:デフォルトの名無しさん
07/02/07 22:11:59
ほんとだ。
関数定義の構文糖衣がないせいかと思ったけど、
URLリンク(jigoku.bugyo.tk)
(define tarai (lambda... と書いても動かない。
(define tarai (lambda (x y z) (if (<= x y) y (tarai (tarai (- x 1) y z) (tarai (- y 1) z x) (tarai (- z 1) x y)))))
=> tarai
(tarai 4 2 0)
=> <error!>
857:デフォルトの名無しさん
07/02/07 23:34:29
いや、動いているようだが。
(define tarai (lambda (x y z) (if (<= x y) y (tarai (tarai (- x 1) y z) (tarai (- y 1) z x) (tarai (- z 1) x y)))))
=> tarai
(tarai 8 4 0)
=> 8
(tarai 4 2 0)
=> 4
修正されたのか。
858:デフォルトの名無しさん
07/02/08 00:37:27
(+ 1 2 3 4 5 6)
とかで
3
が返ってくるけどw
859:デフォルトの名無しさん
07/02/08 00:43:12
書いてないけど + や * も2引数しか対応していないのかw
860:デフォルトの名無しさん
07/02/08 09:44:04
普通に21が返ってくるぜ?
861:デフォルトの名無しさん
07/02/08 10:48:08
どうやら修正されたせいみたいだ。
昨日から地獄LISPを開いたままだったブラウザで今試したんだけど、
(+ 1 2 3 4 5 6) はやっぱり 3 になった。
そして、ページをリロードして再実行したら、今度は 21 になりますた!
たぶん中の人もここを見てるんだろう。
862:デフォルトの名無しさん
07/02/08 11:06:26
つうことで、乙カレー >> 中の人
意外にちゃんと動くんで、つい遊んでしまうよ。面白いねえ。
希望を言うと、
・せめてフリーモードだけでもBGMをOFFにする機能が欲しい。
今はこんな感じ。
1.起動に時間がかかるので立ち上げっぱなし
2.何かのきっかけでわずらわしくなって終了
3.また試してみたいことがあって、時間をかけて起動
4.上の1-3を延々と繰り返し
5.ヤケになってBGMファイルをヘヴィメタに差し替え
・画像もOFFに出来たら職場でいじりやすい。
・チュートリアルはよく読んでないけど、CONSセルをCGアニメーションで視覚
化して説明してくれたら面白そうだ。
・あとは出来たら、普通に単位を取って幸せになってほしい。