2016年9月16日

実践common lisp第6章

個人的にはダイナミック変数っているの?って思うのだけど
レキシカル変数のみでなんとかできるんじゃないかなって言うかそんな気がするのだが
と、言う話は置いておいて、ここでも登場するletですけど、これも変数を宣言するための関数って言うか、特殊オペレータなんですよね
これも4章の流れを引き継いでいるLispの素晴らしいところですね
あと、これ非常に使いやすい素晴らしい機能の隠すってやつですね、これって良いですね
匿名関数と非常に相性がいいと思いますね
今はどうか知らないけどC#ってこれが無理だからめちゃくちゃ面倒だった覚えがある
そしてクロージャですね
なんとなく変数に対して印象持ってるのがあるんですけど、スコープ抜けると破棄されるって言うやつ、あるじゃないですか
あれってそもそも変なんですよ、理想的には変数が破棄されるタイミングって言うのはスコープとは無関係で、不要になったら破棄されるべきものなんですよね
でも、コンパイラ作ったり、実行環境、要はGCなんですけどそういうのを用意するのが嫌だったからスコープ抜けたら破棄するってなってるんですよね
それの是非は置いておいてですね、変数は不要になったら破棄、これがLispに特有と言うわけじゃないですけどクロージャの特徴ですよね、これって
ダイナミック変数って別に使わなくてもそんなに不便無い気がするのだけど、定数も別にいらないんじゃないかな、使わないよね?
そして代入ですね、これも4章のやつね、代入するのも関数って言う素晴らしい一貫性がやっぱり何度言っても言い足りないくらい素晴らしいLispですね