無差別に技術をついばむ鳥

情報処理技術全般を気まぐれにつつくゆるいブログです

LISPをつつく5−関数で代入。qじゃない関数もある♪

前回の記事を読んだ人の中には「じゃあLISPは、関数で代入する事が出来ないの?」と思った人が居ると思うピヨ。でもそこは流石LISP。関数で代入することも出来るピヨ♪というか、本来は関数で代入するもんなんだ。関数型プログラミング言語だからね♪じゃあ、早速変数xに100を代入するピヨ♪


>( 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楽習のコツだっピヨッ♪
別窓 | LISP | コメント:0 | トラックバック:0 | ∧top | under∨
<<C#をつつく29−部分型。コード合体♪ | 無差別に技術をついばむ鳥 | LISPをつつく4−副作用とスペシャルホーム。何がスペシャルなの?>>

この記事のコメント

∧top | under∨

コメントの投稿

 

管理者だけに閲覧
 

この記事のトラックバック

∧top | under∨
| 無差別に技術をついばむ鳥 |