Lisp@UNIX版 (585レス)
1-

385: 名無しさん@お腹いっぱい。 [sage] 04/03/31 10:41 AAS
syntax-case
386: 名無しさん@お腹いっぱい。 [sage] 04/03/31 14:30 AAS
Gaucheはそういう最適化はしないよ。

> (use gauche.vm.disasm)
> (disasm (lambda () (+ 1 1 1 1 1 1)))
PRE-TAIL(6) ;; (+ 1 1 1 1 1 1)
PUSHI(1)
PUSHI(1)
PUSHI(1)
PUSHI(1)
PUSHI(1)
PUSHI(1)
GREF #<id 0x10342400 user::+>
TAIL-CALL(6)
RET

値がなくなる形で最適化されるのは、値が
捨てられるコンテキストでの定数が削除される
くらいじゃないかしら。
(たとえば(begin 1 2)の1みたいなやつ。)
387: 名無しさん@お腹いっぱい。 [sage] 04/03/31 23:36 AAS
>>384
384(1): 名無しさん@お腹いっぱい。 [sage] 04/03/30 16:40 AAS
以前,syntax-rules を使って,例えば六っつの引数を伴うと
(+ 1 1 1 1 1 1 ) ってのに置きかえる,引数数え上げマクロを
作ったんだけど,これって関数定義内とかに使うと 6 って定数だと
解釈されてコンパイルされるんか,それともあくまで
(+ 1 1 1 1 1 1 )をやってんだかどっちだろうな Gauche

macroexpand したら (+ 1 1 1 1 1 1) になってたが,こういう最適化は
コンパイラの仕事だろうから,macroexpand ではチェックした事には
ならんだろうからなぁ…

define-macro を素直につかうべき?
+ が再定義されるかもしれんから
388: 名無しさん@お腹いっぱい。 [sage] 04/04/01 05:25 AAS
(let ((+ +)) ...)
しておけば再定義は気にしなくていい
389: 名無しさん@お腹いっぱい。 [sage] 04/04/01 12:58 AAS
その let の範囲は全部調べないといけないけどね。
途中で set! するようなこともできるから。

(let ((plus +))
(define (inc x) (plus x 1))
(let* ((one 1)
(two (inc one)))
(set! plus -)
(let ((three (inc two)))
(list one two three))))
=> (1 2 1)

みたいな。
390: 名無しさん@お腹いっぱい。 [sage] 04/04/01 16:19 AAS
disasmおもちろーい
391: 名無しさん@お腹いっぱい。 [sage] 04/04/18 16:39 AAS
M-expression
っていうのが結局何なのか分からんのだけれども、
誰か簡単に説明してくんない?
392: 名無しさん@お腹いっぱい。 [sage] 04/04/18 16:40 AAS
ちなみに
外部リンク:en.wikipedia.org
393
(1): 名無しさん@お腹いっぱい。 [sage] 04/04/19 22:38 AAS
外部リンク:squab.no-ip.com:8080
394: 名無しさん@お腹いっぱい。 [sage] 04/04/20 01:11 AAS
>>393
thank[you]
395
(1): 名無しさん@お腹いっぱい。 [sage] 04/05/06 21:18 AAS
syntax-case とか fluid-syntax を試してみたいんですけど,
実装してる処理系ありますか?
396: 名無しさん@お腹いっぱい。 [sage] 04/06/23 02:40 AAS
>>395
slibに入ってるよ。
外部リンク[html]:swissnet.ai.mit.edu
397: 名無しさん@お腹いっぱい。 [] 05/01/29 23:57:48 AAS
schemeについての質問なんですけど、ある関数に引数を一つまたは2つとる関数を作りたいんですけど、どうやればいいですか?
例えばある関数fを定義して、
(f 4)
(f 3 5)
と入力すると前者の場合は引数1つの時の定義で動き
後者の場合は引数2つのときの定義で動くようにしたいんです。
398: 名無しさん@お腹いっぱい。 [sage] 05/01/30 00:13:40 AAS
UNIX板で訊く必然性がないなあ。ここで訊くよりム板の方がいいんじゃない。
(define (f arg1 . restargs)
...)
とやれば2個目以上の引数のリストがrestargsに入る。
399: 名無しさん@お腹いっぱい。 [sage] 05/01/30 01:30:32 AAS
(あれば) case-lambda を使うのが楽。

(define f (case-lambda ((a) 'one-arg) ((a b) 'two-args)))
400: 名無しさん@お腹いっぱい。 [sage] 05/01/30 04:55:19 AAS
UNIXは言語じゃない。Lispも言語じゃない。
401: 名無しさん@お腹いっぱい。 [] 05/02/20 06:17:23 AAS
lispworksに慣れていらっしゃる方います?
402: 名無しさん@お腹いっぱい。 [sage] 05/02/23 00:45:44 AAS
何が聞きたい?
403: 伍長 [] 2005/03/21(月) 21:08:45 AAS
すんません新人です
404: 伍長 [] 2005/03/21(月) 21:09:44 AAS
誰かあの時のこと知ってるひといませんか?
405: 伍長 [] 2005/03/21(月) 21:12:30 AAS
崩壊の時の事
406: 伍長 [] 2005/03/21(月) 21:13:15 AAS
知ってる人いたらきかせてください
407: 伍長 [] 2005/03/21(月) 21:18:11 AAS
(誰もいないのか・・・)
408: 名無しさん@お腹いっぱい。 [sage] 2005/03/21(月) 21:50:35 AAS
(・∀・)ニヤニヤ
409: 名無しさん@お腹いっぱい。 [sage] 2005/03/24(木) 10:05:11 AAS
scheme の処理系何がおすすめ?
1-
あと 176 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.019s