LISPをつつく5-関数で代入。qじゃない関数もある♪
>( set ( quote x ) 100 )
100
ちょっと面倒だけど上記の様に関数で代入できるピヨ♪ちなみに、quoteは記号(symbol)を定義する関数ピヨ♪試しに次のプログラムを試してみよう♪
>( quote x )
x
ちなみに、LISPでは記号はデータの一種ピヨ♪LISPでは基本的に命令型言語の様な厳密な区別はないピヨッ。それがLISPの長所でもあり、分かりにくさでもあるんだよね♪
えっ?一々( quote x )ってタイプするのが面倒?そんな人の為に簡略式もあるピヨ♪
>( set 'x 100 )
100
どう?簡単だよね?えっ?set関数の長所が分からない?もぅ我侭だね♪
set関数の長所は記号もデータという点ピヨ。だから、変数を返す関数をset関数の引数として使用できるピヨね♪という事は・・・
>( set ( SelectVariable 10 ) 100 )
等といったメタプログラミングが堪能できるピヨッ♪つまり、set関数を使うと変数を関数の戻り値に出来るピヨ♪これすごいよぉー。リフレクションし放題♪想像力しだいでLISPは無限大の可能性を秘めているといえるピヨね♪
ちなみに、setqの名前の由来が分かった人居るかな?実はsetq関数とはset+quoteの略称なんだ♪って事は'すらも面倒だと思う怠惰なプログラマが居たって事かな♪怠惰はプログラマの美徳だから当然の結果だよね♪それに怠惰さだけではなくて、'を使用するよりもsetqの方が美しいピヨ。'は鳥目じゃあ見にくいからありがたいピヨォ。LISPの仕様が広大無比なのは、そういった美徳の結果なのかもしれないピヨ。だから、LISPは広大だと尻込みせずに、核を押さえたらいいピヨ♪それがLISP楽習のコツだっピヨッ♪