トップページ > プログラム > 2014年11月14日 > OZzSNTvY

書き込み順位&時間帯一覧

19 位/245 ID中時間01234567891011121314151617181920212223Total
書き込み数2000000000000000001000003



使用した名前一覧書き込んだスレッド一覧
デフォルトの名無しさん
Lisp Scheme Part39

書き込みレス一覧

Lisp Scheme Part39
302 :デフォルトの名無しさん[sage]:2014/11/14(金) 00:10:49.42 ID:OZzSNTvY
あ、いつもCommon Lispばっか書くから間違えてた
(define make-counter2 (lambda () (let ((count 0)) (set! count (+ count 1)) count)))

で、
(make-counter)
(make-counter2)

の挙動を比較してみたらってことですね、ごめん
Lisp Scheme Part39
305 :デフォルトの名無しさん[sage]:2014/11/14(金) 00:30:14.36 ID:OZzSNTvY
>>298の表現も間違ってるな
> (make-counter)を評価したら

> make-counterはletで作られた環境付きの関数に束縛されてる
と読み替えてね

>>303
まともな処理系ならクロージャ自身の束縛がなくなった時点でまとめてGCされると思う
Lisp Scheme Part39
316 :デフォルトの名無しさん[sage]:2014/11/14(金) 18:44:20.31 ID:OZzSNTvY
一例としては、メッセージパッシング

(defun counter ()
(let ((c 0))
(lambda (&optional message)
(ecase message
((nil) (incf c))
(:reset (setf c 0))
(:get c)))))

(setf (symbol-function 'f) (counter))

(f)
(f :reset)
(f :get)


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。