全部 1- 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 最新50
LISP Scheme Part8
- 1デフォルトの名無しさん03/07/15 19:03
- 過去スレ
Part1: http://piza2.2ch.net/tech/kako/987/987169286.html
Part2: http://pc.2ch.net/test/read.cgi/tech/1002584344/
Part3: http://pc.2ch.net/test/read.cgi/tech/1008220265/
Part4: http://pc.2ch.net/test/read.cgi/tech/1016211619/
Part5: http://pc3.2ch.net/test/read.cgi/tech/1023091882/
Part6: http://pc3.2ch.net/test/read.cgi/tech/1031560687/
Part7: http://pc2.2ch.net/test/read.cgi/tech/1042167213/
関連リンクは>>2-10あたり
- 2デフォルトの名無しさんsage03/07/15 19:05
- /⌒ヽ
/ ゚ω゚)
| U /
( ヽノ
ノ>ノ ヒタヒタ
. 三 しU
- 3デフォルトの名無しさんsage03/07/15 19:13
- □参考リンク□
日本Lispユーザ会(日本語)
http://jp.franz.com/jlug/index.html
ここにかなりの情報があります。
http://jp.franz.com/
削るとAllegro Common Lispのページへ
プログラミング言語Scheme(日本語)
ttp://www.sci.toyama-u.ac.jp/~iwao/Scheme/scheme.html
Schemeの人はまずここを見ましょう。
Lisper への道(日本語)
ttp://www.geocities.co.jp/SiliconValley-Oakland/1680/rakup.html
判りやすいLISP入門サイト。
Schemeへの道(日本語)
ttp://www.stdio.h.kyoto-u.ac.jp/~hioki/gairon-enshuu/SchemeNotes/scheme.html
ここはschemeの入門サイト。
- 4デフォルトの名無しさんsage03/07/15 19:13
- 慶応の授業のページ・記号処理プログラミング 2001
http://buri.sfc.keio.ac.jp/lisp/menu.html
Practical Scheme(日本語)
ttp://www.shiro.dreamhost.com/scheme/index-j.html
「普通のやつらの上を行け」など、興味深い文書を沢山翻訳されてます。
(Gaucheという完成度の高いscheme処理系作者さんのページでもあります。)
Scheme Hash(英語)
http://okmij.org/ftp/Scheme/index.html
S式でXMLを使える様にするSXMLなど
John McCarthy's Home Page
http://www-formal.stanford.edu/jmc/
LISPの生みの親、J・マッカーシーのページだそうです。
お隣りのプログラマ板のLISPスレのログです。(dat落ち)
http://mentai.2ch.net/prog/kako/963/963134110.html
- 5デフォルトの名無しさんsage03/07/15 19:14
- □仕様書関係□
Common Lisp the Language, 2nd Edition(英語)
http://www.cs.cmu.edu/afs/cs.cmu.edu/project/ai-repository/ai/html/cltl/cltl2.html
CommonLispの仕様書です。
アルゴリズム言語Schemeに関する第五改訂報告書 R5RS(日本語)
http://www.sci.toyama-u.ac.jp/~iwao/Scheme/r5rsj/html/r5rsj_toc.html
http://www.biwa.ne.jp/~mmura/scheme/tspl.html#r5rs
日本語訳はここ以外にもあるそうです。
Scheme Requests for Implementation SRFI (英語)
http://srfi.schemers.org/
Scheme Frequently Asked Questions (英語)
http://www.schemers.org/Documents/FAQ/
- 6デフォルトの名無しさんsage03/07/15 19:14
- □SICP関係□
SICP(英語)
http://mitpress.mit.edu/sicp/full-text/book/book.html
「計算機プログラムの構造と解釈」の原書です。
全てオンラインで読めます。
計算機プログラムの構造と解釈 第二版 (snip) に関連するホームページ
http://www.ipl.t.u-tokyo.ac.jp/sicp/
SICPの回答集
http://www.melt.kyutech.ac.jp/~gogogo/sicp_ex/
http://pluto.aurorasd.co.jp/~mkama/sicp/
http://www.ipl.t.u-tokyo.ac.jp/sicp/solution.root.html
http://www.sampou.org/scheme/sicp/answer/
- 7デフォルトの名無しさんsage03/07/15 19:15
- □その他□
Schemeで書かれた正規表現ライブラリ
ttp://www.cs.rice.edu/~dorai/pregexp/pregexp.html
幻の「入門Scheme」
ttp://www4.ocn.ne.jp/~inukai/scheme_primer_j.html
オンラインで読める
各種scheme処理系をcygwin上からビルドする方法など。
ttp://www.geocities.co.jp/SiliconValley-PaloAlto/7043/
Bit - Implantation compacte de Scheme
http://www.iro.umontreal.ca/~dube/
mini-schemeよりも小さい(?)bytecode変換系
Lisp 言語処理系: CAMPUS LIsP, Lemon version
http://aten.aial.hiroshima-u.ac.jp/~kakugawa/clisp/index-ja.shtml
Cコードによるわずか1000行の実装
- 8デフォルトの名無しさんsage03/07/15 19:15
- Scheme 処理系に追加( Scheme 処理系を自作したい人向け)。
Minischeme: 1 ファイルに凝縮された Scheme 処理系
http://tinyscheme.sourceforge.net/minischeme.tar.gz
TinyScheme: Minischeme の発展版
http://tinyscheme.sourceforge.net/
KI-Scheme, AM-Scheme, etc...
http://www.nifty.com/download/dos/prog/lisp/
LispMe: Palm 上で動く Scheme 処理系
http://www.lispme.de/lispme/
- 9デフォルトの名無しさんsage03/07/15 19:26
- Tiny CLOS Tutorial
http://home.adelphi.edu/~sbloch/class/272/tclos/tutorial.shtml
Schemix
http://www.abstractnonsense.com/schemix/
Linuxのkernelへのパッチで、/dev/として扱えるTinyScheme
Bibliography of Scheme-related Research
http://library.readscheme.org/
Scheme関連の論文リンク集
>1
乙彼
- 10デフォルトの名無しさんsage03/07/15 20:15
- 過去スレ
Part1: http://piza2.2ch.net/tech/kako/987/987169286.html
Part2: http://pc.2ch.net/tech/kako/1002/10025/1002584344.html
Part3: http://pc.2ch.net/tech/kako/1008/10082/1008220265.html
Part4: http://pc.2ch.net/tech/kako/1016/10162/1016211619.html
Part5: http://pc3.2ch.net/tech/kako/1023/10230/1023091882.html
Part6: http://pc3.2ch.net/tech/kako/1031/10315/1031560687.html
Part7: http://pc2.2ch.net/test/read.cgi/tech/1042167213/
- 11デフォルトの名無しさんsage03/07/15 20:54
- PetiteChezSchemeで、バグみたいなの見つけたんだけど、
(do ((i 0 (+ i 1)))
((< i 1000000) 'ok)
(display "このdisplayが実行されないよー"))
何か勘違いしてる?
- 12デフォルトの名無しさんsage03/07/15 20:56
- あああ、おれの頭がバグっていた。
(do ((i 0 (+ i 1)))
((= i 1000000) i)
(display "このdisplayが実行されまくる"))
だった。
- 13デフォルトの名無しさんsage03/07/15 21:27
- iが1000000になっても止まらないってこと?
- 14デフォルトの名無しさん03/07/15 21:41
- ちがくて、停止条件と継続条件を間違えただけでした>13
doなんてめったに使わないから、やられた。
- 15デフォルトの名無しさんsage03/07/15 21:42
- なんか書き込みもバグってるよ
Petiteのバグじゃなくて、おれの勘違いと言う事でした。
- 16デフォルトの名無しさんsage03/07/16 03:12
- clisp で unicode を扱えるようにするには何か設定が必要ですか? それともコンパイルオプションで
unicode を使用させるようにしなければいけないのでしょうか。教えて下さい。
Mac OS X で Fink パッケージからインストールした clisp 2.29 を使っているのですが、
(string-width "日本語") => 6 になってしまいます。端末エミュレータは UTF-8 で入力/出力する
ような設定にしてあります。
- 17デフォルトの名無しさんsage03/07/16 04:21
- >>16
OSXでclisp使ってないからハズしてるかも知れないけど、*features*に:UNICODEが
入っているかどうかまず確認してみて話はそれからだね。
もし入ってたらlibiconvはリンクされてると思われるので(apropos "coding")とでも
して関係ありそうな函数一個ずつ調べて行ってみてください。
system::*terminal-encoding*が#<ENCODING CHARSET:ASCII :UNIX>のままとか
いうオチだったらコロ助。
ぼちぼち寝るので返事くれても反応できないからそのつもりで。んじゃおやすみ。
- 18デフォルトの名無しさんsage03/07/16 05:29
- >>17 さん
丁寧なレスありがとうございます。
おっしゃる通りでした。逝ってきます。string-width は変わりませんでしたが、aref ではきちんと
UNICODE 文字として認識されているようですので、string-width についても自分で調べてみます。
どうもありがとうございました。
% clisp -q -Eterminal UTF-8
[1]> (print *features* )
(:CLOS :LOOP :COMPILER :CLISP :ANSI-CL :COMMON-LISP :LISP=CL :INTERPRETER
:SOCKETS :GENERIC-STREAMS :LOGICAL-PATHNAMES :SCREEN :GETTEXT :UNICODE
:BASE-CHAR=CHARACTER :UNIX)
(:CLOS :LOOP :COMPILER :CLISP :ANSI-CL :COMMON-LISP :LISP=CL :INTERPRETER
:SOCKETS :GENERIC-STREAMS :LOGICAL-PATHNAMES :SCREEN :GETTEXT :UNICODE
:BASE-CHAR=CHARACTER :UNIX)
[2]> (print *terminal-encoding* )
#<ENCODING CHARSET:UTF-8 :UNIX>
#<ENCODING CHARSET:UTF-8 :UNIX>
[3]> (string-width "日本語")
6
[4]> (aref "日本語" 0)
#U65E5
- 19デフォルトの名無しさんsage03/07/16 09:12
- 前スレの >>769 にて
> 参考になる綺麗なコードも少ない。
といった話がありましたが、
参考になる綺麗な Lisp コードって、どういったものがありますか?
「これは綺麗だった!」ってのをいくつかみつくろって教えて下さい。
- 20デフォルトの名無しさんsage03/07/16 11:53
- (begin (display "Part8") (newline)
(for-each (lambda (x) (display x) (display "━━"))
'(キタ (゚∀゚) (∀゚ ) (゚ ) ( ) ( ゚) ( ゚∀) (゚∀゚)))
(display "!!!!!") (newline))
- 21デフォルトの名無しさんsage03/07/16 14:29
- 継続
なんでも継続
ttp://www.shiro.dreamhost.com/scheme/docs/cont-j.html
Schemeへの道:継続
http://www.stdio.h.kyoto-u.ac.jp/~hioki/gairon-enshuu/SchemeNotes/continuation.html
継続の使い方
http://www.geocities.co.jp/SiliconValley-PaloAlto/7043/index.html#continuation
継続の使用法
http://www.ice.nuie.nagoya-u.ac.jp/~h003149b/lang/block.html
CPS(継続渡しスタイル)の説明
http://www.csl.sony.co.jp/person/masui/Forum/data/20011215023622/
- 22デフォルトの名無しさんsage03/07/16 22:32
- >>21 正直、ありがとう。Common Lispe 派の俺は継続はよく分かって
なかったんだ。ちょっぴりコストが気になるんだけど、Scheme 方面では
継続つかいまくりなんでしょーか?
- 23デフォルトの名無しさんsage03/07/16 23:11
- 普通は使わないんじゃない?
裏で使ってるかもしれないけど。
- 24デフォルトの名無しさんsage03/07/17 18:06
- >>19
CL-HTTP はどう? 個人的にこういうスタイルが好み.
http://www.ai.mit.edu/projects/iiip/doc/cl-http/
John Foderaro のコードは「Lisp Coding Standards v1.0 」なんて
言っているくせに AllegroServe のコードは全然綺麗じゃないと思う.
http://www.franz.com/~jkf/coding_standards.html
- 25デフォルトの名無しさんsage03/07/17 20:09
- >>24 then, else を明示的に書く if* を試してみようかと思いはじめますた.
- 26デフォルトの名無しさんsage03/07/17 21:48
- >>19
applyやmapが上手く使われてて、lambdaがないと綺麗に思うな。
初歩的だけど参考になったという意味では、
(define (rev a)
(if (list? a) (reverse (map rev a))
a))
(define (flatten a)
(if (list? a) (apply append (map flatten a))
(list a)))
(define (for-each-tree f g a)
(let self ((a a))
(if (list? a) (apply g (map self a))
(f a))))
(define (sum tree) (for-each-tree + + tree))
(define (map-tree f tree) (for-each-tree f list tree))
- 27デフォルトの名無しさんsage03/07/18 02:24
- wxLisp に期待。
- 28flatline ◆r6EONKKhcc sage03/07/18 08:56
- It's fine with me if you want to put a Japanese translation
online. I doubt the new publishers will issue a Japanese
version. --pg
とのことです.という訳でOn Lisp邦訳版(1-7章のみ)の公開を再開しました.
ttp://user.ecc.u-tokyo.ac.jp/~g340299/onlisp_j.{dvi,pdf,tex}.bz2
しかし今は期末テスト前半中なので作業再開は8月に入ってからになります.
- 29デフォルトの名無しさんsage03/07/18 10:12
- (゚д゚)ウマー Paul タンマンセ- flatline マンセー
- 30デフォルトの名無しさんsage03/07/19 15:21
- AllegroCommonLispの使い方おしえてください。
登録とか必要なん?めんどいっすか?
親切な説明きぼんでございます。
- 31デフォルトの名無しさんsage03/07/19 18:07
- 試用版なら,メールアドレスを登録してライセンスファイル
を取得する必要があります.また,定期的にライセンスファイル
の更新が必要です.もっと詳しく聞きたい?
めんどくさいと感じるなら,フリーの実装使ったほうがいいかも.
- 32デフォルトの名無しさんsage03/07/19 23:53
- 継続の勉強を継続中。。。むずかしい。。。
ところで継続が扱える言語って何があるんですか?
とりあえずGoogleしてこれだけわかりました。
Ruby
Scheme
Prolog
Smalltalk
Standard ML
Haskel
Stackless Python
- 33デフォルトの名無しさん03/07/20 02:50
- 継続難しいか?
- 34デフォルトの名無しさんsage03/07/20 07:32
- CPSはそれなりに難しいかも
- 35デフォルトの名無しさんsage03/07/20 09:10
- >>28
乙
先に出しときゃ煽られなかったね。
で、これからは訳の進捗で煽られると。
てことはどっちにしても煽られる?(をい
- 36デフォルトの名無しさんsage03/07/20 10:46
- LispとSchemeを同時に勉強してるんですけど、
この2つで何が違うのかいまいちよくわかりません。
SchemeはLispのサブセットといいつつ、継続と
delayやforceはSchemeにしかないですよね?
SchemeとLispの区別をあいまいにしててハマるツボとかあります?
- 37デフォルトの名無しさんsage03/07/20 11:09
- スコープと関数の名前空間。
- 38デフォルトの名無しさんsage03/07/20 11:11
- サブセットじゃない。
- 39デフォルトの名無しさんsage03/07/20 11:19
- 便利な関数リファレンスとかってありますか?
- 40デフォルトの名無しさんsage03/07/20 11:38
- 便利を定義してください。
- 41デフォルトの名無しさんsage03/07/20 13:29
- BENRI Benri is Effective aNd Reliable Interface
- 42デフォルトの名無しさんsage03/07/20 13:56
- >>36
サブセットではなく方言の一つ
- 4336sage03/07/20 22:43
- レスどうもです。
なるほど、スコープや名前空間で違いがあるんですね。
このあたりしっかり理解してなかったんで勉強しておきます。
サブセットというのも勘違いだったようで…
仕様が巨大なのはLispのほうですよね?
- 44デフォルトの名無しさんsage03/07/20 23:18
- ACL trial 版って GUI 作れないのね。
- 45デフォルトの名無しさんsage03/07/20 23:35
- >>43
単に、LISPと言っても色々あるからな。
巨大な仕様のLISPと限定すれば、CommonLISP。
と言っても、最近のC++程に巨大かというと、そうでもない。
- 46デフォルトの名無しさんsage03/07/21 00:29
- >>43
Lisp は総称であって 「Lisp という名の言語」 があるわけではない
- 47デフォルトの名無しさん03/07/21 09:05
- gcのゴミ集めの様子をグラフィカルに表示できる処理系ありませんか?
(windowsのデフラグの様な)
無かったら自分で作ろうかと。
- 48デフォルトの名無しさん03/07/21 09:21
- Lisp系?
- 49デフォルトの名無しさんsage03/07/21 09:51
- emacsでM-C-aとかって押せるわけないと思う。
- 50デフォルトの名無しさんsage03/07/21 10:12
- なんで?
- 51デフォルトの名無しさんsage03/07/21 10:34
- >>49
指がJOJOっぽくなる。(すごーく押し辛いのよ)
- 52デフォルトの名無しさんsage03/07/21 10:44
- 右親指でalt 右小指でctrl
でaを押せばいいんじゃない?
- 53デフォルトの名無しさんsage03/07/21 11:02
- MってAltキーのことなんだっけ?Metaキーという名前だったような・・・
- 54デフォルトの名無しさんsage03/07/21 11:43
- 右のAltが小さくて押す気がおきなかったんだけど、普通そうするのか。
それにしてもなんだよ、右Altの左の”カタカナひらがなローマ字”ってキー。
- 55デフォルトの名無しさんsage03/07/21 11:47
- ESC 押して離して、普通に Ctrl + a でいいじゃん
- 56デフォルトの名無しさんsage03/07/21 12:15
- 日本語キーボードを使わないかキーの配置を変える。
英語キーボードだとスペースキーの右が右Altだから押しやすいと思うが。
- 57デフォルトの名無しさんsage03/07/21 21:42
- Ctrl + [ を押して Ctrl を離さず a を押す。
- 58デフォルトの名無しさんsage03/07/22 23:37
- TeX に疲れたので、だれか Lisp 系の組版システム作ってください。
無論自分でもやりたいが、TeX も理解できないヘタレな漏れにはムリポ。
- 59デフォルトの名無しさんsage03/07/22 23:54
- >58
どういうのをイメージしているのか教えてぷりーず
それってTeXよりもいいものなのか?
- 60デフォルトの名無しさんsage03/07/23 00:04
- >>58
DSSSL?
- 61デフォルトの名無しさんsage03/07/23 00:13
- (math (= (+ 1 1) 2))
- 62デフォルトの名無しさんsage03/07/23 01:09
- >61
なんですか?
- 6359sage03/07/23 01:13
- >62
勝手に推測すると $1+1=2$ と言いたいのと思われ
でも $(1+1)=2$ はどうするのだろう?
- 64デフォルトの名無しさんsage03/07/23 02:58
- >>61
クォートしようよ。
(math '(= (+ 1 1) 2))
>>63
勝手に推測すると
(math '(= (explicit-paren (+ 1 2) 2)))
=> $(1+1)=2$
勿論implicitなparenthesisもあるわけで、
(math '(* (+ 1 2) 2)
=> $(1+2)*2$
って、これって相当するTeXソースを標準出力か何かに吐く関数を定義すればいいのかな?
- 6559sage03/07/23 03:22
- >64
括弧の位置が微妙な予感w
いっそのことMathMLと等価なS式で…TeXの方がまだましか (´・ω・`)
- 66デフォルトの名無しさんsage03/07/23 03:43
- >65
括弧の位置って?ええと、3つ目の例で閉じ括弧を忘れてるのはごめんなさい。
MathML、そんなのもあったね。。。
スワップアウトの外だったのでぐぐってみたらアドワーズ広告大量でちょっとびっくり。でも
>とても人間が書くような内容とは思えない。
うん、確かに。まあもともとXMLが人間の書くものじゃないんだけど。
- 67デフォルトの名無しさんsage03/07/23 07:57
- だれと話してるの?
- 68デフォルトの名無しさんsage03/07/23 11:31
- 見えないお友達と
- 69デフォルトの名無しさんsage03/07/23 11:48
- Wiki に TeX の数式やレイアウトコマンドが埋めこめるよーなやつ
キボンヌっと.TeX の数式はしょうがないとは思うんだが,マクロ
書き難くない?漏れだけ?スタイルファイルとか暗号に見える…
- 70デフォルトの名無しさんsage03/07/23 13:01
- >67
http://www.google.com/search?q=%82%C6%82%C4%82%E0%90l%8A%D4%82%AA%8F%91%82%AD%82%E6%82%A4%82%C8%93%E0%97e%82%C6%82%CD%8Ev%82%A6%82%C8%82%A2&hl=ja&lr=lang_ja
>69 同意だが、S式にしたいってこと?
- 71デフォルトの名無しさんsage03/07/23 19:23
- 内部表現に S 式使いたいなー。
(document (chapter "..." (section "...") (section "..."))
(chapter "..." (section "...") (section "...")))
だったら、激しく section や chapter やらをいじるのが楽。
- 72デフォルトの名無しさんsage03/07/23 20:26
- 使いたいなら使えばいいじゃん
アフォ?
- 73デフォルトの名無しさんsage03/07/23 20:33
- S式M式
- 74デフォルトの名無しさんsage03/07/23 20:55
- >>71
それくらいなら、Cのプリプロセッサを用いて出来そうじゃない?
完全なS式では無いけど。
- 75デフォルトの名無しさんsage03/07/23 21:10
- 世の中なんでも XML なので,XML -> SXML でいいんでない.
- 76デフォルトの名無しさんsage03/07/23 22:51
- >>75
で、DSSSLの後継作ってSXML処理させるのがSchemerの正しい姿かな?
- 77デフォルトの名無しさんsage03/07/24 09:15
- お話の途中で恐縮ですが、質問させてください。
当方、俄かに思い立ち、Schemeを学ばんと志す初学者ですが、
petite chez のインストールで既に躓いて、難儀しております。
インストーラーがするすると懇切丁寧にインストールしてくれるまでは良かったわけですが、
どういうわけか "cvs6.0a/i3nt/" 以下に生成される筈の "petite.heap" なるファイルが見当たりません。
"INSTALL.LOG" を見ると、きっちり当該のディレクトリに copy された旨、明記されておりますが、
どういうわけか存在しません。
どうも、対応OSの項にXPが明記されていないのが怪しいと踏んでおりますが、素人算段ではあてにならんかと。
それとも私は、何か馬鹿な勘違いをしでかしておるのでしょうか?
申し送れましたが、当方の環境は以下の通り。
Windows XP Home Edition SP.1 (filesystem は NTFS でフォーマット)
Petite Chez Scheme ver.6.0 for Intel Windows NT/95/98/2k
お忙しいところ申し訳ありませんが、一つ有志の助言を仰がせていただけましたらば、と思います。
- 78デフォルトの名無しさんsage03/07/24 13:31
- Gauche release 0.7.1:
# SXMLフレームワークが統合されました。 SSAX XMLパーザ、SXPATH問い合わせ言語、および Kirill LisovskyとDmitry Lizorkinによるsxml-toolsが含まれます。
# Boehm GC 6.2へとアップグレード。
# fluid-letマクロを追加 (thanks to Dorai Sitaram).
# Gaucheの拡張モジュールのサンプルソースをexample/spigotに置きました。
# text.html-liteは、空エレメントに対して XHTMLと互換性のある "<tag />" を出力するようになりました。
# www.cgi: cgi-header は任意のキーワード引数 を取り、それらを追加のヘッダとして出力するようになりました。 また、 :location 引数とset-cookieヘッダを同時に使う事も できるようになりました。
# 変数 *program-name* and *argv* は -u, -l, -e コマンドラインオプションが評価される前に設定される ようになりました。したがって、これらのオプションで引用される ファイル中のこれらの変数への参照が正しく動作します。
あとはバグフィックス
- 79デフォルトの名無しさん03/07/28 01:17
- Windowsで使えてGUIが組めて、Cに組み込み可能な処理系ってあります?
schemeでもlispでも構いません。教えて下さい。
- 80デフォルトの名無しさん03/07/28 01:22
- ★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆
★☆
☆★ 送料激安!! 送料激安!! 送料激安!!
★☆ http://www.get-dvd.com
☆★ 激安アダルトDVDショップ
★☆ お買い得セール1枚500円〜980円!急げ!
☆★ インターネット初!「きたぐに割引」
★☆ 北海道・東北の皆様は送料も激安!
☆★ http://www.get-dvd.com
★☆ スピード発送!
☆★ http://www.get-dvd.com
★☆ 商品が豊富!
☆★ http://www.get-dvd.com
★☆
☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆
- 81山崎 渉(^^)sage03/08/02 02:15
- (^^)
- 82デフォルトの名無しさんsage03/08/02 11:57
- この寂れようは何?
- 83デフォルトの名無しさんsage03/08/02 12:02
- >>79 がLispでWinのGUIというNGワードを吐いたからでしょ。
あ、xyzzyってのがあったか(w 何とか組み込みに改造しなよ。
- 84デフォルトの名無しさんsage03/08/02 16:36
- Allegro CL があるじゃん。
- 85デフォルトの名無しさんsage03/08/02 22:16
- LispWorks とかもあるな。GCL もなんか GUI ライブラリがどーのって前にでてたようだが。
- 86デフォルトの名無しさんsage03/08/03 02:34
- CLISP の GDI モジュールに期待しつつ、黙って待つのが通。
- 87デフォルトの名無しさんsage03/08/03 07:35
- 77のインストールできないって話はどうなったんだ?
- 88デフォルトの名無しさんsage03/08/03 08:01
- ACLって高いね
- 89デフォルトの名無しさんsage03/08/04 00:33
- >>87 >>77
まずは対応OSに入れてみれば?
Petite Chez SchemeのWindows版はインストーラ形式になっているが、
結局はレジストリ関係の設定は不要で、ファイルさえあれば動く。
インストーラでコケてるんで、XPでも問題なく動く保証はない。
- 90デフォルトの名無しさんsage03/08/04 00:38
- >>79
今ちょうど、そういう処理系を作ってる。
GUIも一応組める様になった。
ということで、処理系はあるね。
- 91デフォルトの名無しさんsage03/08/04 00:42
- >90 公知でなければあるとは言わない。
- 92デフォルトの名無しさんsage03/08/04 00:46
- そうですか。
すまんこ
- 93デフォルトの名無しさんsage03/08/04 00:46
- Zaurus SL-7x0 で動く Scheme処理系が欲しいでつ…
- 94デフォルトの名無しさんsage03/08/04 00:49
- >>93
Linuxなら色々処理系あるんでは?
あ、Zaurusはプロセッサが違うのか。
- 95デフォルトの名無しさんsage03/08/04 01:02
- >>93
とりあえずLinuxが入ってるのなら、
umb-scheme辺りは動く様な気はするので試してみては?
メンテ終わってるそうだが。
- 96名無しさん@Linuxザウルスsage03/08/04 01:48
- 普通にgauche入れて使ってますよ
- 97デフォルトの名無しさんsage03/08/04 01:52
- 漏れも gauche コンパイルしてみたんだけど real number 使うと落ちるよ
- 98デフォルトの名無しさんsage03/08/04 22:41
- >>90 公開する予定はないんでしょうか?
- 99デフォルトの名無しさんsage03/08/04 22:50
- Lisp/Scheme から wish を呼び出せば良いんじゃない?
- 100デフォルトの名無しさん03/08/06 01:16
- 100ゲトしたのでageますよ〜!
- 101デフォルトの名無しさん03/08/07 21:08
- Gauche0.7.1のマニュアルに、コールバック内外へ向けての
継続呼び出しは無理だと書いてあったんだけど、
これをちゃんと実装してる処理系ありませんか?
あんまり使わないってのはわかるんだけどね・・。
- 102デフォルトの名無しさんsage03/08/07 22:25
- 横からすまんけど、コールバック内への継続呼び出しってどんな風に使えるんですか?
継続とか使ってる人とあまりみたことないんで興味津々。
- 103デフォルトの名無しさんsage03/08/08 00:38
- >>102
まず、デバッガの実装に使えるね。
他に、真の協調スレッドタスクが組める。
わざわざCPSを使う必要がなくなるだろう。
- 104デフォルトの名無しさんsage03/08/08 00:49
- いくら言語側をスタックレスに作っても、
GUIを扱うならコールバックによるネストは避けられない。
pythonや他の言語はどうしてるのかな。
- 105デフォルトの名無しさんsage03/08/08 00:59
- コールバックを使う GUI はクソ。と言ってみたいです。
- 106デフォルトの名無しさんsage03/08/08 01:14
- 解せないのがSCMの方式。(continue.c)
Cによる無理矢理とも思えるスタック退避+setjmp/longjmp。
あれでちゃんと動いてるのかね。
- 107デフォルトの名無しさん03/08/08 23:53
- 有理数がサポートされていないと,
完全数のまま演算できないよ ヽ(`Д´)ノ
mit-scheme はできるけど,重いのなんのって.
みなさん,有理数をサクサク使うにはどうしてますか?
有理数をサポートすると mit-scheme みたいな動作になるんですか?
- 108デフォルトの名無しさんsage03/08/08 23:59
- 分数ならPetite Chez Schemeでも扱えたけど。
- 109デフォルトの名無しさん03/08/09 08:57
- >>108
ありがとう.使えました.とっても軽いですv
有理数の扱いは難しいということですか?
ちゃんと書いたのに +#.# (顔文字) を返す guile って...
- 110デフォルトの名無しさんsage03/08/10 07:09
- guileはよくわかんねえな。
遅いし。
- 111デフォルトの名無しさんsage03/08/10 21:14
- >>79
biglooにWindows版あるけど、これでGUI扱えんかね?
- 112デフォルトの名無しさんsage03/08/12 12:13
- DrScheme の UNIX 版使ってるけど一応 GUI あるぞ。
Win 版でも使えるんじゃねーかな。
- 113 03/08/12 19:36
- 記号微積システムを考えているのですが、積分がいまいち分りません。
「計算機プログラムの構造と解釈」には微分が載っているので参考にできるのですが・・・
なにか参考になるサイト等はないでしょうか?
- 114デフォルトの名無しさんsage03/08/12 21:08
- Maximaのソースとか?
- 115デフォルトの名無しさんsage03/08/12 22:13
- 今ちょっと試したけど、biglooのインタプリタってそんなに速くないね。
どうやってコンパイルするのかな・・
- 116flatlinesage03/08/13 01:54
- >>113
をを同士よ.木村巌氏のScheme総合サイト
www.sci.toyama-u.ac.jp/~iwao/Scheme/scheme.html
からA. Jaffer氏のサイトに行けば,Jacalというのがあります.
これはSchemeで書かれたフリーソフトです.
変わったところでは,Mathematicaのわずかな部分だけをCommon Lispでエミュレートする
MockMMAというのをRichard Fateman享受@バークレーが密かに配っている.
www.cs.berkeley.edu/~fateman/
から探せば見付かります.
あと本格的過ぎて役立たないだろうけど,計算機代数システムMaximaのサイト
maxima.sourceforge.com
ここからCommon Lispのソースをゲト.
あと確か,Structure and Interpretation of Classical Mechanicsという
授業の教科書がMITのサイトから配られてたので,何か関係あることが載ってるかも.
>>みなさま
On Lispの翻訳,相変わらずびみょーに進めてます.洩れのサイト
user.ecc.u-tokyo.ac.jp/~g340299/
をたまにのぞくと更新されてるかもしれません.
- 117flatline@Vim%Chalice ◆r6EONKKhcc sage03/08/13 02:00
- 補足.
つながらなくはないけど, maxima.sf.net とした方がよかったですね.
あとSICMのサイトは
mitpress.mit.edu/SICM/
でした.G. Sussmanが関わってるんですよ.
ここのscmutilsは,MIT Schemeの実装にべったり依存だそうです.
SICMはShiro KAWAIさんのWikiで知ったんですけど,誰かがそう書いてました.
- 118デフォルトの名無しさんsage03/08/14 01:20
- そういや、MIT-Schemeもいつのまにか
MIT/GNU Schemeになってるな。
前からそうだったっけ?
- 119デフォルトの名無しさんsage03/08/14 01:30
- >117
この本のタイトルは知ってはいたけど、こういう本だとは知らなかった
力学の数学的抽象を計算機に載せたいとか考えていた漏れは読まなきゃダメか
- 120デフォルトの名無しさんsage03/08/15 15:02
- CLOSのマルチメソッドってなに?
- 121デフォルトの名無しさんsage03/08/15 15:10
- CLispにはCLOSの超簡単なチュートリアルが付いてきます。
それでだめならALU: The Asocciation of Lisp Usersのサイトから
適当に文書探して下さい。
- 122山崎 渉(^^)03/08/15 15:39
- (⌒V⌒)
│ ^ ^ │<これからも僕を応援して下さいね(^^)。
⊂| |つ
(_)(_) 山崎パン
- 123デフォルトの名無しさん03/08/16 21:15
- bigloo使ってる人いる?
- 124デフォルトの名無しさんsage03/08/17 19:17
- Allegroのトライアルで密かに開発すべきか、GCLで堂々と開発すべきか...
- 125デフォルトの名無しさんsage03/08/17 20:05
- トライアルでも別に密かに開発しなくてもいいんじゃ…。
- 126デフォルトの名無しさんsage03/08/19 09:56
- なぜ scheme の MIT-scheme の方が Common Lisp の clisp よりも重いのでしょうか?
- 127デフォルトの名無しさん03/08/19 18:09
- >>126
コンパイルすりゃ速くなるんじゃない?
clispのVMはコンパイルしても大した速度出ないよ。
- 128デフォルトの名無しさんsage03/08/19 18:55
- Javaで動くScheme使ってる人いますか?
- 129CL派sage03/08/19 19:28
- >>127
くっ、しょうがねーだろう。clisp はバイトコードにコンパイルなんだから。
ネイティブコンパイラなら Common Lisp のほうが速いからいいんだ。と、
ライバル心を出してみる。
- 13012603/08/19 21:27
- >>127
MIT-scheme は処理系自体が重いのです.
重い処理をやらせているわけではないので,
その処理系自体の重さが目立ってしまいます.
scheme 処理系は簡単に作れると言われながら,
有理数が扱えてフリーなライセンスとなると MIT-scheme しか無いのも不思議です.
- 131直リン03/08/19 21:29
- http://homepage.mac.com/kyouko6/
- 132デフォルトの名無しさんsage03/08/19 21:34
- 普通は有理数使わないしなぁ
- 133Greenblattsage03/08/19 21:55
- どこかのハッカーが、どこかのマシンにしがみついて二週間ばかりがんばって LISP を書き、
「見てくれ、LISP をものにしたぞ」という。そんなことが何度だってあるだろうさ。だけど、
それと本当に使い物になるシステムとの間には天地ほどの差があるんだよ。
- 134デフォルトの名無しさんsage03/08/19 22:20
- ACLの実装技術を盗もう
- 135デフォルトの名無しさんsage03/08/19 23:20
- >>128
自分で書いたのなら使ってるよ。
scheme から java のクラスが使えるので結構便利。
- 136デフォルトの名無しさんsage03/08/21 12:10
- >>135
是非拝見いたしたいのですが。
- 137デフォルトの名無しさんsage03/08/22 21:05
- >>130
有理数って、具体的に何ができればいいの?
分数(exact)が使えればいいの?
おれ数学弱いからわかんねえ。
長整数と浮動少数点使えればいいや、って気もするし。
- 13813003/08/23 09:07
- >>137
> 長整数と浮動少数点使えればいいや、って気もするし。
有理数と言っても,bignum が 2 つペアになったやつでいいんです.
そうすると有理数は完全数ですので,有理数だけで済む計算は
完全数で出すことができます.
手元で pi ウン万桁とかが簡単に出せます.
- 139デフォルトの名無しさんsage03/08/23 09:44
- DrScheme フリーで有理数が使える。
http://www.drscheme.org/
- 140デフォルトの名無しさんsage03/08/23 10:37
- >>138
じゃあ自分で有理数用の関数書いたら?
- 141130sage03/08/23 11:52
- >>139 スマソ.調べていませんでした.
>>140
ごもっとも!でも,
1/2 ===> 0.5
になる処理系では,使い勝手は悪いです.
自分で新しい表記として
#hoge1/2 ===> #hoge1/2
みたいには出来るのでしょうか? Common Lisp のように.
- 142デフォルトの名無しさんsage03/08/23 13:28
- >>141
対応してない処理系でrationalを入出力で扱いたいなら、
とりあえずreadとwrite(とdisplay)を再定義すれば、見かけ上の
問題はなくなる気がする。
内部のread/writeを外部参照しない処理系ではできないけど。
(let ((read-org read)) (set! read (lambda args ...))
あと、number->string string->numberもかな。
データの内部表現は
(define (make-rational 分子 分母) (vector '*rational* 分子 分母))
(define (radd2 lop rop) ... )
(define (rsub2 lop rop) ... )
(define (rmul2 lop rop) ... )
(define (rdiv2 lop rop) ... )
などとして、オペレータを定義していくとか。
(rdiv2 1 2)=> #rational1/2
bignumもこの応用で。
- 143デフォルトの名無しさん03/08/26 13:47
- まちがえた
- 144デフォルトの名無しさんsage03/08/29 05:34
- ひっそりひそひそ。
- 145デフォルトの名無しさんsage03/08/29 05:50
- ILC2003行く人いる?
Franz Storeから去年のProceedingsとかVideoWareとか買ってみても
どんな雰囲気なのかいまいち想像できないんで躊躇してるんだけど(お値段結構お高いし…)
- 146デフォルトの名無しさんsage03/08/29 19:55
- ILC2003で検索するとInternational Lunar Conference 2003
が出てきますが。
月と何か関係が?
- 147デフォルトの名無しさんsage03/08/29 23:32
- 三日月→ )
満月→ ( )
新月→ '()
- 148デフォルトの名無しさん03/08/30 00:07
- いつのまにかIMEがONになってsちぇめ、
sちぇめえ!
- 149デフォルトの名無しさんsage03/09/01 01:12
- >> 146
hxxp://www.international-lisp-conference.org/
こっちのことと思われ。
- 150デフォルトの名無しさんsage03/09/01 04:26
- どっちにしろ外国かよ
- 151デフォルトの名無しさんsage03/09/01 12:49
- keynote の arc 話聞いてきて.おながいします.>>145
- 152デフォルトの名無しさん03/09/02 19:19
- LISPってJAVAみたいにVMとかないの?
C:>LISPC TEST.lc
TEST
・・・
・・・
みたいにさ
- 153デフォルトの名無しさんsage03/09/02 19:55
- >>152 どーしても VM がほしければ clisp の VM とかがあるけど…。
なんで VM がほしいの?
- 154デフォルトの名無しさんsage03/09/02 20:04
- emacsにもvmあるよ
- 155デフォルトの名無しさんsage03/09/02 20:05
- C++と連携させて開発しなきゃいけないので、どちらかといえばVMがあるほ
うがいいようなきがするだけ。ちなみにLISPの開発はこれが始めてです。
- 156デフォルトの名無しさんsage03/09/02 20:57
- つまりスタックレスかな?
- 157デフォルトの名無しさんsage03/09/02 21:15
- scheme48 とか plt には vm 入ってるけど
これのこと?
- 158デフォルトの名無しさんsage03/09/02 21:56
- C++ との連携方法ってどんなのを考えてるの?
- 159デフォルトの名無しさんsage03/09/02 23:09
- >>155
何故VMがあるほうがC++と連携しやすいと考えたの?
- 160デフォルトの名無しさんsage03/09/03 13:19
- batでファイル名指定して動かしたいので、VMみたいなものがないと困るから、です。
大して深い意味はないです。
- 161デフォルトの名無しさんsage03/09/03 14:30
- >>160
コンパイルできる処理系使えば?
- 162デフォルトの名無しさんsage03/09/03 16:26
- >>160 clisp なら
-- sample.lisp --
(format t "~S~%" *args*)
-- sample.lisp --
> clisp sample.lisp hello world
("hello" "world")
とか簡単に実行できるYO
- 163デフォルトの名無しさんsage03/09/03 21:22
- LispWorks の Mac OS X 版出てるけど、これって GUI はもしかして Qt 使ってるの?
Cocoa API 使っているって書いてあるけど、Fake な予感...
- 164デフォルトの名無しさんsage03/09/03 21:56
- >160
Gauche じゃだめ?
- 165デフォルトの名無しさんsage03/09/04 20:53
- batファイルの関連性がわからない
- 166デフォルトの名無しさんsage03/09/05 00:16
- 便乗質問
>164
GaucheとCの連携はまだ公式にはアナウンスされてないようだが、まともに動くの?
同梱されてるテストプログラムではやってるようだけど。
- 167デフォルトの名無しさんsage03/09/05 12:39
- skimuさんのGGCのFFTモジュールに,
実際の計算部をCで書いてるところがある…これを見てみれば?
- 168デフォルトの名無しさんsage03/09/05 13:19
- >>165 バッチファイルなんだから Windows ってことだろう.Cygwin 抜きの.
というわけで clisp を勧めたんだが,Gauche も Windows で使えるんだっけ?
- 169デフォルトの名無しさんsage03/09/05 21:00
- >>168
正式対応はしてないよ
cygwinでconfigure通してmakeして、動いたってだけらしいし・・・
- 170デフォルトの名無しさんsage03/09/05 21:40
- >>168
clisp が windows 対応というのを始めて知りました.
配布が安心なスクリプト言語は python しかないなあ (鬱,
と思っていたところでした.
- 171デフォルトの名無しさん03/09/08 21:13
- (defun in(a)(if(= a 0)'contract-error a))
(defun body(a b)(/ a b))
(defun out(a)(print a))
(defun func(a b)
(out(body a (in b))))
- 172デフォルトの名無しさんsage03/09/09 01:06
- 何が言いたいんだ?
- 173デフォルトの名無しさんsage03/09/10 10:32
- 某 R からはじまる言語関連で lisp はユーザビリティが低い,と言われてますが
lisper の皆さん,使っててどうですか?
- 174デフォルトの名無しさんsage03/09/10 11:08
- >>173
Rubyのこと?
どこで言われているのでしょうか?ソースを教えて。
Ruby の usability とはどの変のことを言うんだろう。
- 175デフォルトの名無しさんsage03/09/10 11:22
- Matz 日記の話だろう.今日続編がでるんじゃなかったっけ?
配列のアクセスが面倒なのは同意だな〜.ヘタレなのでマクロ使える人に
[ary x y] => (aref ary x y)
みたいなのリーダーマクロをつくってもらって満足してる漏れ.どーせ趣味で
いじってるだけだし〜.
- 176デフォルトの名無しさんsage03/09/10 19:12
- >>175
それをやるだけで,usability が一気に改善されるのでしょうか?
一気に汚くなるに一票.
- 177デフォルトの名無しさんsage03/09/11 00:16
- 「彼の言う usability」 とやらが美しさと引き換えなのであればそんなもんイラネ
俺には前置記法の方が読みやすいし。
- 178デフォルトの名無しさんsage03/09/11 00:22
- Lispはこのままでいい
- 179デフォルトの名無しさんsage03/09/11 00:24
- Rubyが使いやすくなるなら、それはそれで結構
- 180デフォルトの名無しさんsage03/09/11 11:24
- 言われるほどマクロって理解不能か?使うだけなら大抵,
A: この aif とか awhen ってなに?
B: あー,条件の値を it で参照できる if とか when
A: let 省略 ウマー
くらいじゃねぇ?
- 181デフォルトの名無しさんsage03/09/11 17:57
- >>180
マクロのせいで「俺様構文」が多くなるから、いやーんな感じがする。
aif とか awhen とかいう名前もセンスが悪いし。
- 182デフォルトの名無しさんsage03/09/11 18:16
- Anaphoric if に aif じゃないセンスの良い名前を付けてやってください.
- 183デフォルトの名無しさんsage03/09/11 18:53
- anaphoric-if
- 184デフォルトの名無しさんsage03/09/11 19:30
- matzの日記の「慣れ」と「常識」についての言い分はよくわかる。
普段lispやschemeを使っている人にとっては、とっさの場合マクロ等を
駆使して書いた方が早いが、多人数の仕事で使うとなると、初心者
(C言語程度は読める)にS式を見せても分かってくれない(=理解しよう
としない)場合が多い。
そういう輩は大抵S式の括弧を毛嫌いしている。そこへS式の内側で
暗躍するマクロを持ち出してきても問題は改善しない。
schemeの規格書をいくら薄っぺらくしても同じ事かもしれない。
- 185デフォルトの名無しさんsage03/09/11 19:53
- そういう時、なにも始めから無理矢理S式で書かせる必要はない。
フロントエンドにC風の構文を用意しておけば納得する。
自分は、C+MLっぽい文法を用意している。
コードは可逆変換できるので、Schemeの勉強にもなるかもしれない。
クロージャなどのscheme特有の概念を使わなければ、型の無いCと
同じ感覚で書ける。
これでS式の鎖国は終わった。
- 186デフォルトの名無しさんsage03/09/11 20:20
- カッコを嫌う原因は何なんでしょうか?
どんな人でも馴れるものではないのでしょうか?
- 187デフォルトの名無しさん03/09/11 20:42
- ネストしまくって読みにくいから
- 188デフォルトの名無しさんsage03/09/11 20:53
- 鎖国なんてしたんですか?Algol ライクな文法とか、中置記法マクロとか
あったし、いろいろ考えてたみたいだけど。ML ライクな構文のフロントエンド
公開キボンヌ。
- 189デフォルトの名無しさんsage03/09/11 21:21
- >>186
1. 偉い人がそう言ったから。
2. 括弧の対応を追うのが嫌。
3. 括弧だらけで美しくない。
- 190bloom03/09/11 21:38
- http://www.leverage.jp/bloom/qry/search.qry?function=first
- 191デフォルトの名無しさんsage03/09/11 22:00
- マクロを使うと分かりにくくなるというのはプログラミング言語の問題ではなくプログラムの問題に他ならない。
マクロを用いることで分かりにくくすることもできるが、分かりやすくすることも同様に可能。
プログラムの設計次第でどちらにもなりうる。
事実の片方だけを持ち出し、あたかももう片方が無いかのごとく議論を進めるのはいかがなものか?
- 192デフォルトの名無しさんsage03/09/11 22:20
- >>191
>事実の片方だけを持ち出し、あたかももう片方が無いかのごとく
>議論を進めるのはいかがなものか?
どのレスを見てそう思った?
それともmatzの日記のこと?
- 193デフォルトの名無しさんsage03/09/11 22:31
- M式マンセー。
- 194デフォルトの名無しさんsage03/09/11 22:31
- つーかmatzの日記で本人も書いてるけど
所詮Rubyの作者の言い分だからねえ
内容もLisp黎明期から言われつづてる
S式が分かりにくいって話でしかないし
あの人Pythonでも前科があるけど
何かとRubyの優位性を説きたがるしね
よく言えば単なる言語ヲタク
悪く言えばRubyのためにFUDも辞さない人格者
しかもあれは読みようでは
RubyがLispより優れているところは読みやすさしかないって
作者本人が認めてるようなもんだから
S式ネイティブな人たちは
ニヤニヤ眺めてればいいんじゃないの
- 195デフォルトの名無しさんsage03/09/11 22:42
- LISPのマクロは構文だと思えば全然問題ない。
だが使いどころが肝心。
例えば+をマクロと定義して、それを知らずにapplyに渡すと
目も当てられない自体を引き起こす。「それを知らずに」
(defmacro + (&rest ) 〜.)
(apply + '(1 2 3 4 5)) ;;アイタタタ・・・
=> ???
こういった値として扱う可能性、勘違いを引き起こすマクロには何の価値もない。
((if fun + *) 1 2 3 4 5) ;;アイタタタ・・・
まさにマクロとしては悪性。
賢いコンパイラを持たない処理系で暗黙のインライン展開を
引き起こしたい場合にこういったマクロを使うかもしれない。
今日のキーワード:「それを知らずに」
- 196デフォルトの名無しさんsage03/09/11 22:58
- 嫌がる奴に直接S式で書かせる必要はない。
フロントエンドがS式を吐けば同じ事だからだ。
もしRubyっぽいフロントエンドがLISPにあればmatzも納得するだろう。
- 197デフォルトの名無しさんsage03/09/11 23:07
- あれでまた、S 式は読みづらい、マクロはプログラムをわかりにくくする、
って思う人が増えるわけでしょ?一昔前は GC だからインタプリタだから
遅いとかって偏見があったわけで。
- 198デフォルトの名無しさんsage03/09/11 23:14
- 使いようによって良くも悪くもなるのはマクロに限った話じゃなかろうに
- 199デフォルトの名無しさんsage03/09/11 23:17
- >>196
べつにmatzに納得してもらう必要などないが
ああいう輩はほっとけ
- 200デフォルトの名無しさんsage03/09/12 00:54
- データ構造としてのLispのリストは柔軟な形式で良いと思うのだが、だからと
いってコード全体をああいう括弧で括る記述をしなければならない理由がよく
分からない。構文解析なんか如何様にも出来るわけだし。例えば (if ... と
か書いたときコーディングする側にとって初めの括弧は余計な情報に過ぎない。
- 201デフォルトの名無しさんsage03/09/12 01:15
- OnLisp読め
- 202デフォルトの名無しさんsage03/09/12 01:17
- まつもと氏は cmail の作者だから、一応 LISP の読み書きはできるはず。
- 203デフォルトの名無しさんsage03/09/12 01:26
- ruby-modeだって書いてるわけだし一応というレベルではないだろう
- 204デフォルトの名無しさんsage03/09/12 01:35
- んな事は今回の話には関係ないよ
単に自分の言語を広めたい奴と
何でもいいから有能な言語を使いたい奴がいるってだけの話さ
- 205デフォルトの名無しさんsage03/09/12 01:59
- >>200
> 例えば (if ... とか書いたときコーディングする側にとって初めの括弧は余計な情報に過ぎない。
本当にそう思っているのか?
- 206デフォルトの名無しさんsage03/09/12 03:29
- いろんな言語を好きに使えばいいんでないかい?
私はSchemeで再帰パターンを探してるときが一番楽しい。
- 207デフォルトの名無しさんsage03/09/12 09:34
- >>204
広めたいからというよりmatz氏は単に記述方法の比較をしているだけだろう。
- 208デフォルトの名無しさんsage03/09/12 09:53
- >>197
> 一昔前は GC だからインタプリタだから遅いとかって偏見があったわけで。
そういうことにしたいんですね。
- 209デフォルトの名無しさんsage03/09/12 10:42
- >>207
> 広めたいからというよりmatz氏は単に記述方法の比較をしているだけだろう。
ということにしたいのですね?
- 210デフォルトの名無しさんsage03/09/12 10:48
- 面白くないよ
- 211デフォルトの名無しさんsage03/09/12 10:50
- >>200
Emacs とかエディタの S 式操作コマンドのためだと思えば?正直いって,
S 式以外だと f(y)/g(x) を g(x)/f(x) とやってしまったときに修正するのがメンドウ.
S 式なら (/ (g x) (f x)) から C-M-t で一発で (/ (f x) (g x)) だし,式を操作
してるって気になる.マークするときも,式単位でマークできるし.
- 212しょしんしゃsage03/09/12 13:28
- S式の括弧だらけのLispのプログラムは激しく読みにくいです。
どこがまず評価されるのか、結局自分の頭で括弧をカウントして
いかないと判らないのが面倒だし、人間の思考順序と逆順に
プログラムが展開しがちなのもイヤなところです。
分かりやすいシンタックスの皮をかぶせるのなら、結局、Rubyや
Pythonを使っているのと同じことですよね。
- 213デフォルトの名無しさんsage03/09/12 13:53
- >>207
>matz氏は単に記述方法の比較をしているだけだろう。
セマンティックスから独立にシンタックスを語れると思っているところが
すでに十分イタイんだが
ただの逃げ口上なのかもしれんが
もし本気でそう思っているなら今までmatzを買いかぶっていたんだな
Ruby界隈でどういう記法がいいかみたいな話をやり過ぎて
言語設計者としての根が腐ったのかもね
- 214デフォルトの名無しさんsage03/09/12 14:18
- 思考順序とは逆というけど、最終的に呼び出したい関数が先に来ると処理全体における重要なポイントが把握しやすいようにも思う。
この違いはプログラムを書くときに頭を働かせる順序にも関係するだろうから、C言語等に慣れた頭では気持ち悪く感じるのも無理はない。
わしもそうでした。
たとえばC言語でプログラムを書くという場合でも、結局やりたいことはある関数の呼び出しであり、
その関数呼び出しの前にツラツラと書いてあるのは、その関数の引数に与えるデータを作ることだけだったりします。
そういう意味では、C言語では重要な部分と補助的な部分が同列に並んでしまうので,あとでコードを読むときに大事な部分がつかみづらいといえるかも。
と、まあLispの書き方に感じる利点をあげてみました。
また,if, let, do, cond, caseといった、プログラムの構造を決める式の使い方が頭になじめばだいぶ読みやすく感じるようになると思います。
どうしてもなじめなければprognとsetfを多用する書き方でもいいかと。
できれば私もバリバリのLisperがプログラムを書くときにどういう頭の使い方をしているのか聞いてみたい。
- 215デフォルトの名無しさんsage03/09/12 14:19
- >>212 括弧をカウントしないとわからない?エディタのインデントを信用しょぅょ.
- 216デフォルトの名無しさん03/09/12 14:39
- >>212
単純なほうだと思うけど・・・。
letとかは分かりづらいかな。
- 217デフォルトの名無しさんsage03/09/12 14:42
- >>213
> セマンティックスから独立にシンタックスを語れると思っているところが
語れるだろ。例えばlispのセマンティックスを持ちAdaのシンタックスで記述
する言語を作ろうと思えば作れる。lispのセマンティックスにlispのコード全
体をリストにさせる必然性はなにもない。
- 218デフォルトの名無しさん03/09/12 15:18
- Dr.Schemeを使っているんですが、n以下のランダムな自然数値を返すような関数ってありませんか?
- 21921803/09/12 15:21
- nは任意の自然数nの間違いです。すみません。
- 220デフォルトの名無しさんsage03/09/12 15:23
- いま >>211 がいいことを言った.
せっかく emacs で lisp を書いているのに,
式単位のコマンドを徹底して覚えていませんでした.
今まで何やってたんだろw
>>212
> いかないと判らないのが面倒だし、人間の思考順序と逆順に
> プログラムが展開しがちなのもイヤなところです。
この部分は思い込みなんじゃないかな?
たまたま >>212 の思考が計算機に近いだけかもよ.
- 221218-219sage03/09/12 16:51
- languageをPrettyBigにしたらありました。
すみませんでした。
- 222デフォルトの名無しさんsage03/09/12 16:52
- >>218
(random k)
- 223デフォルトの名無しさんsage03/09/12 17:59
- >>212
思考の順番と逆ってのは
(f4 (f3 (f2 (f1 hoge))))
みたいなやつのこと?慣れるまでは
(funcall (compose #'f1 #'f2 #'f3 #'f4) hoge)
とか
(let ((v1 (f1 hoge))
(v2 (f2 v1))
(v3 (f3 v2)))
(f4 v3))
とかすれば?漏れはカウントアップとカウントダウンくらいの差しか感じないけど
- 224デフォルトの名無しさんsage03/09/12 18:13
- (loop (print (eval (read))))
と書いて、人間思考に併せて read-eval-print-loop と読む。
しかしこれは関数型の言語の性質であり、S-exp とは関係ない。
- 225デフォルトの名無しさん03/09/12 18:20
- じゃあ逆にすればいいんだろ?
((((read) eval) print) loop)
- 226デフォルトの名無しさんsage03/09/12 18:31
- (define (gcd a b)
(if (eq 0 (% a b)
b
(gcd b (% a b)))))
((a b gcd)
((0 (a b %)
b
(b (a b %) gcd) eq) if) define)
とりあえず何も考えずにSchemeを前置→後置にしてみたが、むしろ死ねる。
- 227デフォルトの名無しさんsage03/09/12 20:20
- もしかして、forth ってこんな感じなの?
- 228デフォルトの名無しさんsage03/09/12 20:29
- むしろ,こんな感じだろう.こんなマクロならたしかに見難いかもなー.
read-eval-print-loop は #{read $ eval $ print $ loop} だ.
* (quote #{ #{1 2 *} #{2 2 *} + $ 1+ $ print})
(print (1+ (+ (* 1 2) (* 2 2))))
(set-dispatch-macro-character #\# #\{
#'(lambda (stream char1 char2)
(declare (ignore char1 char2))
(let* ((brace (prog1 (get-macro-character #\}) (set-macro-character #\} (get-macro-character #\)))))
(body (read-delimited-list #\} stream t)) program chunk)
(labels ((push-program ()
(setf program (nconc (cons (car chunk) (nreverse (cdr chunk))) (if program (list program) nil))
chunk nil))
(push-chunk (e) (push e chunk)))
(dolist (e body) (if (eq e '$) (push-program) (push-chunk e)))
(push-program)
(set-macro-character #\} brace)
program))))
- 229デフォルトの名無しさんsage03/09/12 21:20
- 非数値を扱う lisper で,かつマシンを部品で買う人は,
やはり VIA の C3 プロセッサですか?
- 230デフォルトの名無しさんsage03/09/12 22:52
- そのこころは?
- 231しょしんしゃsage 質の悪い燃料です。03/09/12 23:16
- 前置を後置に変えれば読みやすくなるわけはないです。
そうではなくて、「式と文」を分けることのユーザビリティを
高慢ちきなLisper/Schemerの方々にも考えてみて欲しいっす。
- 232デフォルトの名無しさんsage03/09/12 23:35
- 多分「式と文」じゃなくて、演算子の事だよな?>>231
- 233しょしんしゃsage03/09/12 23:37
- 式と文、だと思います。
演算子は「式」に属するものでしょう?
- 234デフォルトの名無しさんsage03/09/12 23:43
- なんだかね…いちいち対応する括弧をカウントしてるんでしょ?それは「読み方」を知らない
だけだと思うんだが…。間違った読み方をして読みにくいって言われてもねぇ。インデントを
見るんだよ。括弧なんて正しいところで閉じてりゃいいんだ。
それはおいといて、式と文を分ける事がユーザビリティを向上させるならそれは
(多分)誰も文句はないでしょ。どう向上するの?馬鹿な漏れに説明してくれ。
- 235非Lisper/Schemersage03/09/12 23:46
- >231
何故分けることを考える必要がある?
文=式である方がユーザビリティが高いと素人目にも思えるけど?
- 236デフォルトの名無しさんsage03/09/12 23:46
- >>231
>「式と文」を分ける
って何?
- 237しょしんしゃsage03/09/12 23:50
- >>234
>それは「読み方」を知らない
それは違います。インデントはプログラムを読む
一つのヒントに過ぎません。
インデントでヒントを与えるのは、つまり、ヒントが
なければ読みにくいからでしょう?
インデントでヒントを与えるのはLispだけの作法では
ありませんよ。
>どう向上するの?
式と文を区別してLispよりも読みやすいと思われる言語は
たくさんありますがなにか?
- 238デフォルトの名無しさんsage03/09/12 23:52
- 文って、例えばifとかの構文のことか?>>231
C言語のifは、それ自身値がないので文、
LISPやRubyのifは、それ自身の値があるので式
こういう前提で言ってるんなら、
「式と文」を分けたとするとユーザビリティは下がる気がするが?
- 239デフォルトの名無しさんsage03/09/12 23:53
- ここでの「式」と「文」の定義を明確にしてくれないと、
ちゃんと答え様がないぞ >しょしんしゃ
- 240しょしんしゃsage03/09/12 23:58
- >>238
>それ自身の値があるので式
たとえ、値を返したとしても、その値を別の式に渡さなければ、
式の結合はそこで切れます。
そこには意味的には「文」に相当する区切りがあるはずです。
プログラムが純粋に演算子だけでなりたっている場合は、
「文」は存在しないことになりますが、実際には宣言等の
構文が存在するでしょう。
これら意味の上で違いのある部分が、同一の()で区切られて
いるのはやはり「読みにくい」と言っておかしくないと思います。
- 241デフォルトの名無しさんsage03/09/12 23:58
- 逐次実行とかそういうことか?
- 242デフォルトの名無しさんsage03/09/12 23:59
- >>237
>式と文を区別してLispよりも読みやすいと思われる言語は
ここでもう主観が入ってる時点で議論にはならないよ
- 243しょしんしゃsage03/09/13 00:01
- >>242
>ここでもう主観が入ってる時点で議論にはならないよ
主観だと判断されるのなら私にも議論の余地がなくなります。
ではまた。
- 244デフォルトの名無しさんsage03/09/13 00:02
- > それは違います。インデントはプログラムを読む
> 一つのヒントに過ぎません。
ほら、大きく勘違いしてる。 Lisp では、python と同じくインデントは
ヒントどころではなく *クリティカルな* 情報なんだYO!!(人間には、ね)
インデント無いLisp コードをすらすら読めるって Lisper はあんまり居ない。
だからインデントを見ろっていってるのに…。
幸い、S 式のインデントはエディタがうまく面倒みてくれるので宗派の
争いが起きる事は lisp 界ではあんまりない。
- 245しょしんしゃsage03/09/13 00:04
- >>244
>クリティカルな* 情報なんだYO!!
それはインデント以外にヒントがないことを言っているに過ぎません。
- 246デフォルトの名無しさんsage03/09/13 00:06
- >>239は無視ですか?
- 247しょしんしゃsage03/09/13 00:07
- >>246
>>240を読んでなんとなく感じて下さい。
- 248デフォルトの名無しさんsage03/09/13 00:08
- 結局、「私は括弧を沢山使うS式が嫌いです」としか読めないけど?>>247
- 249デフォルトの名無しさんsage03/09/13 00:08
- 適当だな、おい。
- 250デフォルトの名無しさんsage03/09/13 00:09
- >>249 は >>247 宛ね。
- 251しょしんしゃsage03/09/13 00:13
- >>248
YES!!
ですが、S式の単純さがLispの強力な武器でもあることは理解します。
が・・・それでもやっぱり読みにくいYO!
Lispは読みやすい、って言い張っても仕方ないんじゃない?
って言いたかっただけです。
- 252非Lisper/Schemersage03/09/13 00:14
- >240
>これら意味の上で違いのある部分が
何が「意味の上で違いのある」なのか全然解らんのだけど?
勝手にそう「思っているだけ」でないの?
- 253デフォルトの名無しさんsage03/09/13 00:14
- いやいや冗談。
しょしんしゃの言い分もわかるよ。
クラスや構造体を->や.でアクセスしたり、
if else whileを括弧で括らずに書きたいってことでしょ?>>247
これのメリットは、読み込み完了点が構文毎に決まっているので
構文チェック等は定義を途中まで読み込んだ段階でもできる。
CとかPascalの有名所の構文だし。
matzの言う所のユーザビリティだよ。
S式はどこかの括弧の対応があってないだけでファイルの末尾で
やっとエラーがわかる始末。構造上どうしようもないね。
- 254デフォルトの名無しさんsage03/09/13 00:21
- でさ、そういうのが嫌だとして、それでもLISPを使わなきゃならない場合、
フロントエンドでも用意するしかないわけよ。>しょしんしゃ
エディタの機能で補助するつったって、いつも誰もがそのエディタを
使って作業できるわけじゃないし。
ただし「それでもLISPを使わなきゃ」って状況は日常あんまりないのが悲しい所。
まあ、無理矢理作れるわけだけど。
- 255デフォルトの名無しさんsage03/09/13 00:21
- 括弧に違和感があるなら OCaml とか Dylan を使えば良いんじゃないかな?
- 256デフォルトの名無しさんsage03/09/13 00:28
- >>255
いやいや、他の言語に移行するほどの問題でもない。
機能的な問題がLISPやSchemeで十分足りるのなら、
トランスレータを作ってしまえば十分。
ベース言語まで変えてしまうと逆に問題が難しくなる。
ただしこれは理想。
現実はそういうフロントエンドは確かに沢山あるが、
なぜかどれも中途半端。
- 257デフォルトの名無しさんsage03/09/13 00:31
- あー、人それぞれ違うもんだな。漏れはいろんな言語見るたびにその構文や
記号に頭を悩ませるんでね。 S 式見ると安心するんだ。確かに Python とかは
見た目はすっきりしてると思うけど、式単位の操作がやりにくいので不便に感じる。
インデントも完全自動じゃなくて書きにくい。
- 258デフォルトの名無しさんsage03/09/13 00:33
- S式の利便性は活かしたいが、括弧が嫌いという人は結構いる。
- 259デフォルトの名無しさんsage03/09/13 00:49
- C++も最初はトランスレータだった。
クラス定義がない、構文がダサい、括弧がウザい。
トランスレータで解決できる問題なら、それを使ってもいいわけだ。
セマンティクスの違う別の言語にわざわざ変える必要はない。
- 260デフォルトの名無しさんsage03/09/13 00:54
- 定番がない分、トランスレータも功罪相半ばすると思うけど。
- 261デフォルトの名無しさんsage03/09/13 01:15
- >>260
普通はそう。トランスレータと聞くと、機能追加一辺倒の大掛かりな
一方通行を想像する。だけど問題になっていたのは単にS式の括弧ぐらいなもの。
トランスレータが単なるlexerにまで及んだマクロの構文変換と同じ役割を
果たすだけならば、理論的にはS式と新言語の相互変換が保証される。
マクロを使われた場合は全く同じというわけではないけど、意味は変化しない。
既存のS式で書かれたソースのほとんどは新言語でも即座に見ることができる。
この逆変換が可能という事実は安心感を与え、
同時に大量の新言語のサンプルが手に入る。
作るトランスレータは2通り。
新言語->S式とS式->新言語。
- 262デフォルトの名無しさんsage03/09/13 01:16
- よし、その言語をM式と名づけよう。
- 263デフォルトの名無しさんsage03/09/13 01:27
- 新言語->S式をS式で作成し、
S式->新言語を新言語で作成する。
S式->新言語は新言語->S式を入力に渡す事でデバッグ。
一石二鳥。
- 264デフォルトの名無しさんsage03/09/13 01:36
- プログラムの一部分だけを切り出して S 式が冗長だというのはどうかなぁ。
>>261
結局 S 式読む事になるんじゃないの? とか、マクロ使えねーじゃんとか、学習コストとか
考えると、別の言語採用した方が(その人に取っては)幸せかもと思うね。
構文が変わればエディタにも影響ありそうだし。
- 265デフォルトの名無しさんsage03/09/13 01:39
- >>240
構文が同一のかっこ以外のもので区切られてればいいの?
XML みたいに。
- 266デフォルトの名無しさんsage03/09/13 01:42
- "]" を使えば括弧の対応によるバグを局所化できるんじゃないかな。
- 267デフォルトの名無しさんsage03/09/13 01:47
- M式とCとかPascalの合いの子みたいなもんじゃないか?
cons[1 ()];とか
if null?[x] then (); else ...;
let x = 0; y = 0; do ...;
- 268デフォルトの名無しさんsage03/09/13 01:54
- やっぱり括弧がないと素っ裸で表に放り出されたみたいで落ち着かない
- 269デフォルトの名無しさんsage03/09/13 02:36
- やっぱりlispカッコいいよね
- 270デフォルトの名無しさんsage03/09/13 08:56
- 括弧は(・{・[のどれ使ってもいいことになれば便利かなぁ?
- 271デフォルトの名無しさんsage03/09/13 10:22
- >>270
ちょっと試したけど gauche ならいけるっぽい。
- 272デフォルトの名無しさんsage03/09/13 10:49
- まず,生理的にカッコを受け付けない原因をハッキリさせないと.
- 273デフォルトの名無しさんsage03/09/13 11:17
- なんか話が低いところに落ちてきたね。
- 274デフォルトの名無しさんsage03/09/13 13:32
- もともとmatzの日記からして低レベルだったから
- 275デフォルトの名無しさんsage03/09/13 13:50
- 「セマンティックスとシンタックスを別々に考えないといけないんじゃないか
と思います。」と指摘しただけでも意義はある。
両者をごっちゃにして括弧による記法がlispの必要条件(少なくともセマンティッ
クスに関しては)だと思い込んでいるように思われることがけっこうある。
- 276デフォルトの名無しさんsage03/09/13 13:54
- S 式 or マクロは読み難い,と言われたらもうそれで終りだからね。S 式は最初はちょっと抵抗があったが,
↑ででてた「読み方」がわかってくればそーでもない。マクロはどうだろうね?ネタプログラム意外で読み難い
マクロってのにであった事がないのでよくわかんない。むしろ簡潔な表記でプログラムを短くしてくれるので
読み易いという印象しかない。一番酷くて他の言語の特殊記号や構文覚えるのと同じくらい。簡単なものなら関数と
同等の手間くらい。でも S 式をメモ帳とかで開くと確かに読みにくい/書きにくいと思う。
- 277デフォルトの名無しさんsage03/09/13 14:27
- >>276
今、あるLispのプログラム、例えばEmacs Lispを書こうとしているとき慣れは
重要だろう。慣れるなりして書かないと初まらないから。
でもプログラムの記法はどうあるべきかということを考えるときにその慣れは
かえって邪魔なものにもなりうる。
- 278デフォルトの名無しさんsage03/09/13 15:18
- Lisp の括弧は
メリット: ツリー的な構造+簡潔な文法+マクロ+エディタの支援
デメリット: 括弧嫌い.表示方法に気をつけないと見た目が悪い.
との丁度いいトレードオフだと思うけどね.もっと複雑な構文だったら,マクロは書くのも使うのも
制限を受けそうな気がする.
エディタによる支援は,たとえば
if ... then ... else ... end
みたいな書式で,if 上にカーソルがあるとき,if 式全体をコピーしたいという操作は無理.(対応する end まで
勝手にマークというのでもいいかもしれないけど,if だけコピーしたい場合と区別つかないよね?)
(if .... .... ...)
という lisp 的表記は if の前にカーソルを置いて一発で if 式がコピーできる.Emacs なら M-C-@ とか.
これは括弧無しで実現できるのか? if だけをコピーしたいのか,式全体なのかを明示的に指定できるのは
Lisp 記法ならではだと思うのだが.学が無いので学問的に記法がどうあるべきかってのはよくわかんないけど.
- 279デフォルトの名無しさんsage03/09/13 15:28
- 書きやすさ≠読みやすさ
- 280デフォルトの名無しさんsage03/09/13 16:01
- Lisp 好きの視点(要らない括弧はどーでもいい)
define fac x
if (= x 0)
1
* x (fac (- x 1))
Lisp 嫌いの視点(意味のない括弧がたくさん)
(((((((define (fac x)
((((if (((= x 0)))
1
((((* x (((((fac (((((- x 1)))))))))))))))))))))))))
- 281デフォルトの名無しさんsage03/09/13 16:40
- 括弧に薄い色を使えばいい。paren
- 282デフォルトの名無しさんsage03/09/13 17:49
- >>280 がいいことを言った。
慣れてくるとなんの苦もなく上のように見えるけど、
最初は下のようにしか見えなかったもんね。
- 283デフォルトの名無しさんsage03/09/13 18:06
- >>275
そこまで言うんならまず実装してみなよ
指摘するだけなら誰だってできるし
内容もまったく目新しくないからね
S式が見にくいなんて話は
それこそLispの歴史40年の間常に言われてることだし
DylanみたいにS式を取り去ったLisp風言語は今までにもあったけど
結局Lispそのものを越えるものはまだないんだから
- 284デフォルトの名無しさんsage03/09/13 18:55
- >S式が見にくいなんて話は
>それこそLispの歴史40年の間常に言われてることだし
やっぱ読みにくいんじゃん。
- 285261sage03/09/13 19:06
- 275じゃないが、実装は済んでいる。
IPAは取り合ってくれるかな?
- 286デフォルトの名無しさんsage03/09/13 19:44
- >>284 あぁ、読み難いよ。ただ S 式が読み難いと確認したいだけか?そんなのすぐわかる
だろう。やっぱり読み難いんだ、ヤパーリ漏れの信念は正しかった!と確認してから気分良く
帰ってください。
- 287デフォルトの名無しさんsage03/09/13 20:11
- common lisp に while ってありませんでしたっけ?
今 HyperSpec や CLtL2 を見てみたら (loop while となっています.
「ANSI Common Lisp」という本を読んで,
loop を使うことはないだろう,と思っていたのですが...
頻繁に改訂されているんでしょうか?
(do () ((test)) (...)) で代用したら嫌われますかねw
- 288デフォルトの名無しさんsage03/09/13 20:21
- 10.3 を読み直してみよう。 あと、Paul Graham のユーティリティくらいは
イメージに取り込んどけば?
- 289287sage03/09/13 21:05
- >>288
「ANSI ...」は図書館から借りていたんです.もう _| ̄|○
> イメージに取り込んどけば?
/usr/lib に入れておくくらいの気持ち,ということですか?
- 290デフォルトの名無しさんsage03/09/13 21:22
- >>285
ホントならすごいじゃない
S式と同等以上の表現能力があって
より可読性が高いものなら画期的だね
Schemeの
((if x + -) 1 2 3)
みたいなのはどう表現するの?
- 291デフォルトの名無しさんsage03/09/13 21:30
- (do () ((test)) ...) まで考えられてるならもう一歩だな。本には
(defmacro while (test &rest body)
`(do ()
((not ,test))
,@body))
が載ってる。
lisp ファイルをロードした状態で clisp なら (saveinitmem "hoge.mem") とか
cmucl なら (save-lisp "hoge.core") とかして、以降はそれを使うってこと。
ロードする時間が省けて起動が速くなる。
- 292287sage03/09/13 22:44
- >>291
すみません.
「common lisp の規格として while って無いんですね!?」
と思っただけなんです.
というのを,「ANSI ...」を読んで気づくべきだったんですね...
しかし,(loop while というのは何なんでしょう?
emacs lisp の while とは全く異なるものですか?
- 293デフォルトの名無しさんsage03/09/13 22:45
- >>289
「ANSI...」に載っているコードならPaul Grahamのサイトにおいてるよん♪
ttp://www.paulgraham.com/paulgraham/acl.html
- 294261sage03/09/13 23:23
- >>290
>S式と同等以上の表現能力があって
表現能力の向上には関与しない。
目的は、言語の特性を殺さずに可読性を高くするという事。
S式そのものを消し去るわけではない。
>より可読性が高いものなら画期的だね
これは当てはまるかもしれない。
少なくとも記述上の不要な括弧からは開放される。
>みたいなのはどう表現するの?
必要に応じて構文変換を行う。
例えばより一般的な形式(if x (+ 1 2 3) (- 1 2 3))
- 295デフォルトの名無しさんsage03/09/13 23:30
- どこがより一般的なの?
- 296デフォルトの名無しさんsage03/09/13 23:46
- >>294
具体的なものが見えないんけど
不要な括弧ってのは上のほうで出てきた(ifみたいなもののことだよねえ
(if x (+ 1 2 3) (- 1 2 3))では括弧が残ってるけど
言ってるもののS表現なの?
それから
一般に((a b c d) e f g)が(a b (c e f g) (d e f g))がなるわけじゃないけど
大規模なセマンティック解析をやってるの?
- 297261sage03/09/13 23:49
- >>295
名前がある場合、構文によって結果的に導き出された値を使う、
(値 引数)
よりも、
(関数名 引数)
が一般的という意味。
構文や、古くから存在するマクロもこの形式を想定している。
(構文 構文要素)
(マクロ名 引数)
- 298261sage03/09/14 00:07
- >>296
その辺の話は公開の算段が整い次第。
- 299デフォルトの名無しさんsage03/09/14 00:28
- ふーん
どうやらS式と等価じゃなくて
表現範囲がS式のサブセットみたいだから
その言語→S式は期待できそうにないけど
S式→その言語には期待してるよ
ガンガレ
- 300デフォルトの名無しさんsage03/09/14 00:49
- S四季は右斜めにインデントする傾向が高いよね。
長い関数にすると画面からはみ出るし。
- 301デフォルトの名無しさんsage03/09/14 03:45
- >>284
読みにくいということで納得する方向で前向きに検討していきたいと思います。
このような意味のない議論については無駄という方向で、今後ともよろしくお願いします。
- 302デフォルトの名無しさん03/09/14 06:37
- ((if x + -) 1 2 3) → (if x + -) 1 2 3
一番外側の括弧ははずせるね。
(if (x,+,-))(1,2,3) だと括弧の数は減らないね。
そんだけ。
- 303デフォルトの名無しさんsage03/09/14 07:58
- (* 4 ((if x + -) 1 2 3) 5)
ってなったら(ifの括弧ははずせないじゃん
トップレベルの括弧をはずすってだけの話かい?
- 304デフォルトの名無しさんsage03/09/14 08:40
- しかも progn が出てきたら,結局なにも変わらない感じ.
- 305デフォルトの名無しさんsage03/09/14 10:21
- 結局LISPをまともに使ったことがない香具師が、脳内でS式は不要って妄想してただけってことか?
- 306デフォルトの名無しさん03/09/14 11:27
- common lisp が複雑だょぅ...
(defun hoge (&optional (a 'standard) b)
(values a b))
(aaa) => standard ; nil
には問題ありませんが,
(aaa nil) => nil ; nil
となるんですYO!最後の nil も渡されるなんて,
まるで special form みたいじゃないですか?
関数の中で (read-line strm) としたときに,
strm が nil でも *standard-input* から読んでくれますか?
いや,やってみたら大丈夫なんですけど.不安です.
- 307306sage03/09/14 11:44
- またおかしくなりました.
labels は lambda が不要なんですね.でも,
(letrec
((a
(if x
(lambda () (f))
(lambda () (g)))))
みたいなことは,どうやればいいんですか?
R5RS 読んだ後のせいか,混乱がハゲすぃ...
- 308デフォルトの名無しさんsage03/09/14 11:57
- >>306
何を問題としているのかさっぱり分からんのだが
- 309306sage03/09/14 12:11
- >>308
すみません.
&optional な関数で,しかもデフォルト値が nil でない引数があるときに,
nil を渡してしまっても大丈夫か,と気にしています.
たいていの関数は nil がデフォルト値なので,
(defun f (&optional arg)
を
(let ((arg nil)) (f arg)
としても挙動が変わることはありませんが,
read-line の stream はデフォルトが *standard-input* なので
(read-line nil) と (read-line) は違うかも知れないと思うのです.
read-line 側で対処しているようですが...
- 310デフォルトの名無しさんsage03/09/14 12:15
- >>306 最初のはなに言ってるのかわからん.なるんですYO! っていわれても,あたりまえだYO としか…
その動作のどこに不満があるのか?多値がわからんとかそーゆう話?
read-line の第一引数は input stream designator で t なら *terminal-io*, nil なら *stream-input* になる.
ANSI 規格準拠の処理系なら心配しなくていい.
>>307
(defun test (x)
(labels ((a (x)
(if x
(lambda () (f))
(lambda () (g)))))
(funcall (a x))))
みたいな話?
- 311306sage03/09/14 12:41
- >>310
いろいろやって気づきました.
(list 1 '())
と
(cons 1 '())
は,等価ではないんですね.おさわがせしました.
> nil なら *stream-input* になる.
安心しました.ありがとうございます.
> (defun test (x)
あ,そうやればいいんですね.すみません.
- 312デフォルトの名無しさんsage03/09/15 17:32
- なんでマクロはわかりにくいって言われるのかねぇ?
- 313デフォルトの名無しさんsage03/09/15 17:59
- >>312
解答例
1. 学生の時 LaTeX で嫌な思いをした.
- 314デフォルトの名無しさんsage03/09/15 18:48
- Emacs から (require 'cl) で Common Lisp の勉強をするのはありですか?
- 315デフォルトの名無しさんsage03/09/15 18:50
- ありえない
- 316デフォルトの名無しさんsage03/09/15 18:55
- >>313 名前は確かにマクロだが…。マクロって名前が悪いんじゃねーの?
テンプレートとかって名前にしとけばよかったのかも。
- 317デフォルトの名無しさんsage03/09/15 18:56
- >>312
式中のどこが評価される/されないかが一見して分からないからでは。
ユーザ定義マクロじゃないですが、私は昔Emacsのためにしかたなく
lispに触れた時にsetqの動作が不可解でしょうがなかったです。後から
(set 'hoge fuga) という表現を知って、ようやく理解すると共にシン
タックスシュガーの使いどころを間違った言語という感想を持ちました。
その後S式やlispのセマンティクス自体には慣れて好きにもなりました
が、コード上の評価される/されない部分を常に意識するのは疲れます。
- 318デフォルトの名無しさんsage03/09/15 18:58
- 速っ。レスどうもありがとうございます。CLisp 入れてみます。
Emacs から呼び出すのは M-x run-lisp が一般的なのでしょうか?
- 319デフォルトの名無しさんsage03/09/15 19:05
- >>314 以下の点がお勧めできない。
1. レキシカルスコープじゃない
2. 数字周りが違う。Emacs は有理数扱えない。
3. CLOS がない。少なくとも標準では。
4. C と連携するのもイマイチ。
clisp + ILISP でもどーよ?
- 320デフォルトの名無しさんsage03/09/15 19:16
- >>317 なるほど。(set 'hoge fuga) == (setq hoge fuga) だと知らないとそうですね。
setq の q はクォートの q 〜と習った僕は全然苦労しませんでしたが、言われてみれば
ヤヤコシイかも。setf なんかは理解するのは大変そうですしね。
- 321デフォルトの名無しさんsage03/09/15 21:34
- 314 じゃないですが.
ilisp って,画面が 3 分割 (ソース,inferior,output) になるので
ちょっと使いづらいです.
もっと軽く describe-function できないもんですかね...
結局,HyperSpec を w3m で見ながらになってしまいました.
# 液晶 20 inch 画面にドドーーンと emacs を広げられればなぁ.
- 322デフォルトの名無しさんsage03/09/15 21:35
- >>320
setf は不思議ですよね.scheme と決定的に違うところなのでしょうか?
- 323デフォルトの名無しさんsage03/09/15 22:18
- 設定でなんとかなりそうだけど。ILISP から HyperSpec 引くほうが楽じゃない?
ILISP 以外となると Franz の ELI か java が動くなら jabberwocky か?
CMUCL 限定なら Hemlock もつかえるね。SLIME も sf にプロジェクトが
登録されてるね。ML で公開されたやつは最低限の機能って感じだったけど、
今後に期待。
- 324デフォルトの名無しさんsage03/09/15 23:34
- (let ((hoge '((a . 1) (b . 2) ... すごく長い alist.)))
となるような hoge を,別のファイルに分けようと思います.
しかし,
(with-open-file (hoge-strm "hoge.lisp" :direction :input)
(let ((hoge '()))
(load hoge-strm)
hoge))
とやっても,hoge は top level になってしまい,
上の with-open-file の値は nil になる始末です.
どうしたらよいのでしょうか?
- 325デフォルトの名無しさんsage03/09/15 23:47
- data.lisp に
((a . 1) (b . 1) (c . 1))
とか書いといて、
(with-open-file (s "data.lisp" :direction :input)
(let ((hoge (read s)))
hoge)))
とか?
- 326デフォルトの名無しさんsage03/09/15 23:55
- その方法って、alistがquasiquoteされてたらやばいよね。
read後evalすればいいんだけど。
- 327デフォルトの名無しさんsage03/09/16 13:54
- まぁ,それ以前に data.lisp に
(defparameter hoge '((a . 1) (b . 1) (c . 1)))
と書いといて,
(load "data")
でよくないか?データが激しく大きい場合にはハッシュテーブル使うとか
コンパイルするって手もあるし.
- 328デフォルトの名無しさんsage03/09/16 16:03
- >>322 漏れは Scheme と Common Lisp の決定的な違いは,#t,#f と t, nil
あとは関数と変数の名前空間が分かれているかどうか,だと思う.
特に #f と nil の違い決定的だと思うぽ.
名前空間はなぁ.funcall がなくてちょっと楽ができるけど,変数名に関数と
かぶらないように気をつけなきゃいけないのがウザいので CL のが好き.
- 329デフォルトの名無しさんsage03/09/16 16:16
- 実装に依存するのか,ちょっと分からなくなりました.
(let ((alist '((a . 1) (b . 2))))
(let* ((str "a")
(sym1 (make-symbol str))
(sym2 (intern str)))
(values (symbolp sym1) ; T
(symbolp sym2) ; T
(symbol-package (caar alist)) ; #<PACKAGE COMMON-LISP-USER>
(symbol-package sym1) ; NIL
(symbol-package sym2) ; #<PACKAGE COMMON-LISP-USER>
(assoc sym1 alist) ; NIL
(assoc sym2 alist)))) ; NIL
str を "A" にすれば,最後の assoc は (A . 1) を返します.
大文字にすれば,どの処理系でも最後の assoc が
(A . 1) を返すと期待していいのでしょうか?
それとも,alist を (A . 1) にしておかないと危険ですか?
- 330デフォルトの名無しさんsage03/09/16 16:21
- >>328
CL では無闇に #'(lambda と書いてしまったり...理解していないだけ.
漏れの書き換え alist
((list lst)
(string str)
(car booboo) (ry
- 331デフォルトの名無しさんsage03/09/16 17:20
- シンボルとして |A| と |a| が違うからね..symbol-name をとってみりゃ一目瞭然だけど,まぁ,
実装というか *readtable* の設定によるんでない? (readtable-case *readtable*) が :upcase なら,"A" にするべき.
(readtable-case *readtable*) は case sensitivity mode が設定される.:upcase, :downcase, :preserve, または :invert
で,それぞれ,大文字に,小文字,変換無し,大文字小文字を反転となる.:upcase が普通なので (a . 1) か (A . 1) は関係ない.
どっちも symbol-name は "A" になるから.
- 332デフォルトの名無しさんsage03/09/16 17:25
- booboo ワロタ
- 333329sage03/09/16 17:47
- >>331
おお,選べるんですね.
でも,let で局所的に変更することが出来無いみたいです.
用が済んだら (setf *readtable* (copy-readtable nil))
しておかないといけませんね.
そうしないと,let みたいな普通の symbol が
小文字では見つからなくなってしまうようです.
何を使って後始末を明示しましょう...? unwind-protect?
- 334デフォルトの名無しさんsage03/09/16 18:23
- でも,なんで readtable を書き換えたいの?大文字小文字を区別したいだけなら |SyMBoL|
表記でよくない?表示の大文字が嫌なら (setf *print-case* :downcase) でいいだろうし.
グローバルに変えたくて,かつ cons を CONS と書きたくないなら :invert が比較的マシなのかなぁ.
- 335デフォルトの名無しさんsage03/09/16 18:54
- >>333
read の前に let しないとね
- 336329sage03/09/16 19:03
- >>334
たとえば,大きくて alist な設定ファイルを書くとします.
((Sec1 ((itemA1 . a) (itemA2 . b) ...
の方が,
(("Sec1" (("itemA1" . "a") ("itemA2" . "b") ...
よりも書き易いと思うのです.
readtable の書き換えは,挙動が分かりづらいですね.
(let ()
(setf (readtable-case *readtable*) :preserve)
(let ((alist '((a 1) (b 2))))
(caar alist))) ===> A
となってしまうし,もう一度評価すると the function let is undefined ですよ.
複雑だぁ..._| ̄|○
- 337デフォルトの名無しさん03/09/16 21:43
- readtable, lisp reader について勉強したほうがいいと思うぞ。マジで。
お望みのことなら↓でどうだ。あるいは設定ファイルで lisp 起動時の
readtable-case を :invert に設定しろ。
(with-open-file (s "data.lisp" :direction :input)
(let ((*readtable* (copy-readtable)))
(setf (readtable-case *readtable*) :preserve)
(read s)))
:preserve だと let は |let| と読まれるのは理解しているか?
複雑というより、lisp reader がソースをパースする→評価
という流れが理解できてないのにいじろうとしてはまってるだけだろう。
- 338337sage03/09/16 21:45
- しまった age ちゃった。吊ってくるわ…
- 339329sage03/09/17 00:11
- >>337
ご指摘ありがとうございます. ; とりあえず HyperSpec か...
- 340デフォルトの名無しさん03/09/17 22:36
- xyyzzyで時間を(秒以下のレベル)で計るコードの書きかたってあります?
- 341デフォルトの名無しさん03/09/17 23:01
- 例えば、処理速度を量れるくらいの精度で。
- 342名無しさん@Vim%Chalicesage03/09/17 23:08
- clispのregrepモジュールのインストール方法が詳しく載っているHPありませんか?
付属のドキュメントに沿ってインストールしたんですけど(use-package "REGREP")
でTが帰ってくるけどmatchとかが動きません。
- 343デフォルトの名無しさんsage03/09/17 23:25
- pregexp を使うとか。
http://www.ccs.neu.edu/home/dorai/pregexp/pregexp.html
- 344デフォルトの名無しさんsage03/09/18 00:14
- >>340
(get-internal-real-time) とか。
こんな感じで、処理時間が計れる。
(let ((x (get-internal-real-time)))
(測定したいプログラム)
(- (get-internal-real-time) x))
- 345デフォルトの名無しさんsage03/09/18 12:22
- cl-ppcre - portable Perl-compatible regular expressions for Common LISP
http://www.weitz.de/cl-ppcre/
特徴
- Perl 互換
- 高性能
CMUCL でコンパイルすれば Perl の正規表現エンジンと同等くらいの性能.
CLISP でコンパイルしても CLISP 自身の regexp モジュールと同等くらいの性能はでる.
- ポータブル
Allegro, CLISP, CMUCL, Corman, MCL, OpenMCL, SBCL, Scieneer, Lisp Works 等々で動く
などなど.
- 346デフォルトの名無しさん03/09/19 10:06
- 質問です。cond を if で書くことはできますか?
それとも、スペシャルフォームなので処理系に任せないと無理でしょうか?
- 347デフォルトの名無しさんsage03/09/19 10:13
- if は special operator だけど cond はただのマクロなんで↓のように書けるけど.
(defmacro cond (&rest clauses)
(if (endp clauses)
nil
(let ((clause (first clauses)))
(when (atom clause)
(error "Cond clause is not a list: ~S." clause))
(let ((test (first clause))
(forms (rest clause)))
(if (endp forms)
(let ((n-result (gensym)))
`(let ((,n-result ,test))
(if ,n-result
,n-result
(cond ,@(rest clauses)))))
`(if ,test
(progn ,@forms)
(cond ,@(rest clauses))))))))
- 348デフォルトの名無しさんsage03/09/19 10:28
- >>347
すげー。なんだかよくわからないですけど、勉強します。
ありがとうございました。
- 349デフォルトの名無しさん03/09/19 10:42
- macroexpand をつかって順番におっかけていけばそんなに複雑じゃないと思う.
(when (atom caluse) (error ...)) はエラー処理なのでとりあえず無視して,
↓の流れを追ってみればいいんじゃないかな.
(cond ((= x 0) 0) ((= x 1) 1) (t (f x)))
↓
(if (= x 0) (progn 0) (cond ((= x 1) 1) (t (f x))))
↓
(if (= x 1) (progn 1) (cond (t (f x))))
↓
(if t (progn (f x)) (cond))
↓
nil
- 350デフォルトの名無しさんsage03/09/19 10:55
- >>280
弟子が尋ねた。
「先生、私は先生がカッコをまるで魔術師のように扱っているのを常々敬服しています。
どうすれば先生のようになれるのでしょうか?」
師「えっ? カッコ? あ、そうか。そんなものもあったな。いやあ、すっかり忘れておったわ」
- 351デフォルトの名無しさんsage03/09/19 11:37
- >>292
遅い反応だけど,loop マクロ内の while はいわゆる while とはちょっと違う.
(loop for x from 1 to 100 while (< x 10) do (princ x))
↑こんなかんじで,loop 内でのみ使えるやつなんだが,少なくとも emacs の
while とは全然違う.
…とおもったら,emacs の cl にも loop マクロってあるんだな.
(loop for x in '(1 2 3 4 5) while (< x 4) do (princ x))
正直びっくりした.こっちの事言ってたわけじゃないんだよね?
- 352287sage03/09/19 12:37
- >>351
emacs の loop マクロなんて知りませんでした.
emacs では,なるべく cl を使わずに書いているので.
グレアムの「ANSI Common Lisp」の言う通り,
loop を使うことはほとんどありませんよね?
- 353デフォルトの名無しさんsage03/09/19 14:17
- paul grahama 自身はほとんど使わないみたいだけど,使う人は結構使うみたい.
手元のライブラリを検索してみたところ, (loop ...) を含む行数 / 全体の行数 は
screamer 7/12000 = 0.05%
cllib 130/17000 = 0.7%
cl-ppcre 70/7000 = 1%
みたいな感じだった.
- 354デフォルトの名無しさんsage03/09/19 23:56
- destructive な acons を書きたいんですが。。
(define alis (list (cons 'a "a-val")))
(define (acons! key val alis)
(cond ((assoc key alis)
=> (lambda (a) (set-cdr! a val)))
(else
(set! alis (acons key val alis)))
))
;; これは上手くいくけど
gosh> (acons! 'a "aaa" alis)
#<undef>
gosh> alis
((a . "aaa"))
;; こっちがダメ。
gosh> (acons! 'b "b-val" alis)
((b . "b-val") (a . "a-val"))
gosh> alis
((a . "a-val"))
;; こうなって欲しい。
gosh> (acons! 'b "b-val" alis)
#<undef>
gosh> alis
((b . "b-val") (a . "a-val"))
どこがおかしいんでしょうか?
- 355デフォルトの名無しさんsage03/09/20 00:12
- それはマクロにすべきだね。
- 356デフォルトの名無しさんsage03/09/20 00:14
- (define-macro (acons! key val alis)
`(set! ,alis (cons (cons ,key ,val) ,alis)))
- 357デフォルトの名無しさんsage03/09/20 00:19
- >>354
で、何がおかしいのかというと、これ
(set! alis (acons key val alis)))
このset!はacons!関数引数のalisに対して作用するから、
グローバルのalisには影響しない。
- 358354sage03/09/20 00:39
- グローバルの alis は手続き内からは書き換えられないということでしょうか。
うーむ。修行しなおしてきます。
とりあえずマクロなら書けるということで納得しました。
ありがとうございました。
- 359デフォルトの名無しさんsage03/09/20 17:11
- 引数に同じ alis って名前のがあるから、手続き内ではそっちを参照しちゃうの。
これは同じ名前の別の変数だから、書き換えは global のほうには影響しない。
この引数がなければ global のほうを見るし、書き換えもできるよ。
- 360デフォルトの名無しさんsage03/09/21 20:55
- destructive な cons というのに何かひっかかるものを感じるのですが。
- 361デフォルトの名無しさんsage03/09/22 02:29
- そういえばconsはconstructorの略だったかな
- 362 sage03/09/22 05:40
- ポールグレアムのANSI Common Lispの二分探索木のプログラムがおかしいと思ってネットで調べてたら本人のホームページでやっぱり訂正されてた。
日本語訳がでたのは原著が発売されてからかなりたってだから、間違いもわかってたんじゃないのか?
それに別に長いプログラムじゃないんだから訳すときに気づかないのかな。
- 363デフォルトの名無しさんsage03/09/22 12:02
- まぁ,そう言うなや.Paul タンから原稿データ貰ったのを訳しただけなんだろ?
全掲載コードを検証汁!! ってのは翻訳者には要求しすぎじゃないのかな.
貴重な Lisp 関連本の翻訳者を擁護してみる漏れ (・∀・)ヤサシイ!!
- 364デフォルトの名無しさんsage03/09/22 14:50
- 漏れが翻訳書の監修をやったときは、全掲載コードの検証 + 日本語化まで
やったじょ。
- 365デフォルトの名無しさんsage03/09/22 15:12
- (´Д`) < アワワ…スーパー監修者が降臨なされた….Norvig タン の PAIP とか日本語版出してくれませんかね?
- 366デフォルトの名無しさんsage03/09/22 18:23
- >>364
是非ともCLX本の翻訳たのむ
- 367デフォルトの名無しさんsage03/09/22 20:43
- Common Lisp で書かれた Window Manager なんてあるんだな。知らんかった。
- 368デフォルトの名無しさんsage03/09/23 03:45
- http://www.wnishida.com/~wmemo/?date=20030922#p01
- 369デフォルトの名無しさんsage03/09/23 07:46
- >>367
eclipse?
- 370デフォルトの名無しさんsage03/09/23 14:59
- stumpwm ってやつ.CMUCL で遊ぼうと思ってぐぐってたら紹介ページを発見した.
本家は↓
ttp://www.nongnu.org/stumpwm/
- 371デフォルトの名無しさんsage03/09/23 15:35
- 1+とか1-ってシンボルなんだね。
- 372デフォルトの名無しさんsage03/09/23 15:56
- お前ら、CLの処理系何使ってる?
俺は、高速だということでCLisp→CMUCLに移行したんだが、
AKSL(今はGNU Common Lispらしいが)とかはどうなのよ。
- 373デフォルトの名無しさんsage03/09/23 16:09
- CMUCL. Windows なら CLISP. GCL は ANSI CL への互換性向上を目指してがんがって
ると聞いているだけ(基本的には CLtL1 なんでしょ?).
- 374デフォルトの名無しさんsage03/09/23 17:26
- gcl は maxima 用というだけかと思っていました.ごめんなさい m(_ _)m
- 375デフォルトの名無しさんsage03/09/23 21:03
- 性能なら Allegro CL で決まりだろ。
- 376デフォルトの名無しさん03/09/24 17:56
- scmail: Scheme によるメールフィルタ
http://www.namazu.org/~satoru/scmail/
このプログラムをのぞいてみようと思うんだけど、
誰か使っている人いる?
- 377デフォルトの名無しさんsage03/09/24 18:05
- >>375
lisperが商用使ってんじゃねーよ禿げ
- 378デフォルトの名無しさんsage03/09/24 18:36
- だすな。カーネルハカーが喜んでWindowsを使っている構図のようだ。
- 379デフォルトの名無しさんsage03/09/24 20:13
- 狭い!了見が狭すぎるぞ!貴様ら!商用がだめとか頭の弱いフリーソフト信者厨房
みたいなこといってんじゃねぇ!おまえら、Lisp マシンとかを忘れちまったのか?
そんな俺のチョイスは LispWorks。
- 380デフォルトの名無しさん03/09/24 20:49
- >>379
逝って良し
- 381デフォルトの名無しさんsage03/09/24 21:55
- …なんで商用を嫌う香具師がいるの?わけがわからん。
- 382デフォルトの名無しさんsage03/09/24 22:11
- みんな ACL のパフォーマンスのことしか言わないけど、デバッガとか(Emacs
の)開発環境の点で ACL を上まわってる処理系ってある? ACL のデバッガっ
てかなり色んなことできるよ。
- 383デフォルトの名無しさんsage03/09/24 22:26
- >>376
その前身の mail-classify 使ってた。
- 384デフォルトの名無しさんsage03/09/24 22:33
- >>382 漏れ ACL 使ったこと無いからおせーて。labels で定義したローカル関数の
トレースとか簡単にできる?
- 385デフォルトの名無しさんsage03/09/24 23:46
- >>384
こんな感じ。
CL-USER(41): (defun fact (n)
(labels ((fac (i r)
(if (<= i 1) r
(fac (1- i) (* i r)))))
(fac n 1)))
CL-USER(42): (compile 'fact)
CL-USER(43): (trace ((labels fact fac)))
CL-USER(44): (fact 3)
0[1]: ((LABELS FACT FAC) 3 1)
1[1]: ((LABELS FACT FAC) 2 3)
2[1]: ((LABELS FACT FAC) 1 6)
2[1]: returned 6
1[1]: returned 6
0[1]: returned 6
6
くわしくは以下をみておくれ。
ttp://www.franz.com/support/documentation/6.2/doc/debugging.htm#tracing-methods-2
- 386デフォルトの名無しさんsage03/09/25 05:55
- 末尾再帰を実際に変数付きgotoにコンパイルしたいんですが、
そういう最適化についての論文や実装ってありませんか?
- 387デフォルトの名無しさんsage03/09/25 15:40
- >>386
再帰関数の自動ループ化、末尾再帰化は常識だと思うが。
世間一般に使われているコンパイラすべて、だな。
- 388デフォルトの名無しさんsage03/09/25 23:15
- 上のテンプレの ttp://www.readscheme.org/ でも探したら? Guy Steeleの元論文とかRabbitコンパイラ
- 389デフォルトの名無しさんsage03/09/26 20:56
- Lispは人工知能をプログラムするのに向いてるってよく聞くけど
具体的にLispで書かれた人工知能のソースってありますか?
- 390デフォルトの名無しさんsage03/09/26 21:54
- >>389
それはLisp関連のスレで尋ねるより、カーネギーメロンにでも行った方がいいのでは。
あそこはもともと人工知能研究のためにCMUCLを作ってるわけだし。
ここのスレにいる香具師で人工知能にくわしい者はいない予感
- 391デフォルトの名無しさんsage03/09/26 22:57
- >>389
M-x doctor
- 392デフォルトの名無しさんsage03/09/26 23:04
- 人工知能だけでは漠然としすぎている…。PAIP に古典的 AI がいくつか載ってるけど。
- 393デフォルトの名無しさんsage03/09/27 05:11
- 自分的に静的型も宣言できるSchemeがあれば最強かもしれない。
CommonLispはちょっと仕様的に嫌な部分があるので。
- 394デフォルトの名無しさんsage03/09/27 07:25
- >>393
どこが嫌なの?
- 395デフォルトの名無しさんsage03/09/27 10:21
- >>393
SMLやOCamlじゃだめっすか?
- 396デフォルトの名無しさんsage03/09/27 13:11
- 自分的に現代的型システムを備えた CommonLisp/CLOS があれば最強かもしれない.
マルチバイト文字,ネットワーク,FFI,グラフィックスあたりも標準化されてれば
さらに最強.Scheme は仕様が不十分(パッケージシステム,オブジェクトシステム
等々)なのと,関数と変数の名前空間が同じなのがちょっと嫌.
- 397デフォルトの名無しさんsage03/09/27 15:13
- >>396
× Scheme は仕様が不十分
○ Scheme は標準化が不十分
- 398デフォルトの名無しさんsage03/09/28 19:59
- で、393 の言う Common Lisp の嫌なところって結局何?
- 399デフォルトの名無しさんsage03/09/28 20:48
- Common Lisp は泥臭さがあって美しくない
- 400デフォルトの名無しさんsage03/09/28 23:06
- …だから、どの辺が?
- 401デフォルトの名無しさんsage03/09/28 23:31
- よく分からないけど >>399 に同意w
関数型らしく書かれるのに向いてないよね.scheme より.
- 402デフォルトの名無しさんsage03/09/29 06:10
- #'が嫌。
defvarが嫌。
setfが嫌。
loopが嫌。
- 403デフォルトの名無しさんsage03/09/29 11:30
- >>396 Multiprocessing を忘れてないか?現状処理系毎にばらばらだぞ。
でもまぁ、泥臭くてもタフなほうがイイ。eval-when とか load-time-value とか
define-compiler-macro とか。こーゆうのが標準であるのが気が利いてる。
(゚∀゚ )アヒャヒャ評価のタイミング考えなきゃマズー → (゚д゚)標準ウマー
- 404デフォルトの名無しさん03/09/30 07:00
- はじめまして
これからSchemeを学ぼうと考えています。
今までプログラミングといえば、
FORTRANとVBAを少し触れた事がある程度なのですが、
どうやって学ぶのが一番ポイントをおさえた理解につながるのか、
既にSchemeをマスターされた皆さんからアドバイスを頂けないでしょうか?
SICPは難しいと評判だし、プログラミング言語Schemeでは、
素人はSICPを読めと書いてあるし…
- 405デフォルトの名無しさんsage03/09/30 07:26
- SICPもプログラミング言語Schemeもダメとなると、あとはThe Little Scemerくらいか。
- 406デフォルトの名無しさんsage03/09/30 07:47
- 確かに. The Little MLer は分かりやすかった.
ついでに The Second Schemer もあげておこう.
- 407デフォルトの名無しさんsage03/09/30 19:26
- http://www4.ocn.ne.jp/~inukai/scheme_tocj.html
http://www.stdio.h.kyoto-u.ac.jp/~hioki/gairon-enshuu/SchemeNotes/scheme.html
http://www.sampou.org/scheme/t-y-scheme/t-y-scheme.html
- 408デフォルトの名無しさん03/09/30 21:22
- >>406
駄目とかそんなんじゃなくて、それぞれアプローチが異なりますよね?
そういう中で、SICPを先に読んでその後に『プログラミング言語Scheme』が
良いとか、いやその逆だとか、あるのかな?
と思ったんです。
選り好みする時間があったら、勉強した方が良いのかな。
>>407
ありがとうございます
- 409デフォルトの名無しさんsage03/09/30 21:47
- SICP は計算機科学の教科書だから,Scheme という言語を勉強したいならアレは方向
性が違うような気がする.まぁ,やっといて損はないだろうけど.
Common Lisp もどうだい?学びやすさは Scheme > Common Lisp と言われるが,使い
やすさなら Common Lisp の方が上だと思う(標準に CLOS が入ってるから).
Common Lisp なら個人的オススメは Paradigms of Artificial Intelligence
Programming.タイトルの人工知能関連ネタ以外にも,Lisp の処理系作成,最適化,
といった話題が扱われている.処理系っても仮想マシンとそのコンパイラだけど.
- 410デフォルトの名無しさんsage03/09/30 22:35
- >>404
R5RS
これ最強
- 411デフォルトの名無しさんsage 03/09/30 23:22
- >>404
The little schemer を おすすめ
SICP は scheme の勉強にはあまり向いていないと思う
- 412デフォルトの名無しさんsage03/10/01 21:29
- gaucheの人のサイト繋がらない?
- 413デフォルトの名無しさんsage03/10/02 01:00
- >>412
ほんとだ。sitefinder 初めて見た。
- 414デフォルトの名無しさんsage03/10/02 02:10
- ns record が引けないね
- 415デフォルトの名無しさん03/10/02 10:27
- >>412-414
whois dreamhost.com
(ry
Record expires on 24-Sep-2005.
Record created on 14-Oct-2002.
Database last updated on 1-Oct-2003 21:25:54 EDT.
Domain servers in listed order:
NS1.DREAMHOST.COM 66.33.206.206
NS2.DREAMHOST.COM 209.17.93.93
NS3.DREAMHOST.COM 66.33.216.216
$ nslookup www.shiro.dreamhost.com
(ry
Non-authoritative answer:
Name:www.shiro.dreamhost.com
Address: 66.33.198.7
- 416デフォルトの名無しさんsage03/10/02 22:02
- 復活してる
- 417デフォルトの名無しさんsage03/10/02 22:23
- (strip >>415)
=> >>416
- 418CLX タコ03/10/03 05:23
- WebサイトでCLXのサンプルプログラムを見ても立派すぎて理解できません。
どなたか、直線を一本描くような典型的なCLXのプログラムをご教示いただけませんか。
座標(0, 0)と(100, 100)を結ぶような直線の表示でよいのです。
お願いします。
- 419デフォルトの名無しさんsage03/10/03 14:04
- 「すみません誤爆でした」はまだか
- 420デフォルトの名無しさんsage03/10/03 15:50
- >>418 処理系は何?CMUCL ? CLISP ? Allegro ? 使ってる CLX はどれ?
サンプルくらい付いてくると思うがなぁ.そもそも XLIB はわかってるのか?
- 421デフォルトの名無しさんsage03/10/03 17:58
- >418
CLXとやらは全く知らないが
CLX Manual
http://www.stud.uni-karlsruhe.de/~unk6/clxman/index.html
6.4 Drawing Lines
http://www.stud.uni-karlsruhe.de/~unk6/clxman/6_4_Drawing_Lines.html
- 422デフォルトの名無しさんsage03/10/03 19:40
- (in-package :xlib)
(defun eventloop (display gcontext)
(event-case (display :discard-p t :force-output-p t)
(:exposure (window count)
(when (zerop count) ;; Ignore all but the last exposure event
(with-state (window)
(clear-area window)
(let ((x1 10) (y1 10) (x2 110) (y2 110))
(draw-line window gcontext x1 y1 x2 y2)
(draw-line window gcontext x1 y2 x2 y1)
(draw-rectangle window gcontext x1 y1 (- x2 x1) (- y2 y1)))))
;; Returning non-nil causes event-case to exit
nil)
(:button-release (code x y)
(eql code 3))))
- 423デフォルトの名無しさんsage03/10/03 19:41
- (defun demo (&rest args &key (host "localhost") (font "fixed"))
(let* ((display (open-display host))
(screen (display-default-screen display))
(black (screen-black-pixel screen))
(white (screen-white-pixel screen))
(font (open-font display font))
(width 200) (height 200) (x 0) (y 0)
(window (create-window :parent (screen-root screen)
:x x :y y :width width :height height
:background black
:border white :border-width 1
:colormap (screen-default-colormap screen)
:bit-gravity :center
:event-mask (make-event-mask
:button-release :exposure)))
(gcontext (create-gcontext :drawable window :background black
:foreground white :font font)))
(set-wm-properties window
:name 'demo
:icon-name "demo"
:resource-name "demo"
:resource-class 'demo
:command (list* 'demo host args)
:x x :y y :width width :height height
:min-width width :min-height height
:input :off :initial-state :normal)
(map-window window)
(eventloop display gcontext)
(close-display display)))
- 424デフォルトの名無しさんsage03/10/03 23:37
- >>408
まよっている暇があるなら『プログラミング言語Scheme』を読んでしまえ。
最後の例の章を除けば分量は多くない。
>>407 のうち、犬飼のものは絶版になったのもむべなるかな、という出来なので
おすすめしない。時間の無駄だ。ほかは知らないが、一見したところ二つ目のも
のはこれを通読してschemeを学ぼうという向きには不適に思える。三つ目のもの
はまあいいかも知れん。
- 425CLX タコ03/10/04 05:51
- > 420
Linux判 ACL です。
Franz社に問い合わせたところCLXはNon Supportだと言われました。
GraphicsはWindows判 ACLで扱っているそうです。
XLIBはHP-UXのC言語で使ったことがあります。
>421
Webサイト情報をありがとうございます。
>422
プログラムをありがとうございます。
試してみます。
>423
プログラムをありがとうございます。
試してみます。
- 426CLX タコ03/10/04 05:57
- > 420
すみません、判 ---> 版 でした。
プログラムをよろしくお願いします。
- 427デフォルトの名無しさんsage03/10/04 10:57
- >>424
CLX って XLib かよ。gtk もあるみたいよ。
http://www.franz.com/support/documentation/6.2/gtk/readme.txt
> XLIBはHP-UXのC言語で使ったことがあります。
あ、おれと一緒だ。もしかして N 大学卒?
- 428デフォルトの名無しさんsage03/10/05 21:29
- Gauche release 0.7.2
- 429デフォルトの名無しさん03/10/05 23:52
- gauche-glfがcygwinで動くようになったとあったので、
試しにコンパイルしようとしたけど、リンクエラーでうまくいかない。
glの関数が見つからないみたいなエラーなんだけど、
ちゃんと-lopengl32や-lglu32等やってあるんだけど・・・。
なんでですかね?
- 430デフォルトの名無しさんsage03/10/06 00:10
- パスに無いんじゃね?
- 431デフォルトの名無しさん03/10/06 00:16
- パスが通ってないならcannot find -lopengl32とかでてくると思います。
- 432デフォルトの名無しさんsage03/10/06 00:25
- configureに何かオプションが要るんじゃね?
- 433デフォルトの名無しさんsage03/10/06 01:20
- >>429
その「エラー」とやらを書かないのは何故?
- 434デフォルトの名無しさん03/10/06 01:32
- 普通にundefined reference
なんですが・・・。
cygwinでgauche-gl使えた人いますか?
- 435デフォルトの名無しさんsage03/10/06 01:57
- >>434
勝手に一部のみを抜粋し、全文を書かないのは何故?
- 436デフォルトの名無しさん03/10/06 02:04
- 上ので判るかと思ったんだけど・・・。
いろいろ事情があるんでしょうね。全文は不可能なのでまたも一部ですが。
$ make
cd src; make all
make[1]: Entering directory `/cygdrive/m/Gauche-gl-0.3/src'
gcc -Wl,--export-all-symbols -Wl,--enable-auto-import -shared -o libgauche-gl.dl
l gl_head.o gauche-gl.o gl-lib.o gl-syms.o glu-lib.o gl_tail.o -L. -lgauche-math
3d -lglu32 -lopengl32 -L/usr/local/lib/gauche/0.7.2/i686-pc-cygwin -lgauche -lm
-lgauche-uvector -L/usr/X11R6/lib -lSM -lICE -L/usr/X11R6/lib
gauche-gl.o(.text+0xc8c): In function `quadric_allocate':
/cygdrive/m/Gauche-gl-0.3/src/gauche-gl.c:227: undefined reference to `_gluNewQu
adric'
gauche-gl.o(.text+0xd1c): In function `nurbs_allocate':
/cygdrive/m/Gauche-gl-0.3/src/gauche-gl.c:250: undefined reference to `_gluNewNu
rbsRenderer'
gauche-gl.o(.text+0xdac): In function `tesselator_allocate':
/cygdrive/m/Gauche-gl-0.3/src/gauche-gl.c:274: undefined reference to `_gluNewTe
ss'
gauche-gl.o(.text+0xc51): In function `quadric_finalize':
/cygdrive/m/Gauche-gl-0.3/src/gauche-gl.c:219: undefined reference to `_gluDelet
eQuadric'
gauche-gl.o(.text+0xce1): In function `nurbs_finalize':
以下えんえんとgl関数のりんくえらーが続く。
- 437デフォルトの名無しさんsage03/10/06 03:39
- リンクするライブラリが足らねーと見た。
- 438デフォルトの名無しさんsage03/10/06 06:33
- >>436
-L/usr/X11R6/lib -lSM -lICE -L/usr/X11R6/lib
こんなのがついているところを見ると、Xも入れてる?
うちではX無しcygwinで普通にコンパイルできた。
- 439デフォルトの名無しさんsage03/10/06 06:36
- え、glってXの機能使うんじゃないんか?
- 440デフォルトの名無しさんsage03/10/06 06:38
- Xいらないらしい
- 441デフォルトの名無しさんsage03/10/06 06:41
- あわわ、、どうするよ?429
- 442デフォルトの名無しさん03/10/06 07:46
- みなさんどうもです。
./configure --without-x
でいけました。ちゃんとgears.scmは実行できました。
ありがとうございます。
- 443デフォルトの名無しさんsage03/10/06 07:59
- ただ、linux上での動作に比べてfpsが1/3のような気がする。
もう一回比較しないと勘違いかもしれないけど・・・。
- 444デフォルトの名無しさん03/10/06 21:17
- 10/5にGaucheがバージョンアップしましたね。
- 445デフォルトの名無しさんsage03/10/06 23:27
- >>444
>>428
- 446CLX タコ03/10/08 01:02
- > 420
420さんの疑問には答えました。
ベテランとお見受けしました420さんの
プログラムを待っています。
よろしくお願いします。
- 447デフォルトの名無しさんsage03/10/08 02:25
- タリキホンガンキター
- 448デフォルトの名無しさんsage03/10/08 02:46
- 人工知能の暴走です。
- 449デフォルトの名無しさんsage03/10/08 02:47
- M-x doctor で対抗
- 450デフォルトの名無しさんsage03/10/08 03:15
- もっとくわしく教えてくれませんか?
- 451デフォルトの名無しさんsage03/10/08 11:17
- CMUCL な漏れは 422+423 で四角と線が表示されたぞ.
- 452デフォルトの名無しさんsage03/10/12 11:54
- CLXってどれくらい重いんですか?
- 453デフォルトの名無しさんsage03/10/12 16:49
- さぁ、別に全然重くないけど…。普段は CMUCL + GLUT なので詳しくは知らない。
- 454デフォルトの名無しさんsage03/10/13 19:53
- >>452
clxはxlibのLISP用インターフェースです
それくらい知ってから書き込めよ
- 455デフォルトの名無しさんsage03/10/13 21:12
- Lisp くらい歴史ある言語だと、親が Lisp Hacker ですた、なんてのも居るんだなぁ。
- 456デフォルトの名無しさん03/10/14 07:35
- ansi commmon lispの本の、例題の解答例とか、どこかにないものですかね
- 457デフォルトの名無しさんsage03/10/14 08:10
- >>453-454
CLXを別のLispに移植したものの上で動いている
お絵書きソフト(のようなもの)が重いんで、CLXに
戻せば軽くなるかなと思ったんですが…。
線の本数が10本以上になると、線を動かすたびに
お茶が飲めるほど待たされます。
- 458デフォルトの名無しさんsage03/10/14 09:09
- >>456
一部の問題は前スレあたりになかったか?
そのほかのわからない問題あったら自分でやったとこまで晒してみろ。
- 459デフォルトの名無しさんzage03/10/14 17:26
- ここ見てるとCMUCL多いね。俺もその一人なんだが。
高速&高機能&対応しているライブラリが多いのが乙
- 460デフォルトの名無しさんsage03/10/14 17:57
- UNIX系でしか動かんのがなあ・・
まあいいけど
- 461デフォルトの名無しさん03/10/14 19:20
- CMUCLをFreeBSDで動かすとcoreを吐くので使えなかったんだけど、
://www.mail-archive.com/cmucl-help@cons.org/msg01073.html
を読んでカーネルを作りなおしたら動くようになった。
たしかに速い。
- 462デフォルトの名無しさんsage03/10/14 19:53
- LISPで書いても速度的に不利にならないのが良いよね
ネーティブ万歳
- 463デフォルトの名無しさん03/10/14 20:04
- >>389
見てるか分からないけどここに膨大な量がある。
http://www-2.cs.cmu.edu/afs/cs/project/ai-repository/ai/areas/0.html
かの有名なELIZAのコードも(classics/)
- 464デフォルトの名無しさん03/10/15 20:36
- CMUCLのいいところは、UNIXとの親和性だな。
UNIXのシステムコール呼べるし、Cとの結び付きが強いし、Xも普通に使える。
- 465デフォルトの名無しさんsage03/10/15 21:51
- 漏れは CMUCL の実行バイナリ生成機能に期待!(19a には入るのかな?がんばれ Fred タン!!)
でも、そんなに UNIX と相性いいかなぁ?
駄目なところは
- 日本語非対応(リーダーをいじって無理やり日本語シンボルを通す方法はあるみたい)
- ビルド手順がちょっぴり複雑。
(build-tools はソースツリーに入りそうだけど、boot ファイルは人間が判断しなきゃならない)
- Windows で動かない。
- asdf とかが標準でついてこない。(sbcl は contrib に入れたんだよね?)
- 466461sage03/10/16 16:59
- >>465
>- 日本語非対応(リーダーをいじって無理やり日本語シンボルを通す方法はあるみたい)
://www.geocities.co.jp/SiliconValley-SanJose/7474/cmuclMemo.html#0012
に対応策があった。
(loop for i from 128 to 255 do (set-syntax-from-char (code-char i) #\a))
でEUC-JPやUTF-8なら通るようになる。SJISは`が2バイト目にかぶるからダメだけど。
- 467デフォルトの名無しさんsage03/10/16 18:41
- げ,ほんとに日本語シンボルが通る….というか set-syntax-from-char とかってどっ
から出てきたんだろう.Common Lisper な皆さんにはこれくらい当たり前なんでしょうか?
こーゆうのは HyperSpec 読めばわかるようになるんでつか?
- 468デフォルトの名無しさんsage03/10/16 19:09
- >>465
UNIXパッケージを見てみろ。
感動。
gclやclispはおろか、aclでもこれほどではないぞ
- 469デフォルトの名無しさんsage03/10/16 19:22
- >日本語非対応(リーダーをいじって無理やり日本語シンボルを通す方法はあるみたい
そこは俺も素直に認める。
unicode対応予定らしいので、マジで期待
そうなれば、もうclisp使わなくて済むし。
>ビルド手順がちょっぴり複雑
バイナリリリースを使え
>Windows で動かない
俺の場合、Windowsをろくに使ったことが無いのでなんとも思ったことは無い。
真面目に(Windowsの)操作方法もほとんど分からんw(親父が熱狂的*BSDユーザで、小さい頃からUNIX育ちだし)。
>asdf とかが標準でついてこない。(sbcl は contrib に入れたんだよね?)
標準でもっといろいろなものを含めて欲しいってのは在るね。
対応アプリの数を見ると世界的には、CMUCLが優勢のようだけど、日本ではそうでないというのも日本語関連のせいなのかな?
- 470デフォルトの名無しさんsage03/10/16 20:03
- >>469
unicode 化って作業してる人居るの?むかーしパッチがあったきりでは…。
- 471デフォルトの名無しさんzage03/10/16 21:05
- >>470
http://www.cons.org/cmucl/projects.html
に一応載ってる。Brian Spilsbury氏らしい。
リンクが死んでるが
既に、ここにあったりする(謎
http://cvs2.cons.org/ftp-area/cmucl/experimental/
いったいどうなったんだろうね。
俺のLISPの技術が高ければ出ていきたいところだが、全然自身無いし....
でも、日本語のストリング(C++流の言い方だが)は既に使えるから、まあいいんでねーの?
と妥協してみたり。
* (setf a "逝って良し")
;
Warning: Declaring A special.
"逝って良し"
* a
"逝って良し"
- 472デフォルトの名無しさんsage03/10/16 21:52
- ShiftJISの0x5c問題はどうなの?やっぱ駄目?
まあUNIXだからEUC使えればそれでいいけど。
- 473デフォルトの名無しさんsage03/10/16 22:19
- >>471 一年以上前のバイナリだし…。*現在* だれか作業してるのかなぁ?
MLでもその手の話は全然見かけないんだが。
- 474ところで03/10/16 22:41
- 皆さん、LISPやschemeでどんな作業してますか?
- 475デフォルトの名無しさんsage03/10/16 22:52
- 漏れはメールやネットニュースの記事の整理したり。
OpenGL でグラフィックスを描いたり。
ちょっとした図(PNG とか PDF)を描いたり。
プログラミングを勉強したり。
- 476デフォルトの名無しさんsage03/10/16 23:12
- どうしても windows を,しかも ms-dos で動く
計算プログラムを使わなければなりません.
clisp などの win32 バイナリがあれば,
バッチファイルを一切書かずに済みますか?
- 477デフォルトの名無しさんsage03/10/16 23:14
- msdos?
XLISPとかか?
- 478デフォルトの名無しさんsage03/10/16 23:54
- >>476 win32 バイナリといっておきながら MS-DOS ?よくわからんな。
もちっと具体的に何をどうしたいのか説明しないとできるかもしれんし
できないかもしれんとしか言い様が無いぞ。
- 479デフォルトの名無しさん03/10/17 14:56
- いよいよMITSchemeがUNICODEにフル対応するらしい。
http://www.gnu.org/software/mit-scheme/
楽しみ!
最近プログラミングに関するこんなHP見つけた。
http://homepage3.nifty.com/Aransk/index.html
あまり見たことがない視点だなぁ。
- 480デフォルトの名無しさんsage03/10/17 18:13
- 三年後くらいに見たら書いた本人でも恥ずかしくなりそうな文章だな。
- 481デフォルトの名無しさんsage03/10/17 20:55
- Niftyのフォーラムに書き込んだものの使い回しだね。
無駄な修辞を削っていくと、何も残らなそうな文章だ。
- 482デフォルトの名無しさんsage03/10/17 21:13
- >>480
三年じゃ無理。
- 483デフォルトの名無しさんsage03/10/18 01:46
- Haskellスレで変なレスがあったがまさかコイツでは・・・
- 484デフォルトの名無しさんsage03/10/18 02:01
- 考えを整理することに慣れてない人の文章だね。
読むだけ無駄だった。
- 485デフォルトの名無しさんsage03/10/18 04:53
- 電波認定するかどうか微妙な感じ。学生のレポートレベルですな。
- 486デフォルトの名無しさんsage03/10/18 05:11
- ライプニッツ言い出す人、
大抵はモナドロジー読めてないよな。
- 487デフォルトの名無しさん03/10/18 16:09
- そうかなあ?本人がモナド論を読んでるかどうか知らんが結構面白い
視点だと思うがなぁ。
例えば:
http://www.ice.nuie.nagoya-u.ac.jp/~h003149b/index.html
このHPなんかでも関数言語を扱っているが、「雑談」や「疑問に思っていること」
なんて結構独自な視点で面白いじゃないの。
この前のこれも、
http://homepage3.nifty.com/Aransk/index.html
要はプログラミング言語を通して見えるものは何かってことじゃないの?
単なる言語仕様の紹介とか翻訳とか、サンプルプログラムだけじゃなくて
言語論や認識論的に捉えたHPがあれば教えてよ。
(オブジェクト指向の説明は除く!)
この2チャンネルでも挑戦した人がいたらしいが、見られたものじゃ
なかったって噂を聞いたが?(^^;)
- 488デフォルトの名無しさんsage03/10/18 16:41
- ご本人ですか?
- 489デフォルトの名無しさんsage03/10/18 16:56
- すべて消去されているのは気のせいですか?
- 490デフォルトの名無しさんsage03/10/18 17:33
- 別に独自でもないし面白くもないんだけど。
プログラミング言語を通して見えたとか言われても
その人が電波にしか見えない。
つーか、簡潔に書いてくれないのでくどくて読むに堪えない。
- 491デフォルトの名無しさんsage03/10/18 17:42
- Lispの腕を磨けるようなことを期待したのに
脳内でこねくりまわした理屈を見せられたから
こんなに腹がたつんだな。
- 492デフォルトの名無しさんsage03/10/18 20:33
- >>401 亀レスだが、一言逝っておきたい!
根拠も無く Common Lisp とかを汚れてるだの汚いだのデカイから駄目だのというのは聞き飽きた。
CL 派の漏れとしては不愉快だ。あまりこんなこと言いたくないが、lambda だけ
じゃダルくてマンドクセーから let とか逝ってる癖に、エラー処理は unwind-protect
じゃなくて継続があれば同じことができるから不要ですか?で、実装は大体 CLOS 相当
や unwind-protect やパッケージシステムを持ってるくせに規格に入れたら「デカイ、美しくない」。
うるさい。
あと Cmmon Lisp は関数型じゃないとか勝手にきめるんじゃねー。破壊的操作つかうには
それなりの理由があるんだよ。コンパイラに「これ、もーつかわないよ」と明示的に
指示してるんだよ!破壊的操作と同等の性能を GC + 関数スタイルで実現するのは
実用的にはきびしいな〜と心のどこかで思ってるから破壊的操作つかうんだよ!
関数型に向いてないんじゃなくて、現実世界とのすりあわせで破壊的操作使うんだろうが!
…とか語っといてなんだが、MIT Scheme の UNICODE 対応に激しく期待している漏れ。
- 493デフォルトの名無しさんsage03/10/18 20:34
- cmuclの話題がいっきに止まってしまったな
変なもの紹介すんなよ
- 494デフォルトの名無しさんsage03/10/18 20:58
- 汚いっていうより覚える気になれない。
始める気力がでないんだよ。
- 495デフォルトの名無しさんsage03/10/18 21:40
- 誰も、気力が出ない香具師に文句なんて逝ってないYO.
「Common Lisp は XX だから」みたいな初心者にいい加減な事
を刷り込む香具師に文句言ってるんだ。
折角だから勧誘しておくが、Windows の Common Lisp 装備のエディタ
である xyzzy とかいいぞ。これの為に Windows を入れる価値がある(かも)。
CLOS とかは無いけど、正規表現や FFI もあるし、激しく快適なんだな〜。
正直、これで Common Lisp マンセーになった。これぞ、長年求めていた CL-Emacs…。
- 496デフォルトの名無しさんsage03/10/18 22:04
- xyzzyって「Common Lisp*のようなもの*」だろ。
あんな微妙に違う物より、Emacs Lispの方が違いが明確でかえって楽。
- 497デフォルトの名無しさん03/10/18 22:09
- schemeの処理系はへたれなのが多すぎ。
CMUCLやGCLを見習おうぜ。
そんなスピードじゃあ亀にも追いつかれちまうぞ
お前らがschemeマンセーしてる間にcmuclはスタンドアローン実行イメージ作成可能になってるからな。
妄想に浸るのはやめろ。
- 498デフォルトの名無しさんsage03/10/18 22:18
- SchemeなEmacsが欲しい。
- 499デフォルトの名無しさんsage03/10/18 22:32
- >>496 どーかんがえても絶対 Emacs Lisp よりはマシだと思うが…。数値周りだけでも
elisp って不便じゃない? *ようなもの* って基準がわからんけど、準拠度を言うなら
CLtL2 の 5-6 割とか聞いたが、そんなこというなら CLtL1 相当の KCL とかはもう
*ようなもの* とか *だったもの* とでも言う気か?そもそも CLISP や CMUCL だって
完全に準拠してるわけじゃねーし。
>>497
cmucl で実行イメージ作成ってさぁ、おれのイメージファイルだけで 50M くらいあるんだけどさぁ…。
とりあえず意味もなく Scheme を煽るのは CL マンセーの漏れでも恥ずかしくなるから止めれ。
Chez とかへたれどころか素晴らしい出来じゃないか。フリーのコンパイラだって結構あるし。
- 500デフォルトの名無しさんsage03/10/18 22:37
- Schemeはなんであんなにたくさんの処理系があるんですか?
言語仕様ってのはいたずらに小さくするのもダメなんだなって
おもったりもしなかったり。
- 501デフォルトの名無しさんsage03/10/18 22:59
- Scheme(必要最低限)と Common Lisp(完全網羅)では
どっちが駄目とかそーゆう話ではないんじゃ…。まぁ、
どうしても処理系の数が少ないほうがいいなら、ISLISP とかどーよ。
- 502デフォルトの名無しさんsage03/10/19 00:18
- Schemeって必要最小限でこれだけあれば何でもできますはいいんだけど、
その上で動く実用的な便利なもの(CLOSとかエラー処理とか正規表現とか)を
ちゃんと標準で決めてくれよう。
どこに持っていっても遅いかも知れないけど動くというような。
方言多すぎ。
readerの拡張とか、SRFIを取り入れてさっさとR6RSでも決めて欲しい。
- 503デフォルトの名無しさんsage03/10/19 02:49
- >>502
> readerの拡張とか、SRFIを取り入れてさっさとR6RSでも決めて欲しい。
それは 「TCP や UDP を IP で決めて欲しい」 といっているのと同じようなものだよ
- 504デフォルトの名無しさん03/10/19 07:38
- 突然で申し訳ないのですが、質問です。
MIT SchemeのWINDOWS版をアンインストールしようと思ってコントロールパネルの
「アプリケーションの追加と削除」を使ったんですが、アンインストールしようとすると
Setup is unable to find _SETUP.DLL, which is needed to complete the instllation.
Error 103
と表示されてアンインストールできません。どなたか解決法をご存知の方
いらっしゃいませんか?
- 505デフォルトの名無しさんsage03/10/19 08:52
- _SETUP.DLLを手に入れる
- 506デフォルトの名無しさんsage03/10/19 12:07
- Arcってどこでダウンロードできるんですか?
- 507デフォルトの名無しさんsage03/10/19 12:32
- >>506
まだ。
とりあえず仕様でざくっと実装してアプリを書いてみて、
その知見をもとに現在ちゃんとした仕様を策定中だそうだ。
- 508デフォルトの名無しさんsage03/10/19 12:50
- >>499
> >>496 どーかんがえても絶対 Emacs Lisp よりはマシだと思うが…。数値周りだけでも
「理系の学生さん向き」に惹かれましたv 素晴しい電卓として助けてもらっています.
scheme 用の仕様を決めて欲しいっていうのは,
もっといろいろな場面で scheme を使いたいけれど,
まさか自分で全て用意するのはちょっと...という気持ちがあります.
適材適所とはいうものの,好きなものをどこでも使いたいような気持ちです.
でも R5RS はあのままでいいです.
- 509デフォルトの名無しさん03/10/19 12:55
- Schemeで
(apply and ...)
みたいなのってどうやるでしょうか?
- 510デフォルトの名無しさんsage03/10/19 13:08
- みたいなの、と言われても
- 511デフォルトの名無しさんsage03/10/19 14:03
- >>509
答え:できない。
理由:applyが引数を先に評価しちゃうから。
- 512デフォルトの名無しさんsage03/10/19 14:27
- (eval (cons 'and ...))
- 513デフォルトの名無しさんsage03/10/19 14:46
- (every? identity (list ...))
- 514デフォルトの名無しさんsage03/10/19 15:03
- >>512
引数足りない
- 515デフォルトの名無しさんsage03/10/19 15:31
- >>509
関数に引数をリストでまとめて渡したい、てこと?
- 516デフォルトの名無しさん03/10/19 15:42
- つーかandは構文だからapplyに掛けられないだろ
- 517デフォルトの名無しさんsage03/10/19 16:09
- 次スレはschemeとCommonLISPで分離決定だな。
- 518デフォルトの名無しさんsage03/10/19 16:47
- それより処理系ごとでいいんじゃね?
cmucl
gauche
はよく出てくるし
- 519デフォルトの名無しさんsage03/10/19 17:53
- 全体のレス数が多くないんで、細分化すると単なる過疎スレ作るだけが落ち
- 520デフォルトの名無しさんsage03/10/19 17:59
- >>519
CLの話題がほとんどだし、schemeのレス数の少なさを次スレで実感すれば、scheme信者もあきらめるだろ。
CLとscheme以外は放棄の方向で(ほとんど誰も使ってないし)
- 521デフォルトの名無しさんsage03/10/19 18:26
- いっそEmacs Lispスレも合同したほうがいいんじゃないか?
- 522デフォルトの名無しさんsage03/10/19 18:47
- >>520
なぜ放棄するのでしょうか.
LISP 全体の話題がしたい人が困るかも知れません.
CL だけにして,自分好みのアーカイブを作りたい人がいるんですか?
- 523デフォルトの名無しさんsage03/10/19 19:11
- このスレは全般スレとして残して、
処理系専用が欲しいなら好きに立てれば?
維持できる自信があれば。
- 524デフォルトの名無しさんsage03/10/19 19:18
- なんでみんな頭のおかしな>>517のいうことをまにうけてんの?
- 525デフォルトの名無しさんsage03/10/19 19:24
- schemeは処理系別に
clは一本化で
- 526flatlinesage03/10/19 19:28
- ついこの前までSchemeの話題が主だったのに...
# 個人的には、CLとSchemeで違いを実感するのは関数の名前空間の分離問題ですね。
- 527デフォルトの名無しさんsage03/10/19 19:34
- LISP6
http://pc2.2ch.net/test/read.cgi/tech/1031559474/
これ残ってるけどどうする?
アンチが立てたぽいけど
- 528デフォルトの名無しさんsage03/10/19 19:41
- eqv?って文字列の比較はやってくれませんか?
- 529デフォルトの名無しさんsage03/10/19 20:08
-
まず、このスレに粘着してる香具師がどれだけいるかが問題だな。
人数を把握するために一人一回書き込んでくれ
CL中心かscheme中心かも明確にするように
とりあえず俺はCL中心....というかCLのみ
- 530デフォルトの名無しさんsage03/10/19 21:03
- まずも何も書き込みの絶対数見りゃわかるだろ
- 531デフォルトの名無しさんsage03/10/19 21:05
- >>529
そんな立てたいならさっさと専用スレ立てればいいじゃん。
- 532デフォルトの名無しさんsage03/10/19 21:14
- むしろLISPスレはもっとガンガン立てるべきだよ
やれ>>529
- 533デフォルトの名無しさんsage03/10/19 22:50
- 別に一緒のスレでいいよ。今までそれでずーっとやってきたんだし。
CLのことはほとんど知らないけど、ここの情報見てるだけでも色々楽しいし
- 534デフォルトの名無しさんsage03/10/19 23:35
- つか、前スレが未だに成仏出来ていない状態で
これ以上スレを増やすなよ。祟るぞ。w
- 535デフォルトの名無しさんsage03/10/19 23:51
- つい最近成仏したぞ
- 536デフォルトの名無しさんsage03/10/20 03:23
- Interview with GNU Guile Maintainer Marius Vollmer
http://www.gnu-friends.org/story/2003/10/17/55512/019
- 537デフォルトの名無しさんsage03/10/20 20:36
- 前スレはおれが1000取って成仏させたよ!!!
- 538デフォルトの名無しさんsage03/10/20 21:21
- じゃ、こっちもよろしくたのむ
http://pc2.2ch.net/test/read.cgi/tech/1031559474/
- 539デフォルトの名無しさんsage03/10/20 22:57
- "Tcl War" -- 懐かしいっす。
- 540デフォルトの名無しさん03/10/21 01:01
- それからRMS、つーかオッサン、
その道 行き止まりだよ、
とにかく Tclを使ってはならないだか
ソフトウェア特許だか知らんけど
どんな理由も知ったこっちゃないんで
俺は いつでも
戦 争 反 対 !
ちなみに Tclはシカトが一番いいと
パトリックへンリウィンストン氏が言ってたス。
今は アホなGuileがくれた
新しい 世界を描く きっかけの時だ。
窪塚洋介
- 541デフォルトの名無しさんsage03/10/21 05:11
- tclもguileも使ってます
RMSがどうこうだの、何々が何々を潰そうとしている(プだの、
あたくし何の興味もござーませんですことよ
- 542デフォルトの名無しさんsage03/10/21 10:11
- お前のその行動でみんなの自由が失われていくんだよ!
- 543デフォルトの名無しさんsage03/10/21 13:45
- Tcb ティクビー
- 544デフォルトの名無しさん03/10/21 23:07
- schemeの多値って便利だけど、
これで組んだらちょっと昔の処理系は全滅ですよね。
まあ、しょうがないか。
- 545デフォルトの名無しさんsage03/10/21 23:10
- "ウインストン" "LISP" で検索したら、(既出かもですが、)ナイスまとめページを見つけた。
誠に、ありがとうございます。
www.1point.jp/%7Ebook_2ch/program/lisp_scheme.html
- 546デフォルトの名無しさんsage03/10/21 23:24
- >>544
多値はそう言われることも多いんだけど、R5RSでは多値の実装に
関しては何も規定していないので (特に、継続が期待している
数と違う数の値が渡された時のふるまいが規定されていない)、
R4RS上にvaluesとcall-with-valuesを構築することは可能だよ。
call/ccも再定義しないとだめだけど。
そもそもそれを可能にするために、わざとふるまいが規定されていない。
rrrs-authorsのアーカイブあたりを探すとそのへんの議論があったはず。
- 547デフォルトの名無しさんsage03/10/22 00:52
- これじゃ駄目だろうな・・
(define *values* ())
(define (values x . y)
(set! *values* (list->vector (cons x y)) x)
(define (call-with-values a b)
(a)(apply b (vector->list *values*)))
プリンタ上書きしないと結果わかんないし
call/ccはよく分からない
- 548デフォルトの名無しさんsage03/10/22 00:59
- dyb の本 (The Scheme Program Language) に書いてあるよ。
- 549デフォルトの名無しさんsage03/10/22 01:00
- >>545
Lisp in Small Pieces 高いけど買おうかな。処理系作りの勉強用に。
- 550デフォルトの名無しさんsage03/10/22 01:17
- 高すぎる・・
- 551デフォルトの名無しさんsage03/10/22 15:14
- >>528
(define str1 "abc")
(define str2 str1)
(eqv? str1 str2) ; #t
(eqv? str1 "abc") ; #f
(equal? str1 "abc") ; #t
- 552デフォルトの名無しさんsage03/10/22 17:27
- >>548
見たのは日本語訳の方だけど、
肝心のcall-with-valuesの中については載ってなかった
- 553デフォルトの名無しさん03/10/22 19:25
- valuesの実装。
distinctな型が必要なんで、ここではsrfi-9のレコード型を使う。
(define-record-type mv (make-mv vals) mv? (vals mv-vals))
(define (values . args) (if (= (length args) 1) (car args) (make-mv args)))
(define (call-with-values p c) (let ((r (p))) (if (mv? r) (apply c (mv-vals r)) (c r))))
また、R4RSのcall/ccが定義されているとすると、R5RSのcall/cc相当のものは、
(define call/cc-orig call/cc)
(define (call/cc p) (call/cc-orig (lambda (k) (p (lambda vals (k (apply values vals)))))))
この実装だと、複数の値がファーストクラスに見えているけど、
R5RSではそれは「禁止」されてはいないからOK。但し、そのことに
依存したコードはポータブルではない。例えば
(define a (values 1 2 3))
はこの実装では動くが、処理系によってはエラーになったり
予期しない動作をするかもしれない。
- 554デフォルトの名無しさんsage03/10/22 22:03
- ありがとうございます
グローバルで持ち回る必要なかったのか
なるほど・・
- 555デフォルトの名無しさんsage03/10/24 22:03
- 整数m,nを与えたときに
m以上、n以下の整数を並べたリストってどう作るの?
- 556デフォルトの名無しさんsage03/10/24 22:08
- (if (< m n) '()
(cons m (hoge (- m 1) n)))
- 557デフォルトの名無しさんsage03/10/24 22:11
- (define (hoge m n) ;;; m以上、n以下の整数を並べたリストってどう作るの?
(if (> m n) '()
(cons m (hoge (+ m 1) n))))
(hoge 1 5)
(1 2 3 4 5)
- 558デフォルトの名無しさんsage03/10/24 22:15
- (define (x m n)
((lambda (x)
(x n '() x (lambda (x) x)))
(lambda (x l p d)
(if (>= x m)
(p (- x 1) (cons x l) p d)
(d l)))))
> (x 1 5)
(1 2 3 4 5)
- 559デフォルトの名無しさんsage03/10/24 22:34
- (define (foo m n)
(let foo-2 ((m m) (n n) (l '()))
(if (> m n) l
(foo-2 m (- n 1) (cons n l)))))
(foo 1 5)
=> (1 2 3 4 5)
- 560デフォルトの名無しさん03/10/24 22:44
- (from-to 'a 'z)
=> (a b c d ... z)
ってのきぼんぬ
- 561デフォルトの名無しさんsage03/10/24 22:47
- すまんあげてもうた
- 562デフォルトの名無しさんsage03/10/24 23:00
- >>560
上のやつの応用でできる。
- 563デフォルトの名無しさんsage03/10/24 23:03
- (define (from-to a b)
(let loop ((r '()) (a (memq a '(a b c d e f g h i j k l m n o p q r s t u v w x y z))))
(cond ((null? a) r)
((eq? b (car a)) (reverse (cons b r)))
(else (loop (cons (car a) r) (cdr a))))))
- 564デフォルトの名無しさんsage03/10/25 00:38
- みなさんありがとうございます。
こういったののソースが載ってるサイトとかって
Schemeの場合ないですよね?
調べたんですけどなくて・・・
- 565デフォルトの名無しさんsage03/10/25 00:46
- 簡単すぎてどこも載せないと思うけど・・・
- 566デフォルトの名無しさんsage03/10/25 00:55
- ループの基本だろうに
- 567デフォルトの名無しさんsage03/10/25 01:32
- >>1-10 のリンク先全部読めばすぐ理解できる
- 568デフォルトの名無しさんsage03/10/25 02:25
- はいはいしてる赤ん坊に立って歩かせるような
厳しいこといわないであげて
- 569デフォルトの名無しさんsage03/10/25 09:02
- はえばたて
たてばあゆめのおやごごろ
- 570デフォルトの名無しさんsage03/10/25 12:58
- リストに対するバッククォート式
`(+ ,(+ 1 2) 3) => (+ 3 3)
がある様に、
コードに対しても先行評価ができると便利だと思いませんか。
#,<定数式> (評価が起こるのはread時)
'(+ #,(+ 1 2) 3) ≡ '(+ 3 3) => (+ 3 3)
(+ #,(+ 1 2) 3) ≡(+ 3 3) => 6
(define a "a")
(define b "b")
(define c "c")
(define (e f) (string-append #,(string-append a b c "d") f))
≡(define (e f) (string-append "abcd" f))
(e "f") => "abcdf"
(define WM_CREATE 1)
(define WM_DESTROY 2)
(case msg
((#,WM_CREATE) ...)
((#,WM_DESTROY) ...)
(else ...)
≡(case msg
((1) ...)
((2) ...)
(else ...)
- 571デフォルトの名無しさんsage03/10/25 14:37
- >>570
Scheme (SRFI-10) の #, じゃだめなの?
自分でオペレータを登録する必要があったり、できることが
限られたりするけど。
Common Lispの #. みたいに何でも許しちゃうと、
便利だけど思わぬ使いかたをされてはまることがあるよ。
- 572デフォルトの名無しさんsage03/10/25 15:26
- >>571 別にはまったことはないけどな…。それなりの理由があって使ってるケースは見るが。
制限したってわかり難い使い方を完全に防ぐ事は出来ないと思う漏れ。
- 573デフォルトの名無しさんsage03/10/25 15:48
- >>560 シンボルに順序をつけるというのが気持ち悪い…。
- 574デフォルトの名無しさん03/10/25 17:54
- これからはじめたいですが、newbie用キットありませんか?
- 575デフォルトの名無しさんsage03/10/25 18:35
- >>574
DrScheme
- 576デフォルトの名無しさんsage03/10/25 18:39
- あれはむしろ初心者に厳しくなってないか?
- 577デフォルトの名無しさんsage03/10/25 20:15
- >>574
WinでCommonLispならxyzzy。
私も入門中。
- 578デフォルトの名無しさんsage03/10/25 22:53
- >>574
clispなんかどうよ?
- 579デフォルトの名無しさん03/10/26 00:28
- 私もこれからLispの勉強・開発したいと思ってるものです。
自分が欲しいのは、
・GUIが使えるもの
・Windows(ノートPCの為)
・日本語が使える
・価格が高くない
というのが条件なんですが、
Corman Lisp 2.5というのが9月にでていて
http://www.cormanlisp.com/
リリースノート中に
- Kernel stringNode() now handles chars > 127 correctly, which
means CT:C-STRING-TO-LISP-STRING handles them correctly.
という文があるのですが、過去ログから推測するに日本語が使えるように
なるということでしょうか?
Lispも英語もよく判らないので詳しい方教えてください。
- 580デフォルトの名無しさんsage03/10/26 00:39
- >>579
商用で使わないなら ACL trial を勧める。
- 581デフォルトの名無しさんsage03/10/26 01:46
- >>577
guileはどうよ?
Cygwinにデフォルトで入ってるけど
- 582デフォルトの名無しさんsage03/10/26 02:13
- 入門には
(string-length "あいうえお")
=> 5
な処理系がいいと思う。マルチバイト文字にまつわるイヤな事はもちっと後で。
- 583デフォルトの名無しさんsage03/10/26 04:05
- Emacs Lisp使っとけ
- 584デフォルトの名無しさんsage03/10/26 04:44
- なんか見事にばらばらだね。参考にならないんじゃ?
- 585デフォルトの名無しさんsage03/10/26 05:07
- 要は手近にあるもん使っとけ、ってこと
- 586デフォルトの名無しさんsage03/10/26 11:15
- じゃ、ACLトライアルにもう一票。
- 587デフォルトの名無しさんsage03/10/26 16:01
- cygwinのclispで日本語が扱えないよー
どうしたらよいの?
- 588デフォルトの名無しさんsage03/10/26 16:07
- >>587
ならば、ローマ字を使えばいいじゃん。
- 589デフォルトの名無しさんsage03/10/26 16:15
- 文字列でも使えない?
- 590デフォルトの名無しさんsage03/10/26 19:03
- >>579
まず、LISPで「開発」するという時点でwindowsならACLしかありえない。
Linuxや*BSDだったらCMUCLなりSBCLなり優秀な開発環境があるけど。
cygwinを使ったものが1の欲しいものだとは思えないし、選択子はないだろ。
1のとるべき道
1.ACLのトライアルを使用
2.windowsは諦めてUNIX系(Linuxが良いかと)のOSに乗り換える
あと、CommonLISPに限定はしていないようだから
3.GUIはあきらめてEmacsLISP
あと、ノートにLinuxがインストールできないという状況は今ではかなり変わっているぞ。
実際、俺が今使っているLinuxはDELLノートだし。
- 591デフォルトの名無しさんsage03/10/26 19:35
- windows でも unix でも,同じコードで GUI を使える日は来るのでしょうか.
common lisp で,GUI なところは処理系依存でも欲すぃ欲すぃ欲すぃ.
python とか perl とか ruby はできるんでしたっけ?
- 592587sage03/10/26 20:07
- >>589
文字列でもだめです。
ろーま字なんかじゃやだ。
cygwinフルインストールしたらclisp入ってたんだけど、
コンパイル時に何か指定しないとだめなの?
- 593デフォルトの名無しさんsage03/10/26 21:48
- >>590 xyzzy は結構いいぞ。マルチバイトも含めたテキスト処理ならほぼ最強じゃないかな。
漏れはNECノートに FreeBSD + CMUCL と WindowsXP + xyzzy, clisp のデュアルブート環境。
>>591 GUI か… CLIM なら Win でも UNIX でも同じコードなんでないの?
あるいは、OpenGL バインディング(GLUT)でもコードはほぼ同じだろう。
- 594デフォルトの名無しさんsage03/10/26 22:33
- >>590
私もxyzzyに魅力を感じるのですが、
xyzzyでのプログラミングって情報が乏しくないですか?
Common Lispの部分はいいとしてもエディタ部分等のxyzzy独自の部分の情報が。
その点ではまだEmacs Lispに軍配が上がるのかなぁと思ってるのですが、
Common Lispを使っているという魅力は捨てがたく・・・ぶつぶつ。
xyzzyでプログラムを書いている人は何で学んでいるのでしょうか?
- 595591sage03/10/26 22:43
- >>593
うわーん.clim って GPL じゃないYO.GPL な処理系にもがんばって欲すぃ.
- 596デフォルトの名無しさんsage03/10/26 22:47
- FreeCLIMってなかったっけ。ぐぐってみる。
http://www.cons.org/free-clim/
開発止まってるのかな。ソースエリアにもアクセスできないし。
- 597デフォルトの名無しさんsage03/10/26 22:58
- >>594 気のせい。リファレンスもあるし、apropos も ESC-Tab もあるし、
Emacs の経験があるならエディタ部分も簡単だろう。まぁ、Emacs にくらべると
ドキュメントが不足ぎみなのは認めるけど、歴史が違うからねー。
>>596 McCLIM で検索汁。
- 598594sage03/10/27 00:10
- >>597
リファレンスなんてあったっけと思いながら
探してみたらなんとか見つけることができました。
こりゃ便利そうです。
- 599デフォルトの名無しさんsage03/10/27 00:45
- >>591
日本語が扱えないってテキスト処理のこと?
表示だけならCygwin版guileでできたけど
clispは入ってないからしらん
> $ guile
> guile> "日本語"
> "日本語"
> guile> '日本語
> 日本語
- 600デフォルトの名無しさんsage03/10/27 00:46
- >>591 → >>587
- 601599sage03/10/27 00:49
- 念のため
> $ cat .inputrc
> # Make Bash 8bit clean
> set meta-flag on
> set convert-meta off
> set output-meta on
- 602デフォルトの名無しさんsage03/10/27 00:55
- xyzzy って密かに凄いとおもうなー。
漏れ的には 秀丸 <<<<<< xyzzy だ。
- 603デフォルトの名無しさんsage03/10/27 01:32
- ちゃんと規格が決まっている言語を基にしたものと、ただのマクロを比較するのは酷かと。
- 604デフォルトの名無しさんsage03/10/27 02:05
- xyzzyがすごいんじゃなく秀丸がへぼいだけ
- 605デフォルトの名無しさんsage03/10/27 05:22
- >>591 それらのスクリプティング系言語は、Tk、GTK、
wxWindowsのようなマルチプラットフォームGUIツール
キットを利用できますので、X11、Win32、Macぐらいの
ポータビリティがたいていあります。
wxWindows + python の実例です:
http://wxpython.org/screenshots.php
- 606デフォルトの名無しさんsage03/10/27 07:59
- GUIってどの辺までのことを言ってる?
xyzzyはダイアログ出せる程度じゃないの?treeviewとか多少の
拡張はされてるけど.それでいいならxyzzyはお勧め.
ただ,Linuxにはないけどね.
- 607599sage03/10/27 09:04
- clispでは駄目だった
> [1]> '日本語
>
> *** - READ from #<INPUT CONCATENATED-STREAM #<INPUT STRING-INPUT-STREAM> #<IO TE
> RMINAL-STREAM>>: illegal character #\U0093
> 1. Break [2]>
なんでSchemeには出来てCommonLispでは駄目なんだ…
- 608デフォルトの名無しさんsage03/10/27 12:22
- 整数にはbignumがあるのだから、
文字も日本語でも何でも扱えるようにbignumと同じように大きさを無制限
にしたextended character型を定義しておいてほしい。
- 609デフォルトの名無しさんsage03/10/27 12:29
- common lispが有理数を正確にあつかうことができるのはいいと思う。
0.33333.... = 1/3
浮動小数点の誤差を考えはじめると難しいから。
有理数があるのなら、無理数も正確に扱えるといいなと思うのが人情でしょう。
なんで無理数を正確に扱えないんですか? 実装が難しいのですか?
- 610デフォルトの名無しさんsage03/10/27 12:33
- >>609
有理数は所詮分数であるから。
円周率を正確に求めることが出来ますか?
- 611デフォルトの名無しさんsage03/10/27 12:36
- >>609
sqrt 2, pi, e .正確に表すにはこれらのシンボルで表すしかない.
当然 有理数上で定義された各種演算を無理数上でも定義しなければならない.
pi と1億桁まで等しい有理数を与えた時に, どちらが大きいか計算するのは容易ではない.
- 612デフォルトの名無しさんsage03/10/27 12:40
- >>610
無理数の小数点以下を必要なときになって初めて(例えば表示するときとか)
必要なだけ求めるような仕掛けは無理ですか?
数学では円周率や√2などの有名な無理数以外の無理数を扱うときは
どうしていますか?
- 613デフォルトの名無しさんsage03/10/27 12:47
- >>608
ついでに、CLOSオブジェクトで定義したcharacter型のsubtypeも
ユーザが自由に定義できるようにしておいてほすい。
そんで、夏目漱石が何月何日に出した手紙の何文字目などという文字を定義して
遊んでみる。
modifierとaccesorをメソッド定義するばいいだけだよね(あとreaderとかか)。
- 614デフォルトの名無しさんsage03/10/27 12:53
- >>611
正確に表すのにプログラム内での実態として数式だけを持っておくという
のはなしですか?
たとえば円周率を好きなときに好きなだけ生成する数式はありませんか?
- 615デフォルトの名無しさんsage03/10/27 12:53
- >>602 おねがいですからそーゆう比較をしないでください.Lisp はただでさえ信者が〜と言われやすいのに.
xyzzy は凄いとは思うけど.>>604 にとってはすごくないんですね.んじゃ,X-Window 環境に移植
してくれませんかね?自分はまだ力不足なもので.
>>607 clisp は Common Lisp の実装の一つですから,そーゆう飛躍した結論に逝かないでくれよぅ.手元の
cmucl だと
* '日本語
|日本語|
だし xyzzy でも
> '日本語
日本語
だぞ.つーか Common Lisp の所為じゃねー.
- 616デフォルトの名無しさんsage03/10/27 13:25
- ぐだぐだ言わずに数式処理ソフト使え
- 617デフォルトの名無しさんsage03/10/27 14:52
- 数式処理ソフトってLispで書かれたMaximaや有名なMathematicaのことでだよね?
使ったことないんだけど、そういうソフトは無理数を正確に扱う仕組みがあるの?
もしかしてスレ違い?
- 618デフォルトの名無しさんsage03/10/27 15:25
- On Lisp の日本語訳は、訳がこなれていてイイ! 文才感じるよ。
http://user.ecc.u-tokyo.ac.jp/~g340299/onlisp_j.pdf
この人のウェブサイトのトップページをブラウザ(IE6)で表示できないんだけど、
だれか見られる人いる?
- 619デフォルトの名無しさんsage03/10/27 16:32
- >>618
正直、私もその訳はいいと思った。
訳本といえばひどい日本語が常なのに。
- 620デフォルトの名無しさんsage03/10/27 16:40
- >>618
よくわかんないけど、
ttp://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd
の中の再帰的定義(?)を解釈できないらしい?
- 621デフォルトの名無しさんsage03/10/27 17:02
- >>593
よろずやの方ですか?
- 622デフォルトの名無しさんsage03/10/27 17:11
- >>618
/~g340299/ を get して gzip -d で解凍したら読めたよ。
- 623デフォルトの名無しさんsage03/10/27 17:57
- リストの中から一番大きい数を抜き出すのは
どう記述したらよいのですか?
お願いします。
- 624デフォルトの名無しさんsage03/10/27 18:14
- >>621 ???ぐぐってしまった。ILISP のポップアップが消せる事を知った。激しく快適だ。ありがとう 621 !!
- 625デフォルトの名無しさんsage03/10/27 18:18
- >>623
アヒャヒャヒャヒャ。 環境を書いてないので emacs or Common LISP を想定しちゃうぞ.
さらに,宿題ですと書いてないので課題には使えないようなプログラムを書いちゃうぞ.
(let ((lst '(3 1 5 10 20 100 500 40 50)))
(loop with max = (car lst)
for x in (cdr lst)
when (> x max) do (setf max x)
finally (return max)))
- 626デフォルトの名無しさんsage03/10/27 18:33
- >>625
emacs lisp って loop あるんですか?
あっても使わなさそうだけど。
- 627デフォルトの名無しさんsage03/10/27 18:33
- apply max うんたら
- 628(define (´∀`) 'マターリ)sage03/10/27 18:35
- maxって関数あるんじゃないかな。
(max 1 2 3)かリストを受け取るやつか解らないけど。
(define (max x)
(cond ((null? x) 'error)
((null? (cdr x)) (car x))
(else (let ((y (max (cdr x))))
(if (> y (car x)) y (car x))))))
- 629デフォルトの名無しさんsage03/10/27 19:11
- >>626 loop あるみたいだな…。
(apply #'max '(1 2 3))
- 630デフォルトの名無しさんsage03/10/27 19:12
- 宿題スレ化はんた〜い!
- 631デフォルトの名無しさんsage03/10/27 19:36
- >>630 反対ついでにネタを振れ。暇だから宿題にも答えちゃうんだ。
- 632デフォルトの名無しさんsage03/10/27 20:10
- >>631
じゃあ、どうでもいいネタを振ってみる。Franz のセミナー行く人いる? おれは行く。
http://jp.franz.com/base/seminar_11_06_2003.html
- 633デフォルトの名無しさんsage03/10/27 20:21
- WebActions か〜。Allegro 欲しいけど高いよな〜。漏れは趣味でやってるだけだし。
mod_lisp でもいじるか…。
- 634デフォルトの名無しさんsage03/10/27 20:55
- windows上だとCL関連のライブラリも少ないし必然的にAllegroだろうね
漏れはLinuxなんでCMUCL+SBCLでライブラリが豊富-->CL万歳なんだが
- 635デフォルトの名無しさんsage03/10/27 21:54
- ACLって一番安いのはなんぼ?
- 636デフォルトの名無しさんsage03/10/27 23:32
- >>609
( ・∀・)つ〃∩ ヘェー
>>609
> 円周率を正確に求めることが出来ますか?
無理数っていっても n 乗根程度のものからあるのに
いきなり超越数を持ち出すのは酷というもの
- 637デフォルトの名無しさんsage03/10/28 00:43
- >>617
無限のリソースがあれば「無理数を正確に扱う」ことは可能
- 638デフォルトの名無しさんsage03/10/28 00:45
- 無限のリソースってどこにあるんだ?
- 639デフォルトの名無しさんsage03/10/28 00:52
- 無限の時間も必要かと
- 640デフォルトの名無しさんsage03/10/28 01:04
- >>618,619
イィ!
ところどころ送り仮名とか間違ってんのはtypoだろうな。2chでレビュー&フィードバックしますか。
>>635
ACLの最廉価版はタダ。あの値段はサポートフィーだろ。誰か7.0のβテスト参加する?
- 641デフォルトの名無しさんsage03/10/28 02:40
- >>639
時間もリソースの一つ
- 642デフォルトの名無しさん03/10/28 09:07
- >>636
なるほど超越数か。 ありがとう。
ブクロサイコー age
- 643デフォルトの名無しさんsage03/10/28 09:57
- >>617
数式処理ソフトがらみでは、116の辺を読んでみな。
- 644デフォルトの名無しさんsage03/10/28 11:14
- >>618
Firebird で問題なく読めたよ
やはり XML の解釈は Mozilla 系が強いんだろうか
- 645デフォルトの名無しさんsage03/10/28 11:21
- >>644
Mozillaの設計基本方針は「W3Cなどの規格に忠実であること」を
うたっているよね。たしか。
- 646デフォルトの名無しさんsage03/10/28 19:54
- >>640 タダ!?体験版の話?ヒープ量が制限されてて,盛りあがってきたところで,
いきなり試合終了ってのを数に入れるのか?そりゃ,入門書のサンプルを打ちこむく
らいなら使えるだろうけどさぁ….あれを数えるのが普通なのかなぁ.それとも最近
価格改訂でもあったのかな.
漏れが Lisp に興味を持って買おうと思ったときは,一桁間違ってません?個人は及
びじゃないんですか?みたいな値段だったが.サポートフィーって言うならサポート
無しでいいからって言ったら 10 マソ以下で買えたりするとかないんですかね??
- 647デフォルトの名無しさんsage03/10/28 20:47
- 口だけ厨房は clisp でも使ってなさいってこった。
- 648デフォルトの名無しさんsage03/10/28 21:19
- スマソ…まぁ、実際 clisp 使ってるわけだが。価格聞かれてるのに体験版ならタダ
って答えはどうかと思ったもんでね。
- 649デフォルトの名無しさんsage03/10/28 21:51
- > Prices starting at $599 including Technical Support.
http://www.franz.com/products/packages/
て書いてあるぞ、7 万円弱。普通じゃん。ぱっと見高い気がするがマイナー度
を考慮すると安い。
- 650デフォルトの名無しさんsage03/10/28 21:59
- アカデミックパック、Win/Linux/Mac のみなら、ね。
いいな。学生で該当プラットフォームの人は…。いやまてよ?
他のも値下げしてるのかな?なんか希望がでてきたなぁ。
- 651デフォルトの名無しさんsage03/10/28 22:07
- >>650
FreeBSD or SunOSで社会人と見た
- 652579sage03/10/28 22:41
- 参考になる話色々聞けてよかったです。ありがとうございました。
自分の今まで検討したもの(商用開発ではないです)
・ACL Trial(#リソース制限が気になる)
・Gauche(#Cygwin版はGTK使えない、でもOpenGL OKになったんんだからもう少ししたら対応してもらえる?)
・LispWorks(#Rel4.3になってからサポートが完全に付かなくなり、製品$999+サポート$250とちと高い)
・Corman Lisp(#GUIめんどくさそう。(length "テスト")とやったら死んじゃうので駄目そう)
でも649さんのいう$599が本当なら頑張って買っちゃうんですけど。
- 653デフォルトの名無しさんsage03/10/28 22:58
- >>652
ACL をてっとり早く試してみたければ
% telnet prompt.franz.com
して
(defun hello (n)
(dotimes (i n)
(mp:process-run-function "hello"
#'(lambda (j)
(mp:process-sleep (random 10))
(format t "Hello World: ~a~%" j))
i)))
(hello 10)
などと打ってみれば。なんか franz の回し者みたいになってきたな。
- 654デフォルトの名無しさんsage03/10/28 23:21
- $599 なら Visual Studio .NET Pro 並みの価格だな。
ほんとにその値段だけで買えるのならホスイ。。。
- 655デフォルトの名無しさんsage03/10/29 08:50
- 去年Windowsアカデミック版を購入したときには40万したけどな。
- 656デフォルトの名無しさんsage03/10/29 11:37
- 漏れもそんなに安かった記憶はないぞ…すごい値下げだな.日本の販売元がボッタクリなのか?
まぁ,ACL Trial も良いとは思うんだけど,ライセンスの更新がマンドクサなんだよな.
>>653 いきなり CL 標準以外の mp パッケージを使わせようとするとは….franz の
回し者に見せかけた Xanalys の手の者と見た.
- 657デフォルトの名無しさんsage03/10/29 17:20
- CLを勉強する前から処理系依存の拡張機能を使うと
VisualC++しか使えないwindowsプログラマのようになってしまうぞ
- 658デフォルトの名無しさんsage03/10/29 19:51
- >>655
ま、マジで買ったのか? アカデミック版と言う事は学生なのか。。。
漏れはサラリーマソだが買えない。 _| ̄|○ ガックシ
- 659デフォルトの名無しさんsage03/10/29 20:22
- もちつけ、自腹じゃないだろう。きっと。…だめだ、激しくうらやましい!!
- 660デフォルトの名無しさんsage03/10/29 20:43
- >>579
Gaucheって日本語使えるけど
cygwinでしか動作確認してないし
VC++とかでコンパイル通らんかなあ
- 661660sage03/10/29 20:44
- スマソ↑
その前にこれSchemeだったわ
- 662660sage03/10/29 20:54
- duplicateスマソ↑
しかもガイシュツ_| ̄|○
- 663655sage03/10/30 09:17
- >>658 >>659
さすがに自腹じゃないです。
- 664デフォルトの名無しさんsage03/10/30 10:12
- アカデミック版は教員でも買えるし、研究目的なら予算も使えるからな
- 665デフォルトの名無しさんsage03/10/30 11:02
- Schemer's way (日本語)
http://www.shiro.dreamhost.com/scheme/docs/schemersway-j.html
を読んでいて、次のような箇所があり、
>必要十分にコンピュータを抽象化し、様々なアルゴリズムを簡潔に表現できて、
>かつ頑健なプログラムが書けるような言語機能のセットとは何だろう。
>Schemeが試みた解答は次のようなものだ (これが全部ではないが)。
>
>組み込みのガベージコレクション
>レキシカルスコーピング
>ファーストクラスのクロージャ
>ファーストクラスの継続
>末尾再帰の最適化
>構文的マクロ
なるほど美しいなと思いました。
これだけの機能を使って他の言語機能を書いていくってのは、それを「美しい」
の基準にするとちょっとパズル的な面白さがあるなと思いました。
そんで話を現実世界の汚さにもってくると、継承の実装って今のコンピュータで
早くできるのかなと思いました。schemeの実装にくらいのでたいしたこと言えな
いのですが、一般的な継承ってスタックをコピーしたりしないのかな?
- 666デフォルトの名無しさんsage03/10/30 11:19
- > 一般的な継承ってスタックをコピーしたりしないのかな?
「継続」だよね。
そうとは限らない>コピー。Chickenみたいに全部CPSにしちゃうか
(スタックはポップしない、いっぱいになったらGCする)、
フレームをヒープアロケートすればコピー無しでできる。
前者はスタックエリアを事実上最新世代のヒープとして
扱ってるともみなせるけど。
フレームをヒープアロケートにするのは、確かAppelが、
コンパイラが賢ければ遅くならないとか言ってたというのを
どっかで読んだ気がするが、メモリアクセスのペナルティが
大きい最近のプロセッサでもそうなのかどうかは不明。
Chezは、論文によれば、継続の捕捉時にはコピーせずに、
起動時にコピーするみたい。
- 667デフォルトの名無しさんsage03/10/30 11:21
- >>665
> 一般的な継承ってスタックをコピーしたりしないのかな?
?
- 668665sage03/10/30 11:30
- すみません。継承->継続です。
- 669デフォルトの名無しさんsage03/10/30 11:50
- >>666
なるほど、それならコンパイラーの最適化をうまくやれば
「現実には遅いんじゃボケッ!」
という暴言には反論可能なんですね。
そして言語ユーザーはものすごいハカーが書いた最適化コンパイラを信用して
のびのびとプログラムを書けると。
でもあんまり、この「美しさ」に例えば学生時代などにはまってしまうと、
複数のプログラミング言語を使いこなすようなハッカーは別として、
普通の職業プログラマになるような人、生涯で身につけるプログラミング言語が
1つか2つという人(必ずしも能力的な問題ではなく、本人のやる気とか。
昔、大量のCobolプログラマーたちは、これからどうしたらいいのかとか
あったよね。)は、先輩プログラマーから「なんて書き方してんじゃ、コラッ!」
ということにならないかな。
そんで、Cプログラマに継続を説明するのが難儀なこととまったく
逆のことがscheme一本やりプログラマにも起きる危険はないかな?
(Cにしてみれば「普通」のループの書き方とか)
てなことをErik Naggumさんがcomp.lang.lispで毒吐いてるのを読んだこと
あります。
- 670デフォルトの名無しさんsage03/10/30 12:28
- いま授業でScheme使ってる学校って多いの?
- 671デフォルトの名無しさんsage03/10/30 12:43
- >>670
うちは国立大ですがSchemeをやっとります。
去年まではSchemeではなくPrologだったらしい。
- 672デフォルトの名無しさんsage03/10/30 12:48
- >>669
> でもあんまり、この「美しさ」に例えば学生時代などにはまってしまうと、
> 複数のプログラミング言語を使いこなすようなハッカーは別として
複数のプログラミング言語を使いこなすような人でないと「美しい」とは
感じないに一票。
- 673デフォルトの名無しさんsage03/10/30 12:52
- >>671
なるほど。
大学レベルじゃなくて、中学、高校のあたりじゃどうなのかな?
- 674デフォルトの名無しさんsage03/10/30 13:03
- >>669
> あったよね。)は、先輩プログラマーから「なんて書き方してんじゃ、コラッ!」
> ということにならないかな。
そんでLispの評判が落ちるので、schemeをLispと呼ぶなと吼えてたよね、その人。
そりゃ、あんまりだって僕は思うけど。
- 675デフォルトの名無しさんsage03/10/30 13:33
- Lispにおけるマクロの使い方について、ひとこと言わせてください。
On Lisp にのっているaifとかああいうのは、ほとんど使わないで
いただきたい。読むときに一瞬、何じゃこりゃと思考が途切れるから。
とくにマクロだと引数の評価さえ起こるのかどうか定義を見ないとわからないし。
私がうまいと感じたマクロの使い方は、
ひと目でこりゃ普通の構文じゃないとわかるような物、
たとえばアスキーアートで書いたグラフのようなミニ言語をマクロで処理するやつ。
忘れてしまって実例が出せないのがもどかしいですが、
SICPにそんな例があったような気もする。
- 676デフォルトの名無しさんsage03/10/30 13:47
- もちろん何らかの形で標準化されているものは別でしょ?
- 677デフォルトの名無しさんsage03/10/30 15:06
- >>669
理想の GC + 理想のコンパイラなら破壊的操作と同じ性能が出せるのか?漏れ的には
なんとなくそれは無理な予感がするんだが.どんな高速な GC も,GC しない,より
は遅いだろうし….あんま学が無いのでよーわからんが.
>>674 そうかね?全然違うものなんだから別に良いと思うけど.CL はかなーり性能面
を考えた仕様だし,実用的に使う事を目指してるでしょ?さすがに古いのでネットワー
ク関連とか足りない機能が目立つようになってきたけど.Scheme は結構学術路線で
しょ?ミニマリスト視点というか.機能 x は y を使えば実現できるから y だけあ
れば良い!! みたいな.目指すところからして全然違うんだから別もので良いんじゃない.
>>675 漏れは let でいちいちバンドされるよりは anaphoric なほうが読みやすいけどなぁ.
特に cond とか cond とか.
- 678デフォルトの名無しさんsage03/10/30 15:21
- anaphoricって何?
condとかcondとかってcondのみだな。
- 679デフォルトの名無しさんsage03/10/30 15:29
- Schemeで書いてた時はちっとも気にしないのに
Emacsで書き始めたら速度が気になりだした。
disassembleなんてあるから余計に。
再帰からループへ。
foldを使ってみたのがいちいちスタックに詰め込んでバインディングするなってなって
元のループに。
- 680デフォルトの名無しさんsage03/10/30 15:49
- >>677
> 理想の GC + 理想のコンパイラなら破壊的操作と同じ性能が出せるのか?漏れ的には
富豪的なプログラミングの延長として、今のハードウェア
(メモリはどんどん安くなっている)、OSおよびアプリケーション
(サーバなど長期間生きているものは除く)の使用形態を考えると、
メモリをただただ喰らう言語実装でも意外と誰も気がつかなかったりして。
メモリリークするOSってあるよね? もちろんそれがばれれば叩かれるだろうけど。
>漏れは let でいちいちバンドされるよりは anaphoric なほうが読みやすいけどなぁ.
>特に cond とか cond とか.
漏れの意見では、condは見た目で何をしているのか、Lispを知らない人でも
(condがconditionの略だと教えれば)言い当てられることがありそうな気がする。
漏れが嫌いなのはdoやdo*です。これってちょっと油断する(Lispから半年くらい
離れるとか)と実行のながれがどうなるかすぐに忘れてしまいます。
- 681デフォルトの名無しさんsage03/10/30 16:20
- >>678
↓みたいに,条件節の値を it で参照できる if, when, cond の事.再帰書くためのもの.
(let ((word "ABC DEF GHI"))
(acond
((ppcre:all-matches-as-strings "[a-z]+" word)
(format t "match: ~A~%" it))
((ppcre:all-matches-as-strings "[A-Z]+" word)
(format t "match: ~A~%" it))
(t
(print "No Match.")))))
anaphoric lambda は it じゃなくて self.
(alambda (x) (if (<= x 1) 1 (* x (self (1- x)))))
再帰関数もこんな感じ.
- 682デフォルトの名無しさんsage03/10/30 18:40
- こんな感じか。
(defmacro alambda (bindings . body)
`(letrec ((self (lambda ,bindings ,@body))) self))
自分で名前を決めさせてもいいかも。
- 683デフォルトの名無しさんsage03/10/30 22:32
- >>681
scheme の => とは違うの?
- 684デフォルトの名無しさんsage03/10/30 23:02
- itに束縛しないという意味では違うよ
- 685デフォルトの名無しさんsage03/10/30 23:35
- >>682
Schemeだと、srfi-31にrecってのがある。こんなかんじ。
(rec (self x) (if (<= x 1) 1 (* x (self (- x 1)))))
- 686デフォルトの名無しさんsage03/10/31 00:31
- defineとほとんど同じだな。
- 687デフォルトの名無しさんsage03/10/31 10:06
- anaphoric if, when, cond, lambda ってどれくらい標準的なの?
できればSchemeとCommon Lispの両方について教えて下さい。
標準的というのは、国際規格、ユーザ間での事実上の標準がある、
いくつか競合する仕様があってユーザ間での合意がまだとれていない、
On Lisp の作者がはじめて書いた、などのいろいろなレベルのことです。
On Lispを読みながら勉強中のLisp初級者です。
- 688デフォルトの名無しさんsage03/10/31 10:27
- >>679 Emacs Lispスレもよろしく!
Schemeなら速度が気にならないのに、Emacs Lispだと気になるのはなぜ?
Lispでプログラミングする以上、最初は速度を気にせずどんどん書いてみて、
実際に使ってみて遅かったら、プロファイラ(コードのどの場所でどれだけ時間が
かかっているかを調べるもの)を使ってボトルネック(コードで一番遅いところ)
を探して、そこを集中的にいじって早くなるようにするのがいいと思います。
- 689デフォルトの名無しさんsage03/10/31 10:30
- 少なくとも Common Lisp では,国際規格の御墨付きはない.しかし,ANSI CL で書
かれているライブラリをそこまで心配する必要があるのかと.Paul Graham のライブ
ラリ自体は clocc (Common Lisp Open Code Collection) に収録されている.
defsystem(C で言う make ね) と同じくらいには標準的とも言えるかもしれない.
たまーに,依存がめんどうなのか,一部(awhen だけとか)をライブラリ内で定義し
てる人もいる.まぁ,さすがに競合する仕様は見たことないけどね.Scheme はよく
知らない.
- 690デフォルトの名無しさんsage03/10/31 10:47
- >>688
そして,現実の計算機上での効率も考えだしたら CL もよろしく!!ミニマリストな人
は#t,#f が無い事やパッケージや CLOSや,リーダーマクロや,コンパイラマクロや,
関数と変数の名前空間や,コンパイラへの型宣言や,使わない標準関数に目をつぶれ
ば Scheme とそんなに違わないよ.ダイナミックスコープだって使わなければ存在し
ないのと同じだし.車にだって,走る目的以外の装備が付いてるだろう?そーゆうもんさ.
# まぁ,金があるなら Scheme でも Chez を買えばいいわけだが….
- 691デフォルトの名無しさんsage03/10/31 11:16
- 「プロファイルなんてしなくても、コードを読めば大体どこらへんか分かるよ。
ループとか関数呼び出しのところだろ」
という意見は正しいこともありえるのですが、プログラムが複雑になってきたり
言語の実装、ハードウェアを変えたりすると足元をすくわれることが多いようです。
英語がにがてなので忘れましたが「あまりにも早すぎる最適化はしないほうが
身のため」みたいな英語の格言があった気がする。
- 692デフォルトの名無しさんsage03/10/31 12:21
- クヌース先生だっけか。
「半端な最適化は諸悪の根源である」
- 693デフォルトの名無しさん03/10/31 12:29
- Appel
"Garbage Collection Can Be Faster Than Stack Allocation" 1987
Miller and Rozas
"Garbage Collection is Fast, But a Stack is Faster" 1994
どっち?
- 694デフォルトの名無しさん03/10/31 12:50
- >>693
スタックの割り付けとガベージコレクションのどっちが速いか?
現在のパソコンにおいてスタックの割付は、ハードウェアレベルのことなのに、
ガベージコレクションはソフトウェアレベルのことなのでスタックのほうが有利。
- 695デフォルトの名無しさん03/10/31 12:58
- >>694 では、LispのためのハードウェアをそなえたLispマシンではどうよ?
- 696デフォルトの名無しさんsage03/10/31 13:00
- スタックは関数呼び出し毎に確保、破棄を行わなくてはならないが、
GCは非同期に行える。
→深いパイプライン×スレッドレベルパラレリズムが進むとGCが有利(かも)
- 697デフォルトの名無しさん03/10/31 13:01
- LispにはJavaについているガベージコレクション機能がそなわっているの?
- 698デフォルトの名無しさんsage03/10/31 13:09
- >>697 Lispのほうが元祖だよ。Lispを勉強した人がJavaを設計したんだよ。
- 699デフォルトの名無しさんsage03/10/31 13:25
- >>693
Appel
"An Empirical and Analytic Study of Stack vs. Heap Cost for Languages with Closures" 1994
もお忘れなく。
- 700デフォルトの名無しさん03/10/31 21:01
- おめーらなんつーか必死だな。最強なファンクショナルでファッショナブルな
言語はMLって決まってるんだよ。おめでてーよなおめーらは。
- 701デフォルトの名無しさんsage03/10/31 21:04
- つーか、あんたの方が必死だな。
- 702デフォルトの名無しさんsage03/10/31 21:23
- >>700
MLにもいっぱいあるが、どれよ?
- 703デフォルトの名無しさんsage03/10/31 21:54
- http://research.microsoft.com/projects/ilx/fsharp.aspx
これかも。
CLR の仕様書読んでると L# とか S# とか作りたくなる。
- 704デフォルトの名無しさん03/10/31 22:04
- SMLにきまってんだろ。MLより洗練された言語みたことねーよ。
SMLに比べてschemeのまさってるってところどこよ?
- 705デフォルトの名無しさん03/10/31 22:06
- 以前なんかCに取って代わる言語がMLと言われたモノだ。
そうなることはありえんがな
- 706デフォルトの名無しさんsage03/10/31 22:11
- >>700
まぁ,Lisp はマルチパラダイムもいーところなので,最強の Functional Language
は ML というのに全く異論はございません.どの ML か,なんの "最強" かは存じ上
げませんが,実におめでたいですな."最強" には全く興味がないので,今後は貴方
の脳内最強決戦にはノミネートしなくてもいいですよ.まぁ,ノミネートしていただ
けるだけでも光栄なのかもしれないですが.ではさようなら.
- 707デフォルトの名無しさんsage03/10/31 22:31
- なんだかんだで「最強」の一語に大興奮の図
- 708デフォルトの名無しさんsage03/10/31 22:43
- >>702
きっとXML
- 709デフォルトの名無しさんsage03/10/31 23:00
- >>704
(゚Д゚)ハァ?
MLって言ったらOCamlとかHaskellとかCleanとかあるだろ
- 710デフォルトの名無しさんsage03/10/31 23:05
- >>649
配布ライセンスが1ユーザ当り7マソ円だという罠があったりして。w
- 711デフォルトの名無しさんsage03/11/01 01:35
- 結局>>704は似非か…
- 712デフォルトの名無しさんsage03/11/01 03:52
- >MLって言ったらOCamlとかHaskellとかCleanとかあるだろ
(゚Д゚)ハァ?
- 713デフォルトの名無しさんsage03/11/01 04:24
- まあ、スレ違いなので関数型言語スレにでも移動しろ
- 714デフォルトの名無しさんsage03/11/01 15:43
- だんだん話がずれてきたので、話題転換
もうすぐCMUCL19aがリリースしそう。
目玉は
スタンドアローン実行イメージ作成機能
MIPS,Alphaのサポート
simple-streamの実装
あたりか
スタンドアローン実行イメージにはかなり期待。
- 715デフォルトの名無しさんsage03/11/01 16:37
- >MIPS,Alphaのサポート
最近はすたれてるイメージがあるな。
- 716デフォルトの名無しさんsage03/11/01 17:53
- CMUCLがクロスプラットフォームになる事自体はいい傾向かと。
しかし、どうせならDarwin/PPC(MacOSXね)とかCygwin方面に拡大した方がいいじゃないのかという気はする。
- 717デフォルトの名無しさんsage03/11/01 18:23
- MacOS X は Pierre Mai タンがコソーリ作業してるみたいだよ.19a に間にあうかは知らな
いけど.Cygwin は聞いたこともない.デベロッパーは誰も Cygwin やってないみた
いだから,誰かやりたい人がでないとなぁ….SBCL 方面でも Windows 環境は作業し
てるいないみたいだし….
- 718デフォルトの名無しさんsage03/11/01 18:47
- これかな?
ttp://www.mail-archive.com/cmucl-help@cons.org/msg00650.html
- 719デフォルトの名無しさん03/11/04 09:39
- 昔に書いたObject Pascal(Delphi)のプログラムを、久しぶりに読んでみたんだけど、
いや〜、型、型、型、データ型のことばかりいつも考えていたんだろうなって
思うようなコードでした。別の言い方でいえば効率のことばかり考えていたというか。
それに比べて現在はLispやPerlなど動的な型を持つ言語でプログラミングすること
が多いのですが、コーディング中の気持ちよさが段違いですね。
まっ、現在はプログラムの実行速度を追い求める気持ちが減少したということかな。
実用上問題になった段階で、ボトルネックを局所的に、最終的にはアセンブラを
使うことも視野に入れて最適化すればいいやという心境になりました。
Lispでのコーディングスタイルを画家がスケッチしながら絵を描くようなもの
とPaul Grahamさんが指摘していますがまったく同感です。
- 720デフォルトの名無しさんsage03/11/04 10:12
- 昔に竹内郁雄先生が共立出版のbitという雑誌に書いた、Common Lispへの
批判を、どなたか覚えていたら教えていただけませんか?
もしくはインターネット上で読めたら幸いです。
- 721デフォルトの名無しさんsage03/11/04 18:46
- bitなら図書館で読める気がする
- 722デフォルトの名無しさん03/11/05 03:40
- MLは型 型 型 だらけの世界だが気持ちよく射精しながらコーディングできるぞ
- 723デフォルトの名無しさんsage03/11/05 07:26
- >>722 いや、お説ごもっとも。ところで、Lispだと未定義の関数とかを
呼び出しているコードをとりあえず書いといて、その他の実際に定義を書いた
関数を呼び出している部分を臨時にその場で動作テストするといった
開発スタイルをとれるのですが、MLではどうですか?
- 724デフォルトの名無しさん03/11/05 07:58
- MLの型チェックって開発中のいつの段階でやるんだろう?
Lispの型チェックは、一般的な処理系では実行時にやるのが多いみたいな
気がします。しかしcmuclという処理系ではコンパイル時に、明示的な型宣言の
チェックはもちろんだけど、データ型の宣言が無くても、コードを解析して
推測してくれます。そしてコンパイラはその結果を報告してくれます。
そのコンパイラからの忠告を無視して無理やり実行することもできます。
そして実行時にエラーが発生したときは、コードの中でしておいた
safe 宣言の度合いによって、実行時にクラッシュしたり、デバッガが
立ち上がったりします。
- 725デフォルトの名無しさん03/11/05 09:03
- プログラム言語のパラダイム(構造化プログラミング(C, Pascal, ...)、
オブジェクト指向(Simula, Smalltalk, ...)、関数(ML, Haskell, ...)、
一行野郎(Perl, ...)、最小機能で最大機能(Scheme, Forth?)、
マルチパラダイム(C++, Common Lisp, Perl, Ada?...),,,,,,
私は、上にあげたパラダイムのようなものは、何となく感じをつかんだつもりです。
さぁ、次はどんなパラダイムを体現した言語を勉強したら楽しいのでしょう?
現在はCommon Lispに熱中しています。プログラミングとは無縁の職業に就いている者です。
- 726デフォルトの名無しさんsage03/11/05 09:21
- >>725
多分、言語を駆使してプログラミングする時代が終わる。GUI でオブジェクトを配置、接続して
ロジックを記述するようになる。文字を使うのはリソースやパラメータとしてのみ。
- 727デフォルトの名無しさん03/11/05 09:35
- >>726
来ない来ない来ない来ない
- 728デフォルトの名無しさんsage03/11/05 09:40
- >>726
Smalltalk触ってください
- 729デフォルトの名無しさん03/11/05 09:50
- >>726
GUIといってもVisual BasicやDelphiなんかのプログラミングと違って、
ロジック自体が絵のようなもので表現されるということですね。
たしかに文字で書くより絵にしたほうが人間にとって理解しやすいことって
ありますよね。回路図や地図とか。
そういうパラダイムってたしかVisual Programingという分野として
確立されていませんでしたか? もし有名な言語
(とはもういえないか図だから)というか処理系、つまりいじってみる
ことができるものがあれば、教えてください。
comp.lang.lispで活躍されているErik Naggumさんは、これからは、
人間がプログラムを書くのではなく、機械がかってに書いてくれるように
なると言っていました。それ以上の説明がなかったので私には理解不能
でした。
あと、Emacsの前身となったエディタを書いたり、Javaの設計をやったSunの人
もある公演で、いまわれわれは、ターミネーターのような世界になるいっぽ
手前にあるのだみたいなことを言っていましたね。これも「はぁ?」という
感じでした。
- 730デフォルトの名無しさん03/11/05 09:59
- ちなみにLispだと図や絵をアスキーアートとして表現する言語
を普通のLispコード内で即席に設計、実装するのが楽です。
これはマクロというLisp独特の機能を使います。
- 731デフォルトの名無しさんsage03/11/05 10:07
- >>730
あれ?これとそっくりな意見をどこかで見た気がする。deja vuかな? 気になる。
- 732デフォルトの名無しさんsage03/11/05 10:32
- >> 731 このスレの前の方でもこの話題がでてきたよ。
- 733デフォルトの名無しさんsage03/11/05 11:06
- 人間が何かを表現するときに文字と絵(図像)は有力な道具となります。
だから、本には文字がいっぱいあるし、本でも文字で説明が難しいときは
図で説明するでしょう。
ここでは文字と図像を独立した概念としてとらえていますが、われわれ
東洋人、つまり漢字圏に生きるものにとって、図像としての文字という
考え方はなじみ深いものがあるでしょう。つまり文字と図の区別って
あいまいだなという考え方が出てきます。
Lispのプログラムは括弧が多すぎていやだという人がいますが、熟練した
Lispプログラマは括弧が気にならないといいます。ではなぜ気にならない
のかといえば、インデント(字下げ)を使って書いているからです。
Lispのプログラムをコンピュータの画面に映して遠くから眺めてみると、
処理の単位を木の葉とした木のように見えます。そしてもはや括弧は見え
なくなります。
つまりプログラミング言語でインデントしながらプログラムを書くという
行為は知らず知らずのうちに、図像が人間の脳に訴える力を利用している
ということです。こういう意味において字下げがロジックを表す手段として
利用されているPythonを設計した人は、字下げの重要性を感じていたのかも
しれません。
- 734デフォルトの名無しさんsage03/11/05 12:07
- >> 733
> つまり文字と図の区別ってあいまいだなという考え方が出てきます。
私は速読の訓練をしたことがあるのですが、速読では本のページ全体を
絵や写真を見るように脳の中に記憶します。そして瞬間的にすべてを
理解します。
ここで言う理解とは、本を読んだ後で内容について質問されたときに、答える
ことができるという意味です。
Lispの達人たちがハックしているときって、やっぱりそんな瞬間理解能力を
知らず知らずのうちに発揮しているのではないでしょうか?
だからプログラミングの達人と初級者では生産効率が恐ろしいほど違うという
結果になるのではないでしょうか?
- 735デフォルトの名無しさんsage03/11/05 14:53
- > GUI でオブジェクトを配置、接続してロジックを記述するようになる。
Lisp とは関係ないけど、こういうの。
http://images.google.com/images?q=labview&num=100&hl=ja&lr=&ie=UTF-8&oe=UTF-8&c2coff=1&sa=N&tab=wi
- 736デフォルトの名無しさんsage03/11/05 15:05
- 3 次元のものだと、こういうのもある。
ttp://ryujin.kuis.kyoto-u.ac.jp/ylab/yamakaku/Visulan/
- 737デフォルトの名無しさんsage03/11/05 16:41
- >>736
このプログラム画像をlispに翻訳してくれ
- 738デフォルトの名無しさんsage03/11/05 17:23
- ttp://ryujin.kuis.kyoto-u.ac.jp/ylab/yamakaku/Papers/Wiss95/wiss95p04r100.gif
なんじゃこりゃあ。っていうかパターンマッチしてひたすら書き換えてくだけなのね。
- 739デフォルトの名無しさん03/11/05 17:58
- 以前この板でSchemeでEUC対応したインタープリターは無いとかの意見が
ありましたが、Scheme入門を読んでいたらSCMってEUC対応している
と書いてあります。SLIBもついているようだし、MITSchemeのEUC対応を
わざわざ待つ必要も無いのでは?
だれかSCM使っている人いませんか?Windowsでも使えるのかなぁ?
- 740デフォルトの名無しさんsage03/11/05 18:16
- 使えますよ。
Windows版はメンテ対象か知らないけど。
(ポーティングを別の人がやっていた)
- 741デフォルトの名無しさんsage03/11/05 18:39
- 次の世代のプログラム開発は、モデリング -> 具象化の形になるんじゃないかな。
UMLを使って必死に研究されてるはず。
- 742デフォルトの名無しさんsage03/11/05 19:38
- >>725
論理型、宣言型、遺伝型
- 743デフォルトの名無しさんsage03/11/05 20:12
- >>741
上流しかやらない人の妄想のような気も...
- 744デフォルトの名無しさんsage03/11/05 21:14
- 下流工程はネット時代の流通業と同じようになってしまうんかね
- 745デフォルトの名無しさんsage03/11/06 01:20
- 昔マシン語覚えた人が今使わなくなって
無駄になってしまったようなことがないように、
今一つ覚えるとしたらどれ?
- 746デフォルトの名無しさんsage03/11/06 01:34
- マシン後を使わなくなった=無駄になったと思うような人はプログラマに向いてないと思うよ。
- 747デフォルトの名無しさんsage03/11/06 01:40
- 言語を使う/使わないとは関係無く知っていればそれだけ視野が広くなる。
良いものであれば、何がよいのか、何故よいのか、が分かるようになるし、
ダメなものはダメなりに、何がダメなのか、何故ダメなのか、がはっきり分かるようになるし。
- 748745sage03/11/06 05:24
- すみません。そういうつもりで書いたんじゃなかったのです。
>>746,747
おっしゃってることはすごくよくわかります。
自分でも常々そう思ってるので。
が、「今 COBOL を勉強中」「今 N88-BASIC を勉強中」とかいうと
ハア? といわれるような意味で、
どの言語がプログラミングで最も本質的なものを得られるか、と
質問したかったのです。
- 749デフォルトの名無しさんsage03/11/06 06:43
- 向き不向きがあるだけ。
- 750デフォルトの名無しさんsage03/11/06 08:06
- >>748
> が、「今 COBOL を勉強中」「今 N88-BASIC を勉強中」とかいうと
> ハア? といわれるような意味で、
言われてもいいじゃないか。そして意識の上ではその言語を忘れてしまった
ように感じても、無意識レベルでは色々な影響を与えてくれるだろう。
たたき上げプログラマの俺から言わせれば、とりあえず触れるもの、つまり、
いま自分が使っているマシンのアセンブラでプログラムを書いてみるのを
すすめる。
- 751デフォルトの名無しさんsage03/11/06 09:00
- >>745
敢えて答えるとLisp系
ぜったい長生きするよ、少なくともJavaよりは長生きする。いつまで
たっても、わかるやつだけわかるというマイナーな存在のままだが..
- 752751sage03/11/06 09:13
- LISPスレと気づかずに間抜けなこと書いちまったよ
- 753デフォルトの名無しさんsage03/11/06 10:18
- でも、さすがに COBOL, N88-BASICで ハア? なのは、正しい感覚だと思う。
得られるものが無いとは言わないけど、他の言語を学んで得られるより遥かに少ない。
無意識レベルでの話で、アセンブラ、Lispはごもっとも。後は pure な関数型言語も。
俗世で使うなら、C,Java あたりか。 ん、ありきたりでスマソ。
- 754デフォルトの名無しさんsage03/11/06 10:25
- CはJavaよりも長生きすると思う。
抽象化したアセンブラとしての使われ方が確立されてるから。
- 755デフォルトの名無しさんsage03/11/06 15:29
- >>754
ん?新しいCPUのVMは何で書くの?
- 756デフォルトの名無しさんsage03/11/06 15:32
- VMってなんの略のつもりですか?
- 757デフォルトの名無しさんsage03/11/06 17:34
- ヴァカ蔓延
- 758デフォルトの名無しさんsage03/11/06 19:15
- バーチャルマシン(Virtual Machine)といえば、マイクロソフトのC#関連の
やつにCommon Lispは無理だろうけど、Schemeの実装なんてあるのかな?
たしかhaskellかMLは研究者がマイクロソフトに集まって実装している、
もしくは実装したと言ってたけど。
- 759デフォルトの名無しさんsage03/11/06 19:44
- 使った事無いけど
* Hotdog Scheme http://rover.cs.nwu.edu/~scheme/
MS が金出してたみたい
* Bigloo http://www-sop.inria.fr/mimosa/fp/Bigloo/
CLR 用のコードを吐けるようになったらしい
そういえば、C# 2.0 では lambda と closure が使えるんだって
http://msdn.microsoft.com/vcsharp/team/language/default.aspx
- 760デフォルトの名無しさんsage03/11/06 20:08
-
continuation(継続)って
セットジャンプ<->ロングジャンプみたいなものでつか?
- 761デフォルトの名無しさんsage03/11/06 20:13
- +環境かな
- 762デフォルトの名無しさんsage03/11/06 20:14
- >>753
漏れは学ぶんだったら、アセンブラと Lisp を勧めるけどな。
コンピュータアーキティクチャに一番近い言語と遠い言語だけど
この二つの言語の概念的なものを理解していれば無敵じゃ。w
- 763デフォルトの名無しさんsage03/11/06 20:35
- >>762
そうかなあ、VisualBasicとかのGUIをマウスで構築したりする奴(RADとか言うらしい)の方が
よっぽどハードウェアに遠いと思うけど。
- 764デフォルトの名無しさんsage03/11/06 20:36
- 無敵のあなたの実力を示してください。
- 765デフォルトの名無しさんsage03/11/06 21:39
- lisp の応用性が高いのは(特にマクロとか)、関数型だからというより、
記述もデータ構造もかっこによるリストであるとしたことによる
偶然の産物のような気がするんですけど、違いますか?
必然性はあるんでしょうか?
- 766デフォルトの名無しさんsage03/11/06 21:56
- >>763
表面的な事ではなく本質的な部分を理解されよ。w
- 767デフォルトの名無しさんsage03/11/06 22:29
- 記述もデータ構造もかっこによるリストであるとしたのは
万能関数evalを作るためだから必然性はあるよ。
- 768デフォルトの名無しさんsage03/11/06 23:09
- >>767
なるほど、必然的な意図があって
記述もデータ構造も同じ構造を取ったということですか。
- 769デフォルトの名無しさんsage03/11/07 00:20
- > 記述もデータ構造も同じ構造を取ったということですか。
ところで、同じ構造を取るには他にどんな選択肢がありえるんだろう?
って考えた。xmlとかキモそうだな。
<defun name="hoge">
<argument-list>
<arg name="x">
....
</argument-list>
<body>
....
</body>
</defun>
とかやるのかな?
- 770デフォルトの名無しさんsage03/11/07 01:02
- >>769
インデントを括弧の代わりにするのは?
- 771デフォルトの名無しさんsage03/11/07 07:54
- >>760
> continuation(継続)って
> セットジャンプ<->ロングジャンプみたいなものでつか?
C言語の setjmp<->longjmp のことだと仮定して答えると、setjmp<->longjmp
でできることは、continuation(継続)でもできる。
しかし、continuation(継続)はそこからもう一歩、一般化した考え方だ。
ここで、例をしめせばいいのだが、時間がない。
- 772デフォルトの名無しさんsage03/11/07 08:06
- >>770
> インデントを括弧の代わりにするのは?
どういうインデントをしたら見やすいコードになるのか。
C, C++などの他言語とはちがってインデントスタイル論争というのはLisp界では
あまり聞かない。そんなことをしてもせん無いことだとLisperは承知している
からかもしれない。
おれの意見では、あまりにも厳格なルールを作ってしまうのではなく、
コードの場所ごとに自分が見やすいインデントをすればいいと思う。
といっても、エディタの設定しだいで、だいたい決まってしまうけどね。
インデントを構文規則に取り入れてしまったスクリプト言語Pythonに対する
批判として、一行プログラムを書きづらいというのがある。
- 773デフォルトの名無しさんsage03/11/07 10:12
- >>769 http://pc.2ch.net/test/read.cgi/unix/1019926525/339-353
- 774デフォルトの名無しさんsage03/11/07 12:37
- >インデントを構文規則に取り入れてしまったスクリプト言語Pythonに対する
>批判として、一行プログラムを書きづらいというのがある。
一行プログラムなんてshで書けばいいんだよ。Perlみたいに
なんでもかんでも出来るようにするのが最善じゃないと思われ。
- 775デフォルトの名無しさんsage03/11/07 12:49
- >>774
正しいPythoner(って何?)はみんなそうあるのDeath!
- 776デフォルトの名無しさんsage03/11/07 17:23
- まぁ、Lisp だって一行プログラムには向いてないわけだが。一行プログラム
専用リーダーマクロでも作れば話は別だけど。
- 777デフォルトの名無しさんsage03/11/07 21:43
- >>632
Franz のセミナー行ってきたよ。
背中に「t」と書いたTシャツきてた講師には正直ヒキました。
- 778デフォルトの名無しさんsage03/11/07 22:14
- 胸に書くべきだったな
- 779デフォルトの名無しさんsage03/11/07 22:16
- nil とか #t じゃなかっただけマシだと思え。で、どうだった?
Web に公開されてるスライドみた限りじゃ Aserve と WebActions の
簡単な説明みたいだったが。ハカー向けというより素人さん向けって感じ?
- 780デフォルトの名無しさんsage03/11/07 22:32
- 休憩の時に coffep? (・∀・)ニヤニヤ とかされなかった?
- 781デフォルトの名無しさんsage03/11/07 22:44
- 最後はやっぱり allegrop? (・∀・)ニヤニヤ で終わったのだろうか。
- 782デフォルトの名無しさんsage03/11/07 22:52
- >>780-781
「(・∀・)ニヤニヤ」は外せない要素なのでつかw?
- 783デフォルトの名無しさんsage03/11/07 22:55
- 帰り際に sexp? (・∀・)ニヤニヤ と誘われたのだろうか。
- 784デフォルトの名無しさんsage03/11/08 00:02
- sex は predicate じゃないから sex-type にしないと変だよ、と小一時間
説教して嫌われないと。
- 785デフォルトの名無しさんsage03/11/08 00:27
- あ、ごめん、空気読めてなかった。
/巛 》ヽ,
ヾノ"~^ヽ,^
(´∀` リ < t
( つ旦O
と_)__) 旦
- 786デフォルトの名無しさんsage03/11/08 00:59
- A*m Supreme t-th
- 787デフォルトの名無しさんsage03/11/08 01:02
- 背中に λ っての見たときはビビった。Lisperだとtなのか。
- 788デフォルトの名無しさんsage03/11/08 01:04
- coffeep の発音は コーフィーピー? コーフィープ?
- 789デフォルトの名無しさんsage03/11/08 02:43
- t よりλの方がかっこいいな。
nil の方がいいか?
- 790777sage03/11/08 06:59
- >>779
ん、素人さん向けかな、セミナー聞いただけだと、
Allegro Serve は「Web Application Server ヲ何トLispデモ!」、
Allegro WebActions は「Struts を何とLispでも!」
Lisp 「でも」できる、じゃちょっとプレゼンがイマイチかと。
いまいちこなれてないセミナーでターゲット絞りこめてなかったよ。これから毎月やるらしいからよくなるかもしれない。
客「その Emacs(Meadow) がないと ACL は動かないの?」とかいう素朴な質問が出たり。
講師「Aserve では動的に変更ができます!」
客「Allegro CL だけの特徴じゃネェだろゴラァ!」というヤリトリがあったり。
講師「全部 Lisp とHTML の知識だけでokです、面倒な設定ファイルはいりません!」には、
ココロのなかで「単に Lisp で設定書くだけだろゴラァ」とつっこんでおきました。
ACL のトライアルCDスペシャルエディションとか、Basic Lisp Techniques という
Franzの冊子をもらいました(・∀・)ニヤニヤ
>>778
胸には(get-lisp-p)、背中は t だったかな
- 791デフォルトの名無しさんsage03/11/08 07:57
- >Basic Lisp Techniques
それはここにあるやつか?
http://www.franz.com/resources/educational_resources/
- 792デフォルトの名無しさんsage03/11/08 08:12
- >>790
lisp 以前に日本語を学べ
- 793デフォルトの名無しさんsage03/11/08 09:22
- > 講師「Aserve では動的に変更ができます!」
> 客「Allegro CL だけの特徴じゃネェだろゴラァ!」というヤリトリがあったり。
まあ、確かに Java とかでもできる。でも、処理系の枯れ具合とパフォーマン
スがまだまだ違うと思うんだけど、その辺どうなんだろう?
- 794デフォルトの名無しさんsage03/11/08 09:26
- Javaは速いよ。
- 795777sage03/11/08 10:36
- >>791 Basic Lisp Techniques
それだ、製本してあるけど中身同じだ
>>792
スマン、文章がばらばらだな鬱
- 796デフォルトの名無しさんsage03/11/08 12:12
- >>795 気にすんな.2ch なんだから,正確な日本語なんかほっとけ.意味が伝わりゃいいんだ.
素人さん向けか,まぁ,あんまりハカー向きで素人さんが置いていかれてたりしたらイメー
ジ悪いからな.Lisp の宣伝がんがれよ〜.>>Franz
ところでスペシャルエディションな CD な何がスペシャルなんだ?
- 797デフォルトの名無しさん03/11/08 14:10
- XAMLってどう思う?
- 798デフォルトの名無しさんsage03/11/08 17:12
- >>797
閉じるタグを書くのがめんどくさそう
- 799デフォルトの名無しさんsage03/11/08 17:19
- curlってどう思う?
- 800デフォルトの名無しさんsage03/11/08 18:36
- wget よりまし
- 801デフォルトの名無しさんsage03/11/08 18:42
- >800
いいボケでつね
- 802デフォルトの名無しさんsage03/11/08 21:13
- あのさあ、ACL使ってみて思ったんだけど.....
Allegroserveのどこがいいの?
MITのcl-httpの方がよっぽどレベルが高いわけだが。
- 803デフォルトの名無しさんsage03/11/09 05:10
- サポートが受けられるとか
- 804デフォルトの名無しさんsage03/11/09 07:44
- Emacs で scheme を書いているのですが、
edebug-defun の scheme 版ってありますか?
式が一つづつ評価されていく様子が目で追えればいいです。
それと、scheme-interaction-mode で scheme の式を評価したとき
display で表示される出力を確認する方法はありますか?
- 805デフォルトの名無しさんsage03/11/09 08:03
- schemeのどの処理系かが書かれてないので
その処理系のデバッガのマニュアル嫁としか答え様がない
- 806デフォルトの名無しさんsage03/11/09 08:05
- >>805
guileです。 scheme-interaction-mode がつかえるのはguileだけだと
思ってました。スマソ
- 807デフォルトの名無しさんsage03/11/09 08:08
- ならguileのMLで聞いた方が早いかもしれないよ
- 808デフォルトの名無しさんsage03/11/09 08:36
- scheme-interaction-mode は使ってないから知らないけど、
run-scheme してから scheme-mode のバッファ内で C-x C-e すれば
run-scheme の方に結果が表示される。
- 809デフォルトの名無しさんsage03/11/09 11:31
- Allegroは最高ですか? 最高です。
- 810デフォルトの名無しさんsage03/11/09 12:48
- Allegroは最高に値段が高い。
- 811デフォルトの名無しさんsage03/11/09 13:51
- >>809
Allegroserve -> cl-httpがあるだろ
Allegroの正規表現 -> フリーのperl互換regexがあるだろ
Allegroのcorba -> clorbがあるだろ
Allegroのclim -> Mcclimがあるだろ
Allegroのsocket -> ほとんどの処理系が標準で実装してるだろ
AllegroのSSL -> openssl用のアダプタがあるだろ
AllegroのRPC -> CMUCLは標準で実装してますが何か?
AllegroのXML-RPC -> フリーのXML-RPCがあるだろ
AllegroのODBC -> http://www.cliki.net/Databaseに山ほどあるわけだが
Allegroの外部ライブラリへの接続 -> そんなもん常識
Allegroのjlinker -> jacolでいいだろ
確かに、一つ一つのライブラリの質はまあまあだが結局大したことないじゃん
よって、Allegroの利点は
1.Windowsでしか使えないIDE
2.Windowsでしか使えないCommon Graphics
こんなもんに金をかける価値はなし。
- 812デフォルトの名無しさんsage03/11/09 14:02
- で,実際に使う処理系は何を選ぶ?
- 813デフォルトの名無しさんsage03/11/09 14:20
- Allegro 使ってフリーソフト作れる?
- 814デフォルトの名無しさんsage03/11/09 14:35
- UNICODE 対応やスレッド周りの評価が無いのは意図的なものですか?まぁ,ネタだと
思うけど.スレッドだけ見ても
CMUCL -> Lisp レベルのスレッドなのでパフォーマンスが…
SBCL -> ネイティブスレッドがあるけど,Linux オンリー.
じゃん.McCLIM は CVS 版使ってるけどまだまだリリース前の段階だし,Allegro の
と比べるのは無理だろ.Allegro は買う価値があるがあると思うけどね.
漏れは買えないから今日も CMUCL の Lisp スレッド.鬱だ.
- 815デフォルトの名無しさんsage03/11/09 14:36
- >>813
作れる
- 816デフォルトの名無しさんsage03/11/09 15:05
- >>814
別に意図的じゃないけどね。
AllegroのIMAP+POP
AllegroのGTKインターフェース
AllegroのCLX
Allegroのjil
.....
などなど、一つ残らず挙げるなんて面倒臭いことはやらん。
>>812
CMUCL
- 817デフォルトの名無しさんsage03/11/09 15:19
- >>811
それはある意味allegroの宣伝
- 818デフォルトの名無しさんsage03/11/09 15:41
- >>815
ランタイムライセンスはどうなるの?
http://jp.franz.com/base/product_runtime.html
- 819デフォルトの名無しさんsage03/11/09 15:54
- できる,の意味はソースで配れってことじゃない? Franz の OpenSource プロダクトみたいに
- 820デフォルトの名無しさんsage03/11/09 16:02
- >>811
そんなに沢山インストールするのが面倒なので ACL 買う。
ていうか ACL の話はもういいよ。
- 821デフォルトの名無しさんsage03/11/09 16:22
- >>819
バイナリを配ることは可能
- 822デフォルトの名無しさんsage03/11/09 16:34
- で、ACLっていくらなのよ。
- 823デフォルトの名無しさんsage03/11/09 16:39
- ところでさ、asdfの名前の由来ってなんなの?
ちょうどキーボードの左手の位置に"asdf"という文字列があって
非常に打ち込みやすいわけだがもしかしてそれを狙ってる?
- 824デフォルトの名無しさんsage03/11/09 16:41
- 左手しか使わないからむしろ打ちにくい。
- 825デフォルトの名無しさんsage03/11/09 17:54
- dvorak 使ってるからむしろ打ちにくい。
- 826デフォルトの名無しさんsage03/11/09 19:24
- >>822
http://www.franz.com/products/packages/
USD 599 (65,477円)から
ところで、ACLのランタイムライセンスって幾らよ?
- 827デフォルトの名無しさんsage03/11/09 20:44
- >>826
いくらなんだろうね. 上から使ってもいいよと
Enterprise が落ちてくるだけなので氏らね
- 828デフォルトの名無しさんsage03/11/09 21:39
- >>826
Professional Edition パッケージが599ドルってこと?
で、ランタイムライセンスが別途???
とにかくACLの最適化ありで自由配布可能な単体exe作れるなら
買ってもいいんだけど。
- 829デフォルトの名無しさんsage03/11/09 22:02
- >>828
http://jp.franz.com/base/map_packages.html
一番安いのは、Professional だろうからランタイム・ライセンスは別売りだなー。
ま、本体より高くはないだろうが。。
- 830デフォルトの名無しさんsage03/11/09 22:46
- Lisp in Small Pieces、ペーパーバックで出るみたい。
http://titles.cambridge.org/catalogue.asp?isbn=0521545668
買いやすくなった、かな。
- 831デフォルトの名無しさん03/11/10 09:15
- >>830
Lisp処理系の実装についての情報が豊富って昔に聞いたけど、初心者向けの
meta circular なやつかと思って(馬鹿です)あまり気に留めてなかったんだけど、
リンク先の紹介よんだら買いたくなってきた。
Lisp系の処理系はCでおふざけLispを書いてみたり、SchemeのC言語での実装を
見たり、cmuclのコンパイラのコードをちょっとつまみ食いしたくらいなんだけど
買って損は無いかな... 多分、読まなきゃ分からないことだな。
読んだことのある人の感想を希望!
- 832デフォルトの名無しさん03/11/12 17:52
- リストのパターンマッチの仕方のサンプルが色々載ってるサイトってありませんか?
- 833デフォルトの名無しさんsage03/11/12 23:53
- タープリ
- 834デフォルトの名無しさんsage03/11/13 01:08
- >>832
例えばこんなの。そんなに色々いらんだろ。
http://www.geocities.co.jp/SiliconValley-SanJose/7474/cmuclMemo.html#0019
- 835デフォルトの名無しさんsage03/11/13 06:41
- generator expr 導入は嬉しいね。早く使いたい。
- 836835sage03/11/13 06:44
- >>835 は、「ぱいそん、ぱいそん…」スレとの誤爆でした。誠に申しわけありません。
- 837デフォルトの名無しさんsage03/11/13 13:25
- Python 風味 generator をでっちあげてみる.
CL-USER> (setf gen (generator (* x x) for x range 3))
#<generator {4977E46D}>
CL-USER> (next gen)
0
CL-USER> (next gen)
1
CL-USER> (next gen)
4
CL-USER> (next gen)
nil
- 838デフォルトの名無しさん03/11/13 15:05
- flatline ◆r6EONKKhcc 氏の『On Lisp』の翻訳は素晴らしいage。
http://user.ecc.u-tokyo.ac.jp/~g340299/onlisp_j.pdf
(最終更新日 2003.10.14)
お元気ですか?続きを気長に待っております。
※ところで、やはり名前の由来はギブスンの『ニューロマンサー』ですか?
- 839デフォルトの名無しさんsage03/11/13 21:09
- Emacs lispの新スレたちますた。仲間なので貼り付け。
Emacs Lisp 2
http://pc2.2ch.net/test/read.cgi/tech/1068467385/
- 840Alyssa03/11/13 22:01
- schemeで、condを使ってifを定義できないのは何故?
- 841デフォルトの名無しさんsage03/11/13 22:35
- >>840
できるが?
- 842デフォルトの名無しさんsage03/11/13 22:52
- >>840
(define-syntax myif
(syntax-rules ()
((myif test then otherwise)
(cond (test then)
(else otherwise)))))
> (myif #t (display "t") (display "f"))
t
> (myif #f (display "t") (display "f"))
f
できるじゃねーか。それとも何か落し穴でもあるのか?
- 843デフォルトの名無しさんsage03/11/13 23:47
- (define-syntax myif
(syntax-rules ()
((_ test then otherwise)
(cond (test then)
(else otherwise)))
((_ test then)
(cond (test then)))
))
- 844頑張って考えよう!sage03/11/14 07:46
- >>840
SICPの問題1.6?あの本の問題で最初につまるのがそこだったりする。
その少し前の話題をよく読んで見なされ。
>>841-842で使われてるマクロ(特殊形式)と手続き作用の違いに注意
- 845デフォルトの名無しさんsage03/11/14 08:18
- (define (if a b) ...)で定義できないってこと?
- 846デフォルトの名無しさんsage03/11/14 08:29
- >>845
>>840 の文からすると逆じゃねーの?
- 847デフォルトの名無しさんsage03/11/14 09:33
- もまえら… >>840 が釣り or 宿題だとしたら…
- 848デフォルトの名無しさんsage03/11/14 09:49
- おじさんたち、宿題手伝ってくれてありがとう。また一緒に遊ぼうね。
- 849デフォルトの名無しさんsage03/11/14 09:55
- 釣り or 宿題でも、こっちが楽しめればいいじゃん。
- 850デフォルトの名無しさんsage03/11/14 10:48
- >>837
scheme風はこんなかんじか?
(define-syntax generator
(syntax-rules ()
((_ body _ var _ range)
(let* ((b (lambda (var) body))
(v 0))
(lambda ()
(if (< v range)
(begin
(set! v (+ v 1))
(b (- v 1)))
#f))))))
(define (next g)
(g))
> (define gen (generator (* x x) for x range 3))
gen
> (next gen)
0
> (next gen)
1
> (next gen)
4
> (next gen)
#f
うわぁ、なんかきもちわるい
- 851デフォルトの名無しさんsage03/11/14 11:57
- 普通に宿題だろうと思ったからヒント出したのよん
- 852837sage03/11/14 13:48
- >>850
Python 方面では流行りらしいからさー.漏れのは↓ですた.
(defclass generator ()
((target :initarg :target :accessor target)
(next-step :initarg :next-step :accessor next-step)
(get-step :initarg :get-step :accessor get-step)
(end :initarg :end :accessor end)
(func :initarg :func :accessor func)))
(defmethod next ((self generator))
(with-slots (target next-step get-step end func) self
(when target
(let* ((value (funcall get-step target))
(end? (funcall end value)))
(prog1
(and (not end?) (funcall func value))
(setf target (if end? nil
(funcall next-step target))))))))
(defmethod make-generator (fun (target cons))
(make-instance 'generator :target target :next-step #'cdr :get-step #'car :end #'null :func fun))
(defmethod make-generator (fun (target integer))
(make-instance 'generator :target 0 :next-step #'1+ :get-step #'identity :end #'(lambda (x) (>= x target)) :func fun))
(defmacro generator (fun for var in target)
(declare (ignorable for in))
`(make-generator #'(lambda (,var) ,fun) ,target))
- 853sage03/11/14 18:37
- Lisp,Schemeとは直接関係ないですが、
[フォン・ノイマン生誕100年]という事で数学セミナーの今月号(12月号)に
和田英一「フォン・ノイマンの自己増殖機械」
竹内郁雄「ノイマンと非ノイマン」
という文章が載っています。
- 854デフォルトの名無しさん03/11/14 21:14
- mcclim正式リリース記念age
- 855sakura03/11/14 21:29
- >>840です。
>>844さんのお察しの通り、SICPの問題1.6で悩んでいます。
独学中なので、こちらしか頼れる所が無いので
低レベルですけれど、これからも宜しく御願いします。
でも、皆さん優秀ですね!
どうやってマスターされたのでしょう?
- 856844sage03/11/14 21:45
- >>855
私の場合,悲しいことに,ネットを徘徊していて
その解答を見つけてしまいました.
- 857デフォルトの名無しさんsage03/11/14 23:09
- SICPは、ちゃんと「読んで理解」していれば分かるだろう
教科書なんだし
- 858デフォルトの名無しさんsage03/11/15 00:59
- >>855
昔おれが質問した解答が
過去すれにあると思う。
- 859デフォルトの名無しさんsage03/11/15 10:04
- ややスレ違いですみませんが、どなたか教えていただけないでしょうか?
ある人工知能分野の重鎮が以前(苦渋を込めて)発したとされる言葉なのですが、
「常識というものは、理論物理学の先端などよりも、はるかに高度な概念なのだ」
これ、誰の、いつの言葉でしょうか?
マッカーシーかミンスキーあたりだと思っていたのですが、検索しても見つかりません。
- 860flatline@Vim%Chalice ◆r6EONKKhcc sage03/11/15 19:42
- >>838
元気ではありますが,最近はそちらに割く時間が取れず,更新が滞ってます.
(期待していただいている方には申し訳ないとは思っておりますが)
# "Neuromancer" は衝撃的でした
- 861デフォルトの名無しさんsage03/11/15 19:46
- >>860
今印刷して読んでます.なかなかむずかしい.
- 862デフォルトの名無しさんsage03/11/16 05:27
- >>860
ありがたく読ませていただいてます。
- 863デフォルトの名無しさんsage03/11/16 18:42
- On Lispのchooseにはビックリした。
こういうのschemerにとったら普通なの?
- 864デフォルトの名無しさんsage03/11/16 20:49
- >>860
字句的スコープってレキシカルスコープでいいんでない?あえてそうしてる?
ありがたく読ませてもらってます。
- 865デフォルトの名無しさんsage03/11/16 21:47
- 読んでないけど、レジシカルスコープを字句的スコープなんて
かかれてたら面食らうな
- 866デフォルトの名無しさんsage03/11/16 21:52
- レジシカルスコープなんてかかれても面食らう訳だが。
- 867デフォルトの名無しさんsage03/11/17 00:05
- ピアソンの「プログラミング言語Scheme」では「字句構造によるスコープ制御」と訳してあった
- 868デフォルトの名無しさんsage03/11/17 10:48
- >>865
すごく素朴なことを訊くけど、発音は「レジシカル」なの?
ずっと「レキシカル」と読んできたし、辞書にもそれっぽく書いてあるのだけど?
http://www.sanseido.net/sup/ItemPane.asp?P0=10&P1=MAIN,NODE,99389
- 869デフォルトの名無しさん03/11/17 15:46
- schemeで8パズルのプログラム教えてください。
- 870デフォルトの名無しさんsage03/11/17 16:00
- ワラタ
- 871デフォルトの名無しさんsage03/11/17 16:33
- >>869
サムロイドの15パズルの縮小版のことですか?
8パズルの何をするプログラムですか?
宿題ですか?
(display "8 puzzle")
(newline)
- 872デフォルトの名無しさんsage03/11/17 17:53
- 仕様をもうちょっと具体的に述べてくれれば懇切丁寧に教えますよ.
シュクダイ? (・∀・) ヒトノタメニナラナイコト、ダイスキダカラオシエチャウヨ
- 873デフォルトの名無しさん03/11/17 19:26
- depth-first-searchを使ったプログラムなんですけど明日、学校に行って詳しい事聞いてきます。よろしくお願いします
- 874デフォルトの名無しさんsage03/11/17 19:35
- >>873
アルゴリズムの問題だな
全通り(無限だが)の動かし方を網羅した木を考える
その木を根から葉に向かって探索する
ある方法が同じ動かし方をぐるぐる繰り返していると分かったら
その方法は解でないと判断してその方法へ分岐した内部頂点へ戻り
解が見つかるまで探索を繰り返す
バックトラックがキーワードか?
- 875デフォルトの名無しさんsage03/11/17 19:41
- >>873
http://www.geocities.co.jp/SiliconValley-Oakland/1680/xperl/perl14.html
ここの8パズルの項を参照
- 876872sage03/11/17 22:16
- 漏れよりもさらに凶悪なエスパーどもが活動を開始したか…。8 puzzle は
既にとけたも同然だがコピペできない程度の寸止めだな。寸止めする意味は
あまりなさそーだが…。
(・∀・) モンダイもわからずに質問とはおめでてーな。はやく聞いてこいゴルァ >>873
- 877デフォルトの名無しさんsage03/11/18 03:26
- それまでの盤面を保存して、
次の手を考えるときにそれまでにあった局面は排除すればいいのかな。
あんまり速くなさそうだけど。
(define (eight-puzzle x)
(let loop ((x (list x)))
(if (end? (car x)) (answer x)
(map loop (next x))
(next x)で((next1 . x) (next2 .x) (next3 . x))なリストを返すと。
- 878デフォルトの名無しさん03/11/18 11:28
- 足りない部分を付け足して8パズル作ってください。
頭の良い方お願いします!!!
(define (node-expand l)
(let ((lst (car l)))
(if (and (= (car lst 1) (= (cadr lst) 1)
(list (make-puzzl '(1 1) '(1 2) l)
(make-puzzl '(1 1) '(2 1) l))
(if (and (= (car lst 1) (= (cadr lst) 2)
(if (and (= (car lst 1) (= (cadr lst) 3)
(if (and (= (car lst 2) (= (cadr lst) 1)
(if (and (= (car lst 2) (= (cadr lst) 2)
(if (and (= (car lst 2) (= (cadr lst) 3)
(if (and (= (car lst 3) (= (cadr lst) 1)
(if (and (= (car lst 3) (= (cadr lst) 2)
(if (and (= (car lst 3) (= (cadr lst) 3)
(define (make-puzzl m n l)
(cons n (subst m n (cdr l))))
(eval (( )( )( )( )( )( )( )( )( )) )
(sort(( ) ( ))
((3 3)(1 1)(1 2)(1 3)(2 1)(2 2)(2 3)(3 1)(3 2))
(define subst
(lambda (new old lat)
(cond
((null? lat)(quote()))
(else (cond
((eq?(car lat) old)
(cons new (cdr lat)))
(else (cons (car lat)
(subst new old
(cdr lat)))))))))
(cons n (subst '(1 1) n (cdr l)))
- 879デフォルトの名無しさんsage03/11/18 11:44
- >>878
インデントしたらとんでもないことになった
- 880デフォルトの名無しさんsage03/11/18 11:49
- とりあえずコードの理解した分。
((3 3)(1 1)(1 2)(1 3)(2 1)(2 2)(2 3)(3 1)(3 2))
これが盤面を表していてcarが空白の位置かな。
node-expandが力技で次の盤面をつくる。
- 881デフォルトの名無しさんsage03/11/18 12:21
- (define (node-expand l)
(let ((lst (car l)))
(map (lambda (x) make-puzzl lst x l)
(cdr (assoc lst
'(((1 1) (1 2) (2 1))
((1 2) (1 1) (1 3) (2 2))
((1 3) (1 2) (2 3))
((2 1) (1 1) (2 2) (3 1))
((2 2) (1 2) (2 1) (3 2) (2 3))
((2 3) (1 3) (2 2) (3 3))
((3 1) (2 1) (3 2))
((3 2) (2 2) (3 1) (3 3))
((3 3) (2 3) (3 2))))))))
(define (make-puzzl new old l)
(let loop ((r (list old)) (l l))
(if (null? l) (reverse r)
(loop (cons (if (eq? (car l) old) new (car l)) r) (cdr l)))))
(define (end? x) (equal? x '((3 3)(1 1)(1 2)(1 3)(2 1)(2 2)(2 3)(3 1)(3 2))))
- 882デフォルトの名無しさんsage03/11/18 12:21
-
(define (next x)
(let loop ((lst (node-expand (car x))) (r '()))
(if (null? lst) r
(loop (cdr lst) (if (member (car lst) (cdr x)) r
(cons (cons (car lst) (cdr x)) r))))))
(define (answer x)
(for-each (lambda (x) (display x) (newline)) (reverse x))
(newline))
(define (eight-puzzle x)
(let loop ((x (list x)))
(for-each loop (next x))
(if (end? (car x)) (answer x))))
- 883デフォルトの名無しさんsage03/11/18 12:26
- (map (lambda (x) make-puzzl lst x l)は
(map (lambda (x) (make-puzzl lst x l))
さて動くかな。
- 884デフォルトの名無しさんsage03/11/18 12:36
- (loop (cons (if (eq? (car l) old) new (car l)) r) (cdr l)))))も
(loop (cons (if (equal? (car l) old) new (car l)) r) (cdr l)))))
- 885デフォルトの名無しさんsage03/11/18 13:26
- なんか間違いだらけだな。
(define (make-puzzl new old l)
(let loop ((r (list old)) (l (cdr l)))
(if (null? l) (reverse r)
(loop (cons (if (equal? (car l) old) new (car l)) r) (cdr l)))))
(define (next x)
(let loop ((lst (node-expand (car x))) (r '()))
(if (null? lst) r
(loop (cdr lst) (if (member (car lst) (cdr x)) r
(cons (cons (car lst) x) r))))))
- 886デフォルトの名無しさんsage03/11/18 15:00
- schemeがないのでelispで解いちゃったんだけど貼ってもいい?
- 887デフォルトの名無しさんsage03/11/18 15:05
- 869 :デフォルトの名無しさん :03/11/17 15:46
schemeで8パズルのプログラム教えてください。
elispじゃ分かんないんじゃない?
- 888デフォルトの名無しさんsage03/11/18 15:10
- (´・ω・`)ショボーン
- 889デフォルトの名無しさんsage03/11/18 15:14
- 別にここでもいいけど、elispスレに貼ったら?
http://pc2.2ch.net/test/read.cgi/tech/1068467385/l50
- 890デフォルトの名無しさんsage03/11/18 16:02
- >>886 貼っちゃえ貼っちゃえ。ぶっちゃけ 869 はどーでも良いや。間違って elisp 提出したらそれも一興。
- 891デフォルトの名無しさんsage03/11/18 16:33
- このスレは、869のレベルに合わせた実装でなんとか動くものをみんなで作ろうという、
とても高度な思考遊戯ですか?
- 892デフォルトの名無しさんsage03/11/18 16:44
- >>886
貼っちゃってください
- 893デフォルトの名無しさん03/11/18 23:22
- 作って作って(^-^)ノ
- 894デフォルトの名無しさんsage03/11/18 23:35
- schemeもlispもないのでrub(ry
- 895デフォルトの名無しさんsage03/11/18 23:49
- >>894
おまえは私の眠りを妨げた.おろかものめ!
- 896名無しさん@Vim%Chalicesage03/11/19 00:00
- OnLisp 11章からレキシカルって書いてあるね。
- 897デフォルトの名無しさんsage03/11/19 15:03
- lexical の発音を無理やり日本語にしろと言われたら、「レクスィクル」。
でも漏れが今まで読んだ計算機関連の文章の中で、カタカナ表記では
「レキシカル」以外は見たことがない。
ちなみにコンパイラ関連でyaccと一緒によく使うlexは「字句解析器」かな。
「レキシカルスコープ」に一票。
- 898デフォルトの名無しさんsage03/11/19 15:29
- lexical のままでいいよ。めんどくさいから。
- 899スレ違いsage03/11/19 17:29
- Effective Perl(吉川訳)だと「字句解析的スコープ」なんて訳してたりする
- 900デフォルトの名無しさん03/11/19 17:46
- >>899
それはちょっとどうしようもない訳ですね。翻訳者が何もわかっていないのがまるわかり。
lexical scopeはstatic scopeと同義だから、静的スコープと訳してしまってもいいのでは?
ところでscopeって何て訳すのがいいのかな。「有効範囲」という訳は見たことあるけど。
- 901デフォルトの名無しさんsage03/11/19 17:46
- >>899
微妙な日本語英語にされるよりはそっちがいいね。
- 902デフォルトの名無しさんsage03/11/19 17:47
- 意味的には「見たまんまの」って感じでしょ?>レキシカル
- 903デフォルトの名無しさんsage03/11/19 19:05
- 字句的が一番だろ。
レキシカルなんて、意味わかんねーよ。
でなかったら、textualだな。
- 904名無しさん@Emacssage03/11/19 19:25
- ちょっと質問なのですが、
gclから他のコマンドやシェルスクリプトを呼び出して、
その標準出力を文字列としてgcl側で受けとるということは
可能なのでしょうか?
イキナリでごめんなさい。
- 905デフォルトの名無しさんsage03/11/19 19:39
- マニュアルに載ってるんじゃない?
systemとかprocessって名前で。
- 906デフォルトの名無しさんsage03/11/19 19:50
- とりあえず,外部コマンドを実行してストリームに出力する関数さえ
見つければ with-output-to-string 使って簡単にできるだろう.
gcl 手元にないけど CMUCL だと↓みたいな感じ.
(with-output-to-string (s) (run-program "ls" nil :output s))
- 907899sage03/11/19 20:47
- 「字句解析的(コンパイル時に決定される)スコープ」て
ちゃんと書いてあった。(my変数の説明)
別に訳者を悪く言うつもりじゃなかったんだが…すまん
- 908デフォルトの名無しさんsage03/11/19 22:47
- マニフェストとかよくわからんカタカナ並べられるよりは
manifesto と書いてもらった方がしっくりくる。
カタカナ英語の意味には日本人の感違いしたニュアンスが入ってる
ことがよくあるんで、よほど一般的な単語でない限り使うなと思うね。
- 909国研sage03/11/20 00:01
- 感違い → 勘違い
- 910flatline@Vim%Chalice ◆r6EONKKhcc sage03/11/20 00:05
- 日々の授業とレポートと学園祭でデスマ入っているOn Lisp訳者です.
# 3時4時までJavaです...
術語は悩みの種です.いっそ原語表記にしちゃおうかとも思います.
(売り物の本では「訳してないぞ」的批判を避けるために原語を取り除くのでしょうが,
私の場合はその心配はありません.ちなみに現段階でも並記してる部分もあります)
ただ片仮名9文字の「レキシカルスコープ」より漢字片仮名交じり7文字の
「字句的スコープ」の方が目に優しいと思います.その点は他でも考慮しました.
私の持っている培風館のCの本ではscopeは「有効範囲」でした.それだと漢字のみ7文字.
ただ,今は先へ先へと進めるのが優先なので (最近進んでない) その辺は後回しにさせて下さい.
そもそもなぜlexicalが一般化したのでしょう.私ならsyntacticかcontextualにしますね.
初めて「レキシカル」という言葉を知ったときは,しばらく理解できませんでした.
lexical(辞書の,語彙の)は意味以前の,文字同士の関係に関する言葉ではないでしょうか.
まあしょせん素人ですけど.lexical, syntactic, grammatical, semantic...
# lexicalで擦れが盛り上がっててビクーリ
- 911国研sage03/11/20 00:14
- lexically delimited scopeって感じ?
- 912名無しさん@Emacssage03/11/20 00:40
- >>905
>>906
確かにgclの場合はsystemという関数があって実行できるのですが、
ストリームを指定することができず、標準出力にたれ流しになってしまいます。
system関数についてのマニュアルもあさったのですが、
何分"system"というそこかしこにある単語のためうまく検索できませんでした。
(そもそも載っていないような気も?)
もうちょっと調べてみます。ありがとうございました。
- 913デフォルトの名無しさんsage03/11/20 01:41
- >>912
> ストリームを指定することができず、標準出力にたれ流しになってしまいます。
これでいけるんじゃねーの? declare は書かなくても大丈夫だけど。
(with-output-to-string (s)
(let ((*standard-output* s))
(declare (special *standard-output*))
(system ...)))
- 914デフォルトの名無しさん03/11/20 11:27
- ACL購入記念あげ
- 91591403/11/20 11:36
- あれ?規制されてたと思ったのに書けちゃった。くだらないこと書いてごめんなさい。
仕事柄プログラミング言語に関する各種の本を読んできましたが、「静的スコープ」
や「レキシカルスコープ」とはいいますが、「字句的スコープ」という言い方
はしないようです。この文脈での"lexical"という英語と「字句的」という日本語は
微妙に意味が違うと思いますね。じゃあ何かいい訳は無いのかと言われても困り
ますが。私が以前ある文書を翻訳したときは、”lexical scope"は全部「静的スコープ」
にしてしまいました。元の文を尊重するという点ではだめなのかもしれませんが、
この場合意味するところは同じなので、変な訳語を創出するよりよく使われている
訳語にあてはめてしまう方が誤解がないと考えたのです。
- 916デフォルトの名無しさんsage03/11/20 12:37
- 時代は性的スコープだろう
- 917デフォルトの名無しさんsage03/11/20 12:47
- 覚書。
scopeとは、ある名前があるモノを束縛(binding)しているとき、その束縛が見える範囲。
extentとは、ある束縛関係が生き延びる範囲(lifetime)。
dynamic binding = dynamic scope + unlimited extent
lexical binding = そんな用語あったっけな。
Emacs Lisp は変数、関数とも dynamic binding だと elisp マニュアルに書いてあったと思う。
Common Lisp の変数は 何も言わなければ lexical scope。special variable として
宣言すれば dynamic scope。関数については忘れた。
Scheme は関数と変数の name space が同一。そしてlexical scope で unlimited extent だとR5RSに書いてあった。
shallow binding, deep binding は実装上のテクニック。
- 918デフォルトの名無しさんsage03/11/20 13:19
- >>917
scope と extent の説明で使われている「範囲」という言葉の2つの意味。
1つめは、ソースファイル内でのここからここまでという意味。
2つめは、ある関数や構文(let, flet, labels, ...)が実行中である、
この場合の実行中とは、その関数が他の関数を呼んでいる(そして
それが、また別の関数を...)場合も含める。
- 919デフォルトの名無しさんsage03/11/20 13:27
- >>918
ソースファイル上での範囲は「静的な」範囲で、
関数の実行時の呼び出し関係における範囲は「動的な」範囲。
- 920デフォルトの名無しさんsage03/11/20 13:43
- うざい。
- 921デフォルトの名無しさんsage03/11/20 16:08
- Common Lispの開発環境で、Emacs lisp用のedebugみたいなソースレベル
デバッガがついたものはありますか?
Emacsのilispパッケージにはなさそうだし、昔ためしたAllegro Common Lisp
のWindows上のIDEにもなさそうでした。
- 922デフォルトの名無しさんsage03/11/20 19:13
- >>914
おっ金もっち〜。
- 923デフォルトの名無しさんsage03/11/20 19:40
- 前スレ、html化してもらいました。
まあ、このスレもそろそろ落ちそうですが。
LISP Scheme Part7
http://ruku.qp.tc/dat2ch/0311/20/1042167213.html
- 924デフォルトの名無しさんsage03/11/20 20:07
- >>893 ある意味、神というか才能だろうな。かなり数の居た暇にあかせて宿題でも解くか〜
という連中をたったの1レスで殲滅するとは…。大物になれるよ。ほんと。
- 925デフォルトの名無しさんsage03/11/20 22:30
- >>924
>>894 じゃないか?
- 926名無しさん@Emacssage03/11/20 22:48
- >>913
コードまで書いてもらえるとは・・・。ありがたいです。
実際にやってみたのですが、やはり標準出力にたれ流しになってしまい、
式自体の値は""になってしまいました。
現在はとりあえずの処置として、コマンドの出力をリダイレクションして
そのファイルを読み込むようにしていますが、不格好なことこの上ない感じです。
もうちょい調べてみますね。
- 927デフォルトの名無しさんsage03/11/20 23:00
- >>926
>>913 がだめだとするとその関数くさってるね。Lisp コードレベルではどう
しようもない可能性がある。それと "(system " とかで検索した?
- 928デフォルトの名無しさんsage03/11/20 23:41
- ここで聞いたらひどいかもしれませんが、日本でLISPはなぜ人気がないのでしょうか?
人気がない=糞言語という意味ではありません。メジャーじゃないんではないかという疑問です。
- 929デフォルトの名無しさんsage03/11/20 23:52
- >>928
括弧だらけで気持ち悪いからだろ
- 930デフォルトの名無しさんsage03/11/21 02:02
- (●)(●)(●)(●)(●)
- 931デフォルトの名無しさんsage03/11/21 02:58
- >>928
日本以外では人気があるとでも?
- 932デフォルトの名無しさんsage03/11/21 05:26
- >>931
漏れもそれが知りたい。
- 933デフォルトの名無しさんsage03/11/21 07:16
- アメリカの話しか聞いたことないよね。ヨーロッパとかアジアではどうなんだろ?
- 934名無しさん@Emacssage03/11/21 13:00
- >>928
俺もずっとそう思ってました。
Lispについていろいろ解ってくると、
「なんでこんなに面白くてパワフルな言語なのにみんな使わないんだろ?」
と疑問を感じることが多いです。
身近な友人にデモを交えてLispを説明したことが何度かあるのですが、
みんなLispに対して「処理が遅い」「表記が特殊で難しい」
「実績がない」などの誤解をしていることが多いようです。
あと、自分の使うプログラミング言語に対して
わりと保守的な姿勢を取る人間が多いんですよね。
「自分の使ってる言語はメジャーだから良い言語なのだ」という
盲信がけっこうあるような気がします。
- 935デフォルトの名無しさんsage03/11/21 13:11
- >>933
フランス: CMUCL のデベロッパーの Eric Marsden
イタリア: EncyCMUCLopedia の編集者 Paolo Amoroso とか arnesi, FiveFM の Marco Brainger
ドイツ: CL-PPCRE の作者の Edi Weitz
とかを始めとして、ヨーロッパ圏のデベロッパーも結構居るだろ。
http://www.cliki.net/xearth
まぁ、928 よ。C/C++ ほどメジャーではないのは常識だぞ?
- 936名無しさん@Emacssage03/11/21 13:15
- >>927
以前に試したのですが、googleだと"("が無視されてしまうので"system"という単語が
検索されてしまってうまくいかなかったです。
gclのInfo内も検索してみたのですがひっかかりませんでした。
あとgclにはhelp機能があって「(help '関数名)」とかやると
その関数の説明を表示してくれるのですが、
それでもダメですね。
gclってLisp処理系としてはあまり良くないのでしょうか?
CLOSも実装されてないみたいだし、ドキュメントも書きかけの
項目が多いし・・・
こりゃもうcmuclかclispに乗り変えるしかないですかね。
- 937デフォルトの名無しさんsage03/11/21 13:21
- >>934
括弧は伊達じゃない事に気づくのにどれくらいかかった?
漏れは lisper の開発風景を実際に見るまで、括弧ウザーと思ってたよ。
- 938デフォルトの名無しさんsage03/11/21 13:42
- >>936 gclにこだわる理由が何かあるのなら、子孫である EcoLisp(ECL-Spain)
なんかどう?
- 939938sage03/11/21 13:47
- > ECL-Spain, a member of the KCL Family, is a Common Lisp implementation forked from ECL.
> Since 2001 the source code of ECL-Spain becomes the official branch of the family,
> acquiring the name ECL and superseding the out-of-date implementation ECoLisp.
ということみたいだね。
ちなみに、ちょっと前のことだけど、CLOSみたいなのも付いてたよ。
GNU Info形式の英語で書かれたマニュアル付きでした。
- 940デフォルトの名無しさんsage03/11/21 13:54
- >>933
> アメリカの話しか聞いたことないよね。ヨーロッパとかアジアではどうなんだろ?
Lispを使う側じゃなくて、作る側の人だけど、GNU Clisp はドイツ人が開発しているでしょ。
clispのソースを読もうと思ったけど、コメントにドイツ語が結構あってめげました。
- 941デフォルトの名無しさんsage03/11/21 14:06
- アメリカでも AI winter の影響で「Lisp」という単語がトラウマになっている
人がいると聞いたことがあるよ。
Franz社が「Lisp」という言葉を前面に出したがらないなんて噂も聞いたことあるし。
今はどうかしらないけど。
- 942デフォルトの名無しさんsage03/11/21 14:29
- >>941
たぶん,その Franz の噂ってのは Paul Graham の Being Popular ネタだろうな.
http://www.franz.com/about/bios/fkunze.lhtml とかの話だろう.CLOS は出てくる
けど,Lisp という単語が出てこない.でも Franz 社のページにはしっかり今も昔も
CLOS, Common Lisp という単語が出てくるよ.
- 943デフォルトの名無しさんsage03/11/21 14:52
- >>937
Lisperの開発風景を見て何を思ったの?
- 944デフォルトの名無しさんsage03/11/21 14:55
- 暇があるときにLispに関わりのある、または、あった人のページをgoogleって
遊んでいます。以下の人は割りと有名だと思いますが、その他の人で面白そうな
人がいれば教えて下さい。
古株:竹内郁雄、和田英一、萩谷昌己、湯浅太一
敬称略
- 945デフォルトの名無しさんsage03/11/21 15:20
- >>943
それまで俺は、いちいち対応する括弧を入力してから中を書いていた。つーかそーゆうもんだと思ってた。
C とかで {} 対応させてから中書いてたから。で、ある日 Emacs スレで
http://pc.2ch.net/test/read.cgi/unix/1066719492/16
を見かけて lipser に操作画面を見せてもらったわけだ。S 式単位の編集を見て、な
るほど、括弧はただの無駄ではなかったんかと思い至ったわけ。
開発環境もおどろいたなぁ。コンパイラの警告やエラーの位置にソース上で下線が引
かれて、カーソルを合せると警告内容が表示されたりとか。漏れは C++ 派だったし、
警告なんて行数とファイル名くらいだと思ってたからビクーリした。
- 946デフォルトの名無しさんsage03/11/21 15:28
- >>944
中西正和、黒川利明、川合史朗
あまり思いつかん・・・。
>>945
(define ... (let ... (cond ... (else ...
ってあったら括弧入れるごとに
else,cond,let,define
よし全部閉じた。
ってやるもんじゃないの?
- 947デフォルトの名無しさんsage03/11/21 16:17
- >>945
>開発環境もおどろいたなぁ。コンパイラの警告やエラーの位置にソース上で下線が引
>かれて、カーソルを合せると警告内容が表示されたりとか。-snip-
これって、Emacs上での開発環境だよね?
聞いた話だけど、Symbolics なんかの Lisp machine 上での開発は、
もっとずっとすごかったらしいです。どうすごいのかは、comp.lang.lisp
でたまーに話題になったりします。
とは言うものの、C, C++, Java なんかの統合開発環境(IDE)も最近はいい線
いっているという話もありますな。
- 948943sage03/11/21 16:24
- >>945
なんだそんなことか…
- 949デフォルトの名無しさんsage03/11/21 16:53
- >>948 初心者にとっては、そんなことがLispを始めるときの第一関門になると思う。
- 950デフォルトの名無しさんsage03/11/21 17:19
- >>947
はい。Emacs でした。警告内容も「引数が VECTOR で SIMPLE-ARRAY じゃないから配
列アクセスの最適化ができねーYO!!」といった最適化のヒントと「未定義の変数 Y
ってなんだYO!!」といった警告とでは下線の色が違ってて見やすかった。
VisualStudio にもあーゆうのが欲しいなぁ。
Lisp マシンですか。やっぱ開発環境も凄かったのかなぁ。
>>948
妙な期待をさせてしまったようで申しわけないです。
- 951デフォルトの名無しさんsage03/11/21 20:05
- schemeを理解しよーとして、脳内でCに変換中。
空リストはNULL、nilは(他のLISPとちがい)単なるシンボルとして扱ってよいのかしら?
- 952デフォルトの名無しさんsage03/11/21 20:13
- nilなんてない。
- 953デフォルトの名無しさんsage03/11/21 20:19
- Cに展開しようとする辺り、まだ思考回路がこっち側にスイッチしてなさげ。
そのうちScheme/Lisp自身で考えられるようになれるようがんがれ。
- 954951sage03/11/21 20:30
- 説明読んでていきなりnilとか書いてあったんで、面食らってるところなんですー(;_;)
シンボルnilがソースリスト中に現れたら、
schemeでは特別な意味を持たないが、
他のLISPでは特別な意味を持つでよいのかしら。
>>953
へい、がんがりまし。
- 955デフォルトの名無しさんsage03/11/21 21:03
- awkで書かれたわずか500行のLispインタプリタ
awklispを読めばLispが理解できる
ttp://www.accesscom.com/~darius/
かも?
- 956デフォルトの名無しさんsage03/11/21 21:42
- >>955 >>133
- 957955sage03/11/21 22:07
- >>956
955は>>951の「schemeを理解しよーとして、脳内でCに変換中。」に対するレスです。
コードを脳内でCに置き換えるよりも、脳内にインタプリタを内蔵してしまうほうが早いので。
- 958デフォルトの名無しさんsage03/11/21 23:34
- scheme で
つい (setq a nil)
(if a hoge)
とかやって失敗する。
- 959デフォルトの名無しさんsage03/11/22 14:31
- >>954
>schemeでは特別な意味を持たないが、
>他のLISPでは特別な意味を持つでよいのかしら。
Common Lisp と Emacs Lisp では、空リスト ()とシンボル NILは
Lispのオブジェクトとしては同一。(eq '() 'nil) => t
そして真偽値における偽値として使用される。
(if '() '1 '2) => 2
(if 'nil '1 '2) => 2
nilも()も(って同一物だが)は評価(evaluate)すると自分自身になる。
nil => nil
Schemeでは偽値として#fを使う。
(if '() '1 '2) => 1
(if 'NIL '1 '2) => 1
- 960959sage03/11/22 14:34
- しまった... NIL と nil を混ぜて使ってしまった。
- 961スレ違いsage03/11/22 16:59
- 1ch.tv のLisp/Schemeスレはさびれているな。
というか1ch.tvって商売としてなりたっているのか?
- 962デフォルトの名無しさんsage03/11/22 17:11
- そもそも1ch.tvというのが何なのかさえわかりませんが(w
ところでそろそろ新スレじゃないですかね。
- 963デフォルトの名無しさんsage03/11/23 14:14
- Lisp歴は多少あるのですが、2ちゃんねるは初心者の者です。
新スレへの移行にあたって何か協力できることは無いかなと思っているんですが、
そこらへんの勉強をするための情報はどこにありますか?
とりあえず、新スレが立ち上がったら参考文献なんかの情報を補充したいと
思っています。
- 964デフォルトの名無しさんsage03/11/23 20:32
- >>963
>>1-10
- 965デフォルトの名無しさんsage03/11/23 22:03
- >>963
次のスレ立ては藻前に任せる。ガンガレよ。
- 966デフォルトの名無しさん03/11/23 22:22
- Lispのことはよく知らないオレに「マスターしたときの素晴らしい悟り」
というのを簡単に教えていただけませんか?
それと
http://www.shiro.dreamhost.com/scheme/trans/beating-the-averages-j.html
「LispのプログラムコードはLispのデータオブジェクトから出来ている。
それは、ソースコードは文字列で出来ていて、文字列は言語でサポートされている、
というようなつまらない意味じゃない。」
というのは、他のインタプリタのevalとは違うんでしょうか。
現在はjavaとかrubyあたりやってりゃいいかなと思ってるんですが
素晴らしい悟りが本当にあるならLispにチャレンジしようと思ってます。
- 967デフォルトの名無しさんsage03/11/23 22:31
- マスターしないと教えてもわかんないよ。ガンガレよ。
- 968デフォルトの名無しさんsage03/11/23 22:35
- >>966
そういう姿勢でいる限りおまいは何も得ることはできない
- 969デフォルトの名無しさんsage03/11/23 22:37
- 963じゃないけど立てました
次スレ
LISP Scheme Part9
http://pc2.2ch.net/test/read.cgi/tech/1069594582/
- 970デフォルトの名無しさんsage03/11/23 22:38
- 次スレ
LISP Scheme Part9
http://pc2.2ch.net/test/read.cgi/tech/1069594582/
- 971デフォルトの名無しさんsage03/11/23 22:57
- LISPのevalは単なるリスト処理なわけよ。
evalから見たら、いきなりリスト化された構文木が手元にあると思っていい。
後は意味解析して評価するだけの状態。
他の言語のevalだとまず見えないし、触れない。
- 972デフォルトの名無しさんsage03/11/23 23:15
- >>969
>12 笑た。
- 973デフォルトの名無しさんsage03/11/23 23:23
- それって単に人間プロセッサで構文木を作ってるだけじゃないの?
だとしたら人間にとって自然じゃないことをやってるから非効率だと思うが?
- 974デフォルトの名無しさんsage03/11/23 23:35
- >>973 マクロで構文は人間向けに調整されている。反復系の構文も
マクロ展開すると条件分岐と goto になるが、書く人間は意識しないしな。
for(int i=0; i<10; i++) { ... }
(dotimes (i 10) ...)
を見て、下のほうが人間にとって自然じゃなくて非効率だと思うなら仕方が無いが。
- 975デフォルトの名無しさんsage03/11/23 23:35
- 大袈裟に「人間プロセッサ」って言う程頭使う様に見えるのか。
- 976デフォルトの名無しさんsage03/11/23 23:36
- C言語 f()
LISP (f)
これだけの違い。
- 977デフォルトの名無しさんsage03/11/23 23:40
- >>973
それ言ったら、他の言語を習得することも人間プロセッサって言わないか?
- 978デフォルトの名無しさんsage03/11/23 23:44
- guile で define-syntax が通らん…
- 979デフォルトの名無しさんsage03/11/23 23:46
- >>977
いや普段前置記法で思考してないから
中置記法の数式を Lisp の数式に置き換えるのに手間取る
- 980デフォルトの名無しさんsage03/11/23 23:47
- >>966
まずreadで読み込んでLispで簡単に扱えるデータにしてる。
で、いじくるなりなんなりしてevalで評価してもらう。
こうするとevalではreadがやってくれるから文字列の解釈も必要なく
データの操作に専念できる。
データ自体を単純にするとデータの操作も簡単なもので十分になる。
仮にデータの操作が基本五関数の組み合わせで全てできるものとする。
この組み合わせを表現するプログラミング言語ができて
データからデータに変換をしてくれる。
入力データ -> プログラム -> 出力データ
このプログラミング言語をデータに変換できたとすると
入力データとプログラムをデータにしたものを入力に受け取って
出力データを返してくれるプログラムがあればよい。
[入力データ+プログラム] -> プログラム -> 出力データ
このプログラムもデータからデータの変換にすぎないので、
プログラミング言語の中でつくることができる。
これが万能関数evalである。
悟れた?
- 981デフォルトの名無しさんsage03/11/23 23:50
- 例えば
x = ( -b + sqrt( b * b - 4 * a * c ) ) / ( 2 * a )
みたいな数式を S 式に置き換えるのにこのスレの人はどれくらい掛かるの?
- 982981sage03/11/23 23:52
- 作業用の変数にバインディングするのは OK という条件で
- 983デフォルトの名無しさんsage03/11/24 00:00
- (setf x (/ (+ (- b) (sqrt (- (* b b) (* 4 a c)))) (* 2 a)))
にってこと?頭っから一発で書き下せるが…。確かに昔はめんどくさかったかも。
まぁ、中置記法リーダーマクロで
#$[x = ( -b + sqrt( b * b - 4 * a * c ) ) / ( 2 * a )]
ならコピペでもオッケーだがな。
- 984デフォルトの名無しさんsage03/11/24 00:01
- >>981
普通に式を書き下すだけの時間しかかからんが?
- 985デフォルトの名無しさんsage03/11/24 00:04
- よくわからんがこうして欲しいのか?
(set! x (/ (+ (- b) (sqrt (- (* b b) (* 4 a c)))) (* 2 a)))
- 986981sage03/11/24 00:13
- 実際に計ってみたら
がんばったのに30秒も掛かった…
- 987デフォルトの名無しさん03/11/24 02:18
- まあまあ
単に慣れの問題だよ。
- 988デフォルトの名無しさんsage03/11/24 04:31
- >>978 define-syntax は (use-modules ((ice-9 syncase))) すると使えるよ。
- 989名無しさん@Emacssage03/11/24 06:34
- >>938
さっきECL入れてみたんですけど、非常に良い感じです。
938はん・・・なんちゅう処理系を教えてくれたんや・・・
- 990デフォルトの名無しさんsage03/11/24 07:59
- >>987
義務教育で前置記法を標準にすれば、いいのにな
- 991デフォルトの名無しさんsage03/11/24 08:58
- SBCL 凄い事になってるね。コンパイラと思えぬサポートプラットフォーム数だ。
http://sbcl.sourceforge.net/
- 992デフォルトの名無しさんsage03/11/24 09:00
- >>990
(・∀・)イイ!! もう順番に悩まなくていいんだ.
カッコの種類にうるさい奴らも一掃.
- 993デフォルトの名無しさんsage03/11/24 10:08
- >>988
ありがとうございます
通りました
- 994デフォルトの名無しさんsage03/11/24 10:10
- >>990
後置記法ならともかく前置記法では頭の中で演算子スタックが必要になるのでは?
- 995デフォルトの名無しさんsage03/11/24 10:13
- >>992
複雑に括弧のついた Lisp プログラムをエディタの支援なしで読めるの?
適切なインデントくらいはしていてもいいけど
- 996デフォルトの名無しさんsage03/11/24 10:42
- >>994
+ を2項演算子として
前置記法
+ + + + + + + + 1 2 3 4 5 6 7 8 9
後置記法
1 2 3 4 5 6 7 8 9 + + + + + + + +
- 997デフォルトの名無しさんsage03/11/24 10:59
- 1000
- 998デフォルトの名無しさんsage03/11/24 11:00
- 999
- 999デフォルトの名無しさんsage03/11/24 11:00
- 998
- 1000デフォルトの名無しさんsage03/11/24 11:01
- >>996
嘘をつけ
交換則が成り立つから同じに見えるだけだろ
- 10011001Over 1000 Thread
- このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
- 249KB (255252Byte)
- dummy_for_searchRef