Lispで遊ぼう!(1)スクラッチパッドで遊ぶイジハピ!TwitterID:@query1000こと深沢千尋のブログです。♡さいきんブログの評判が意外と気になるようになってきました。Lispで遊ぶことにする。Lisp』(クォリティ刊)の内容に沿っている。正しい説明をちゃんとした文書で読むにはそちらを当たってください。Interactionモードのファイルを作る。Lispではコメントになるが、ファイルの先頭にいきなりこの行を書き、それをEmacsで開くと、lisp-interactionモードになる。Perlのスクリプトの先頭に#!/usr/bin/perlとシュバング行を書くのに似ている。Emacsを起動すると作られる*scratch*バッファーもlisp-interactionモードである。*scratch*と入力すれば新規作成出来る。名前が*で始まるバッファーはEmacsを終了するとき保存するかどうか聞かれず、そのまま終了すると消えてしまう。次の行の行末(")"の後ろ)にカーソルをおいて、C-j(Ctrl+JのことをEmacsではこう書く)を押す。2)31+2の答えが出る。これは+関数に2つの引数1と2を渡したものである。次の行だとエラーになる。+1という関数がないから怒られている。+1はプラスイチとして解釈され、1という関数がありませんよと怒られているのだ。このように、複数の要素をスペースで区切ってカッコで括ったものをリストと言う。リストの最初の要素に関数を書くと、残り全部が引数として渡された戻り値という値を持つ。要素3...)引数を増やしてみる。10)55掛け算にしてみる。2)8引き算も使える。3.5)6.5割り算も出来る。引数がすべて整数だと、整数で計算する。小数点以下切り捨てになる。4)2引数の一方または両方が小数だと小数で計算する。3.0)3.3333333333333335引数がまた式でも良い。以下は25、22、20の平均を求めている。3.0)22.333333333333332これはノースリーブスの平均年齢だ。2011-01-01Amazon楽天市場Yahooショッピング合計年齢を求めるリストを第一要素とする、3で割るリストを作っている。関数プログラミング以下の式をC-jで評価する。3.14))circleと関数名が返る。同時にcircle関数がロードされる。10)314.0という数値が返る。3.14という小数が関数の中に入っているから、答えが小数になっている。式)と書くと関数名の関数が評価され、引数を得て、式の値を返す。3)3関数から関数を呼び出せる。10)3140.0日本語プログラミング変数、関数名は日本語でもいい。100)31400.0全角のカッコ、空白はさすがにダメ。10)()と空白は半角にすること。load-fileと入力する。M-はメタキーを押しながらという意味で、昔のコンピューターにはメタキーというのがついていた。今はEscを押して、放すとメタキーを押したことになる。あと、Altキーを押しながらでも同様の操作ができる。load-fileで.elファイルがロード出来る。ロードするファイルの場所を聞かれるので、circle.elを指定する。Lispにありがちな拡張子で、このファイルを開くと、自動的にEmacs-Lispメジャーモードになる。関数をロード/実行する他のやり方ここまでで関数をロードするやり方としてはこれがあった。〜.el」を実行する他に、以下のやり方がある。C-e(Ctrl+Xを押下してからCtrl+E)は、C-jと同じく直前のリストを評価する。結果は、ミニバッファに表示する。行が追加されないのでこの方がプログラミング中は便利かも。load-fileしたのと同じことになる。eval-regionリージョンだけが評価(evaluate)される。eval-regionで評価しても、結果が表示されない。3.14))と求めているが、円周率が小数のために結果も小数になる。これを四捨五入するにはどうすればいいだろうか。EmacsのオンラインヘルプInfoを調べる。infoでヘルプが起動する。item:というプロンプトがミニバッファに出現する。Lispのマニュアルに遷移する。Numbersというリンクをクリックすると数値関数のマニュアルに遷移する。Operationというリンクをクリックすると丸め操作のマニュアルに遷移する。fround(floatのround、浮動小数点の丸め)という関数が求めるもののようだ。3.5)4.0なるほどうまく行っている。これを使って結果を丸める円の面積、round-circleを作る。