[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 05/09 13:46 / Filesize : 290 KB / Number-of Response : 990
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

CommonLisp Scheme Part10



1 名前:デフォルトの名無しさん mailto:sage [04/02/01 19:10]
過去スレ
Part1: piza2.2ch.net/tech/kako/987/987169286.html
Part2: pc.2ch.net/test/read.cgi/tech/1002584344/
Part3: pc.2ch.net/test/read.cgi/tech/1008220265/
Part4: pc.2ch.net/test/read.cgi/tech/1016211619/
Part5: pc3.2ch.net/test/read.cgi/tech/1023091882/
Part6: pc3.2ch.net/test/read.cgi/tech/1031560687/
Part7: ruku.qp.tc/dat2ch/0311/20/1042167213.html
Part8: pc2.2ch.net/test/read.cgi/tech/1058263391/
Part9: pc2.2ch.net/test/read.cgi/tech/1069594582/

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

関連リンクは>>2-10あたり


403 名前:デフォルトの名無しさん mailto:sage [04/04/04 23:18]
(;´∀`)
nil

404 名前:デフォルトの名無しさん mailto:sage [04/04/05 23:01]
>>403
うれピー!!!
(;`∀`) 韮韮韮韮韮韮韮韮韮
      韮韮韮韮韮韮韮韮韮
韮韮韮韮韮韮韮韮韮
韮韮韮韮韮韮韮韮韮

405 名前:デフォルトの名無しさん mailto:sage [04/04/05 23:28]
春爛漫

406 名前:デフォルトの名無しさん mailto:sage [04/04/06 00:34]
>>405
>>春爛漫
1/2 なんちゃって!

407 名前:デフォルトの名無しさん mailto:sage [04/04/06 12:20]
Kahua使ってる人いる?
感想聞かせて

408 名前:デフォルトの名無しさん [04/04/06 13:19]
cmucl19a期待age

409 名前:デフォルトの名無しさん mailto:sage [04/04/06 13:28]
cmuclの新しいCLOSで以下の式を評価すると何が返りますか?
(class-name (class-of (class-of #'make-instance)))

ちなみに、cmucl18eだとstandard-class、clisp 2.33だとbuilt-in-class
ですが、MOP的には、funcallable-standard-classが正しい気がします。

410 名前:デフォルトの名無しさん mailto:sage [04/04/08 23:09]
初心やスレからやってきました。
LISP初心者です。

ここのスレの皆様方に教えっていただきたいことがあるのですが、
WINDOWS版のCL-HTTPを落としたいのですが、MITのHPのダウンロード
できそうなリンクがほとんどエラーになるのですが、CL-HTTPを
ダウンロードするにはどうすればいいんでしょうか?
よろしくお願いします。

411 名前:デフォルトの名無しさん mailto:sage [04/04/08 23:41]
ハァ



412 名前:デフォルトの名無しさん mailto:sage [04/04/09 18:44]
    〃〃∩  _, ,_
     ⊂⌒( `Д´) < WINDOWS版のCL-HTTPを落としたいよ〜!
       `ヽ_つ ⊂ノ
              ジタバタ

413 名前:デフォルトの名無しさん mailto:sage [04/04/09 20:23]
>>409
[gcl 2.5.3]
Error: The function CLASS-NAME is undefined.

[ecl 0.9c]
STANDARD-CLASS

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



414 名前:デフォルトの名無しさん mailto:sage [04/04/10 08:40]
やさしいLisp入門
ttp://www.cutt.co.jp/book/4-87783-102-9.html

こんなもん出てるようだけど、どうなん?

415 名前:デフォルトの名無しさん mailto:sage [04/04/10 09:06]
4200円! たっか〜。
どうみても入門書でたいして面白そうな例題もないこの内容で、この値段。うーむ。



416 名前:デフォルトの名無しさん mailto:sage [04/04/10 09:10]
CLOSどころかマクロのマの字もないな。


417 名前:デフォルトの名無しさん mailto:sage [04/04/10 15:34]
ネタじゃないんだよね?
他のやさしいシリーズの倍近い値段は置いておくとして
(ページ数も倍の480だし)、
よりによってCommonも何もついてないLISPとは、
いったいどういうことなのか。
読んでみないことには何とも言えないけど、
最終章にコンパイラとローダとリンカがあるということは、
やっぱりCommonLISPなのか。
日本のLISP業界にとって歴史的事件となるのかどうか。


418 名前:デフォルトの名無しさん mailto:sage [04/04/10 17:32]
>>409
>(class-name (class-of (class-of #'make-instance)))
LispWorksPersonalEditionで試してみると

FUNCALLABLE-STANDARD-CLASS
だね

419 名前:デフォルトの名無しさん mailto:sage [04/04/10 19:49]
The Evolution of Language
ttp://homepages.inf.ed.ac.uk/wadler/language.pdf

420 名前:デフォルトの名無しさん mailto:sage [04/04/10 20:37]
>>417
> よりによってCommonも何もついてないLISPとは、
> いったいどういうことなのか。

書店で立ち読みしたところ第一章にCommon Lispと明記してあったのだが。
何を見当違いのことで騒いでいるのかね。


421 名前:デフォルトの名無しさん mailto:sage [04/04/10 20:47]
>>420
内容はどうだったの?




422 名前:デフォルトの名無しさん mailto:sage [04/04/10 23:52]
>>409
手元ではこんなんですが.
CMU Common Lisp pre19a 20040410, running on lavie
With core: /home/lambda/local/lib/cmucl/lib/lisp.core
Dumped on: Sat, 2004-04-10 11:20:09+09:00 on lavie
See <www.cons.org/cmucl/> for support information.
Loaded subsystems:
Python 1.1, target Intel x86
CLOS based on Gerd's PCL 2004/01/09 04:34:17
* (class-name (class-of (class-of #'make-instance)))

PCL:FUNCALLABLE-STANDARD-CLASS
*

423 名前:409 mailto:sage [04/04/11 16:59]
情報を頂いたみなさん、ありがとうございました。

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

clispの開発者の人が1、2年前にMLで、「FUNCALLABLE-STANDARD-CLASSをサポートしないの?」と
尋ねられて、「自分で書いても同じような事を手軽にできるし、ANSI規格でもないから、今のところ
作業予定はないよ」と言っていました。

424 名前:デフォルトの名無しさん mailto:sage [04/04/15 22:32]
>>423
ACL がでてないみたいなので一応書いておく。

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

ACL 6.2 にて。

425 名前:デフォルトの名無しさん [04/04/17 19:19]
scheme age

426 名前:デフォルトの名無しさん mailto:sage [04/04/18 12:35]
xyzzyでLispをやり始めたんですが
(- 1)
はなぜ-1になるのでしょうか?

引数が一つの時は引数に-を付けて返す、というのが関数として定義されてるから
という理解でいいのでしょうか?

427 名前:デフォルトの名無しさん mailto:sage [04/04/18 12:40]
>引数が一つの時は引数に-を付けて返す、というのが関数として定義されてるから
>という理解でいいのでしょうか?
いいです。

Function `-'
www.lispworks.com/reference/HyperSpec/Body/f__.htm
> If only one number is supplied, the negation of that number is returned.


428 名前:デフォルトの名無しさん mailto:sage [04/04/18 12:54]
>>427
関数定義されてるから、という理解でよかったみたいですね。
どうもでした。

429 名前:デフォルトの名無しさん mailto:sage [04/04/18 13:01]
(*)
は1
(+)
は0

430 名前:デフォルトの名無しさん mailto:sage [04/04/18 13:10]
>>428
-を付けて返すと、the negation of that number is returned は全然違うぞ

431 名前:デフォルトの名無しさん mailto:sage [04/04/18 13:13]
428さんじゃないけど、具体的に結果が違ってくる例みたいなものを教えていただけますか?



432 名前:428 mailto:sage [04/04/18 13:21]
>>430
その数の否定を返す→正負反転して返す、という理解ではどうしてダメなんでしょうか?

433 名前:デフォルトの名無しさん mailto:sage [04/04/18 17:29]
negateは正負反転の意味で普通に使われてるし、
the negation of taht number は正負反転した数のこと。
negative numberというぐらいだから、負は正の「反対」だと
自然に思っているのだろうね。

434 名前:デフォルトの名無しさん mailto:sage [04/04/18 19:07]
>>432
「-を付けて返す」と「正負反転して返す」は全然違うぞ

435 名前:デフォルトの名無しさん mailto:sage [04/04/18 19:40]
だから馬鹿みたいに違う違うって言わずに431が言ってるみたいに例をもってくるとか
何が、どう違うかいいなよ。

436 名前:デフォルトの名無しさん mailto:sage [04/04/19 00:26]
つまり430=434がこれから始めたい事とは、
「-を付けて返す」という言い回しに対しての、
無益な重箱の隅を突く日本語講釈ですか?

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


ところで、
(- -1)
この式は何が返ると思いますか?

437 名前:デフォルトの名無しさん mailto:sage [04/04/19 07:02]
-を90度回転させてから前につけて +1

438 名前:デフォルトの名無しさん mailto:sage [04/04/19 08:20]
予想1:絶対値の符号反転したもの。 (- -1) => -1
予想2:文字通り (- -1) => "--1"


439 名前:デフォルトの名無しさん mailto:sage [04/04/19 08:43]
>(- -1)
>この式は何が返ると思いますか?

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

字面レベルでの議論だとは気がつきませんでした。
複素数の場合かなとも想像していました。

440 名前:デフォルトの名無しさん mailto:sage [04/04/19 11:43]
(- -1) => (^_^)
('A`) => (-_-)
(゚д゚) => (゚∀゚)
(* ゚▽゚) => ゚▽゚

441 名前:デフォルトの名無しさん mailto:sage [04/04/19 21:25]
バッククォートって、list や cons で書いたのと等価じゃないんですか?
なんだか処理系によって値が違うんですが。
(defun bq (x) `(,x nil))
(defun ls (x) (list x nil))
(let ((l nil) (m nil))
(push (bq 1) l) (push (bq 2) l) (push (bq 3) l)
(rplaca (cdar l) t) (print l)
(push (ls 1) m) (push (ls 2) m) (push (ls 3) m)
(rplaca (cdar m) t) (print m))
を評価すると、clisp では
((3 T) (2 NIL) (1 NIL))
((3 T) (2 NIL) (1 NIL))
となるんですが、CMUCLでは
((3 T) (2 T) (1 T))
((3 T) (2 NIL) (1 NIL))
と異なる結果になるんです。言語仕様上どっちが正しいんでしょうか?



442 名前:デフォルトの名無しさん mailto:sage [04/04/20 03:50]
>>441
このへんかな

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

cltl2
22.1.3. Macro Characters

443 名前:デフォルトの名無しさん mailto:sage [04/04/20 08:05]
Common Lisp Hyperspec 2.4.6 Backquote
www.lispworks.com/reference/HyperSpec/Body/02_df.htm

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

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

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

... share list structure ... のくだりは、backquoted formからreaderが作るform自体が
templateと相似構造なformである必要はないと言っているのであって、template自体を構成する
consを共有して使いまわしていいと言っているわけではないと思う。

444 名前:デフォルトの名無しさん mailto:sage [04/04/20 10:33]
バッククォートの解釈は、結果が(equalの意味で)等しければ実装は自由。

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

したがって、規格ではどちらも正しい。
side-effectはこの場合関係ない。

445 名前:443 mailto:sage [04/04/20 11:32]
>>444 了解。規格の例をもっと読むべきでした。
最初は、俺もquoteの一種だから変更するべきじゃないと、
正しく解釈していたんですが規格を誤読して解釈を変えてしまいました。

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

この場合、cmuclは以下のような事をやって、consしないようにしていると
いうわけね。
(let ((list (list nil nil)))
(defun bq (x)
(setf (car list) x)
list))

446 名前:デフォルトの名無しさん mailto:sage [04/04/20 12:24]
>この場合、cmuclは以下のような事をやって、consしないようにしていると
>いうわけね。
例が間違っていました。忘れてください。

447 名前:441 mailto:sage [04/04/20 12:56]
トップレベルのリストも全て cons とは限らないというわけですね。
(defun bq1 (x) `(,x 1 2))
(defun bq2 (x) `(,x 1 2 ,x))
(let ((l nil) (m nil))
(push (bq1 0) l) (push (bq1 0) l)
(rplaca (cdar l) 3) (print l)
(push (bq2 0) m) (push (bq2 0) m)
(rplaca (cdar m) 3) (print m))
を CMUCL で評価したら
((0 3 2) (0 3 2))
((0 3 2 0) (0 1 2 0))
となりました。リストの末尾に定数リストが来ていると使い回されるようです。

448 名前:デフォルトの名無しさん mailto:sage [04/04/20 14:03]
>リストの末尾に定数リストが来ていると使い回されるようです。
そうみたいですね。それで、その分、consする回数が減ってリソースの節約になり、
それは規格で許された動作であると。

449 名前:デフォルトの名無しさん mailto:sage [04/04/20 14:09]
一応貼っておく。Emacs Common Lisp。
www.lisp.se/emacs-cl/

450 名前:デフォルトの名無しさん mailto:sage [04/04/22 14:04]
外国でxyzzyのこと知っている人は、どれくらいいるのだろう?


451 名前:デフォルトの名無しさん mailto:sage [04/04/22 15:34]
とりあえずぐぐってみてはどうか。




452 名前:デフォルトの名無しさん mailto:sage [04/04/22 18:08]
Windows マインスウィーパーの隠しコマンドが
xyzzy なんだけどなんか関連ってあんの?

453 名前:デフォルトの名無しさん mailto:sage [04/04/22 19:14]
とりあえずぐぐってみてはどうか。

454 名前:デフォルトの名無しさん mailto:sage [04/04/23 07:34]
foo bar

455 名前:デフォルトの名無しさん mailto:sage [04/04/23 07:41]
>>452 魔法の呪文として「xyzzy」を使うことがあるみたい。出典知っている人いる?

>>451 >とりあえずぐぐってみてはどうか。
googleで調べてみたけど、結果を絞りきれなかった。Emacs系エディタリストには記載が
あったけど、情報は名前だけ。Common Lispのサブセットを搭載しているという情報はなし。

456 名前:デフォルトの名無しさん mailto:sage [04/04/23 16:55]
ADVENT(初期のコンピュータゲーム)の魔法が出典。
Jargon Fileの
ttp://www.catb.org/~esr/jargon/html/X/xyzzy.html
を参照。

457 名前:デフォルトの名無しさん mailto:sage [04/04/26 16:31]
すんません、cmucl19のソースを入手するにはどうしたらいいんですか?
cmucl web siteの指示どおりanonymous cvsで入手しようとすると、
/home/anoncvs/CVS-cmucl: no such repository
と言われて失敗します。

458 名前:デフォルトの名無しさん mailto:sage [04/04/27 01:05]
>>457
hxxp://common-lisp.net

459 名前:デフォルトの名無しさん mailto:sage [04/04/27 11:08]
>>458
ありがとう、入手できました。
linuxのfirefoxでcommon-lisp.netを表示すると、トップページの横一列になった項目に
打ち消し線がかかっているように見えるので、ずっと、改装中なのかと思っていたよ。
たぶん、単なる下線の表示がおかしくなっているのね。

460 名前:デフォルトの名無しさん mailto:sage [04/04/27 13:41]
stklosとstkはwindows98でも使えますか?

461 名前:デフォルトの名無しさん mailto:sage [04/04/27 16:36]
>>460 STk は動くはず。stklos は Windows はダメなはず。



462 名前:マグデジニウム偏角線 mailto:質問age [04/04/28 18:22]
schemeの継続についての質問です。
処理系はgaucheを使っています。

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

cont2には、
「(display "山崎13\n")を評価する」
と云う継続が代入されるのではないかと思ったのですが、なぜそうではないのでしょうか?

463 名前:デフォルトの名無しさん mailto:sage [04/04/28 18:38]
トップレベルまでだから。

464 名前:462 mailto:sage [04/04/28 19:40]
>>463
そういう解釈で良いのですね、

ありがとうございました。

465 名前:デフォルトの名無しさん mailto:sage [04/05/02 20:44]
www.asahi-net.or.jp/~ia7k-ismr/lisp_contents/ansi_commonlisp_a2.txt
暇に飽かせてANSI CommonLispの解答っぽいものを作ってみました。
誤り、勘違いなどあったら教えて頂けるとありがたいです。

466 名前:デフォルトの名無しさん mailto:sage [04/05/03 09:34]
>>465 あんたは、えらいっ!

467 名前:デフォルトの名無しさん mailto:sage [04/05/03 09:37]
atom: a
list: (a b c)
tree: (a (b) ((c))))
graph: #1=(a #2=(b . #1#) . #2#)
graphのもっとよい表記法を希望します。


468 名前:デフォルトの名無しさん mailto:sage [04/05/03 18:59]
ttp://www.geocities.co.jp/SiliconValley-Cupertino/6957/bibliography.ja.html
Scheamて。
それにDrShcemaとはなんや?

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


・・・まあそれはともかく、
紙媒体の参考資料集としては使えるかも。

469 名前:デフォルトの名無しさん mailto:sage [04/05/03 19:31]
>C++を使うために絶対読まなければならない本
11冊は多すぎ。一冊読めば使えるだろ。しかもC++を使う⇒=Windowsユーザと勘違いしてるし、
他の項目も同様。

470 名前:デフォルトの名無しさん mailto:sage [04/05/03 20:37]
誰?

471 名前:デフォルトの名無しさん mailto:sage [04/05/03 21:17]
俺だよ俺!



472 名前:デフォルトの名無しさん [04/05/04 14:40]
schemeで循環参照を印字する方法って規定されてるのでしょうか。

(define x (cons 'x 'x))
(set-car! x x)
(set-cdr! x x)
x
==> ???

473 名前:デフォルトの名無しさん mailto:sage [04/05/04 17:29]
srfi-38のwrite/ss (write-with-shared-strcture)
srfi.schemers.org/srfi-38/srfi-38.html

x => #0=(#0# . #0#)

474 名前:デフォルトの名無しさん [04/05/05 20:50]
schemeの局所関数について質問です.
(define (f x)
(define (g x) (* x x))
(g (* x x)))
とした場合gはfの定義時に定義されるのでしょうか,
それとも実行時でしょうか.
もし実行時だとすると次の式と等価なのでしょうか.
(define (f x)
(let ((g (lambda (x) (* x x))))
(g (* x x))))


475 名前:デフォルトの名無しさん mailto:sage [04/05/05 22:58]
letではなくletrecだろ?

(define (f x)
(letrec ((g (lambda (x) (* x x))))
(g (* x x))))

476 名前:デフォルトの名無しさん mailto:sage [04/05/05 23:39]
>>475
let でいい

477 名前:デフォルトの名無しさん mailto:sage [04/05/06 00:24]
>>476
この場合は、だろ

478 名前:デフォルトの名無しさん mailto:sage [04/05/06 00:48]
>475 に賛成.
; (define (f x)
; (let ((g (lambda (x) (* x x))))
; (g (* x x))))

(define f
(lambda (x)
((lambda (g) (g (* x x)))
(lambda (x) (* x x)))))
と等価だからこのgは定義されてるとはいえない.
例えば,
(define (f x)
(define (g x) (if (= x 0) 0 (+ x (g (- x 1)))))
(g (* x x)))

(define (f x)
(let ((g (lambda (x) (if (= x 0) 0 (+ x (g (- x 1)))))))
(g (* x x))))
かのどちらをとるかで
(let ((g (lambda (x) x)))
(f 3))
を評価した結果が違う.


479 名前:デフォルトの名無しさん mailto:sage [04/05/06 00:58]
>>476は当然この場合の話をしているのだと思うが。
そんなことより、質問の答えが知りたい。

480 名前:デフォルトの名無しさん mailto:sage [04/05/06 01:20]
答えは等価。でも質問の前提の実行時とか定義時という
考え方がおかしい。定義は実行されない。

481 名前:479 != 474 mailto:sage [04/05/06 01:49]
>>480
(define (f x) ..
    (define (g x) .. 
だと、fが定義されるときにgも定義されそうだが、
(define (f x) ..
    (let ((g ..
だと、gに値が束縛されるのは実行時ではないか、
ということだと思うが、結局何が違うのかは俺にはよくわからん...



482 名前:デフォルトの名無しさん mailto:sage [04/05/06 02:38]
(define (f x)
(define (g x) (+ 1 x))
(set! g (let ((g g)) (lambda (x) (+ 1 (g x)))))
(g x))
こんなんだったら違いがでるんじゃない?

483 名前:デフォルトの名無しさん mailto:sage [04/05/07 14:03]
パフォーマンスを意識したプログラミング
Programming as if Performance Mattered
www.dadgum.com/james/performance.html


484 名前:デフォルトの名無しさん [04/05/07 21:10]
>>473
ありがとうございます。
SRFIにあったとは気づきませんでした。
英語読まないとだめですね・・・。


485 名前:デフォルトの名無しさん mailto:sage [04/05/08 09:09]
>>481
トップレベルのdefineとinternal defineは、字面は同じ
"define"だけど、全然別物だよ。
前者はトップレベルの束縛を定義するもの。後者はレキシカル
変数の束縛を定義するシンタックスシュガーでletrecと同じ。

486 名前:デフォルトの名無しさん mailto:sage [04/05/08 16:01]
>>485
それで納得。CommonLispのdefunとは違うんだね。

>>484
Schemeで、REPループがwrite/ssを使うように指示するにはどうすんのかな。
CommonLispなら変数*print-circle*をtrueに設定すればいいのだけれど。

487 名前:474 mailto:sage [04/05/08 21:36]
みなさん回答ありがとうございました.
局所関数定義(internal define)とletrecが等価だということは,
パフォーマンスが要求される部分では局所関数定義を避けた方がいいということですよね.

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



488 名前:デフォルトの名無しさん mailto:sage [04/05/08 22:40]
>>487
そんなのは処理系依存
多少賢い処理系ならどっちもパフォーマンス的には同じかと
さらに賢く最適化をする処理系なら前者の方が良くなるはず

489 名前:デフォルトの名無しさん mailto:sage [04/05/09 04:08]
>>487
Internal defineが毎回コンパイルされると思ってるみたいだが、
そんなペナルティはない。evalじゃないんだから。安心して使え。


490 名前:474 mailto:sage [04/05/09 08:03]
>>488-489
純粋に言語仕様だけを見れば,gのinternal defineの定義はfの実行時に毎回行われますよね.
でもそれなりの処理系を使っている限り,最適化してくれるので意識する必要はないということかな.
最適化というのは>>487のような変換を処理系が自動でやってくれるということでしょうか.


491 名前:デフォルトの名無しさん mailto:sage [04/05/09 15:05]
>>490
> 純粋に言語仕様だけを見れば

どこにそんな仕様が?

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

違う
後者の場合、f のコンパイル時には f-g は再定義される可能性があるため特定できないが、
前者の場合、f のコンパイル時には g が再定義される可能性は無いため (g (* x x) をインライン展開できる。



492 名前:デフォルトの名無しさん mailto:sage [04/05/09 15:51]
>>490
> 純粋に言語仕様だけを見れば,gのinternal defineの定義はfの実行時に毎回行われますよね.
確かに、インタープリタの場合、あなたの言う通りに遅くなる処理系が
存在する可能性もあるけど、そのレベルの事を心配して、コーディングを変える必要は
ないことが多いのでは。

493 名前:474 mailto:sage [04/05/09 22:41]
>>491-492
ありがとうございます.
なるほど,インライン展開ですか.考えていませんでした…
中身をある程度知っていないと効率的にしようと思った対策が
逆効果ってことはよくありますよねぇ.

494 名前:デフォルトの名無しさん mailto:sage [04/05/10 01:43]
効率なんてのはSchemeをもっと理解してから考えろよ。
外したレスなんでアドバイスに困る。

495 名前:デフォルトの名無しさん mailto:sage [04/05/11 07:43]
インライン展開は抜きにしても、
「gのinternal defineの定義はfの実行時に毎回行われますよね」
と書いている時点でclosureというものを激しく誤解している予感。

最も単純な(最適化しない)実装でも、closure g作成のコストは
f実行一回あたりcons一個分。


496 名前:デフォルトの名無しさん mailto:sage [04/05/11 08:28]
>>495
closure g作成のイメージは、
(define g (list 'closure '(lambda (x) (* x x)) current-lexical-environment))
みたいな感じでいいのかな。

497 名前:デフォルトの名無しさん mailto:sage [04/05/12 01:30]
変数xというのを残してもいいけど、それだと毎回
環境からxを探すコストがかかってしまう。

レキシカルスコープでは毎回同じxが発見される
ことになるんだから、ローカルにバインドされた
識別子はコンパイル時に参照に置き換えられるのが普通。
実行時には、レキシカル変数はもはやシンボルや
identifierではなく、名前のわからない、ただの参照になってる。

498 名前:デフォルトの名無しさん mailto:sage [04/05/13 12:33]
guileを検索したら↓がpageRankの上位にあったのだが、、

www.guile.jp

499 名前:デフォルトの名無しさん [04/05/13 20:53]
ガイルがいる


500 名前:デフォルトの名無しさん [04/05/13 20:57]
【誰でもできる47氏支援運動!】
【以下の文章を、各種掲示板にコピペして47氏を救おう!】

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

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

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

また、本運動に賛同される方、お知り合いの掲示板などに、本文章を掲示していただけると幸いです。

501 名前:デフォルトの名無しさん mailto:sage [04/05/14 19:04]
Scheme美しすぎ



502 名前:デフォルトの名無しさん mailto:sage [04/05/14 20:34]
Scheme かわいいよ Scheme

503 名前:デフォルトの名無しさん mailto:sage [04/05/16 16:33]
"on lisp"の翻訳は最近すすんでるの?






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<290KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef