<?xml version="1.0" encoding="utf-8" ?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>elisp超入門</title>
<link>https://ameblo.jp/start-emacs/</link>
<atom:link href="https://rssblog.ameba.jp/start-emacs/rss20.xml" rel="self" type="application/rss+xml" />
<atom:link rel="hub" href="http://pubsubhubbub.appspot.com" />
<description>「emacsって名前だけなら聞いたことある」とか「lispって何？」と思っていてる人のための入門サイト。まぁlisp自体難しいものじゃないから何かプログラムやってみたいって人も大歓迎です。</description>
<language>ja</language>
<item>
<title>listの中の整数の最大値をとることをかんがえる。</title>
<description>
<![CDATA[ 今日は幾つかの整数を要素にもつlistから最大の整数を探す関数を考える。<br>ex.<br>(max '(2 3 5 1 3 4 2 7 4 3 2))<br>7<br><br>最大を考える前に注意！<br>lispのlistはcarとcdrの連続からなる。<br>listの最後はnilである。（一番後ろのcdrは空っぽ）<br>nilは数字でない。<br>だから困る。<br>だからnilも数字であるように振る舞わせなければならない。<br>さもなくば、そもそもlistの要素が１つの時を扱えない。<br>（要素が一のときは別のやり方でやる？いくらなんでもそれはかっこわるすぎる。）<br>まぁそこも考えないといけない。<br><br>だから今日考える問題は二つ。<br>最大をどう探すか？<br>list末尾のnilをどうするか？<br><br>最大をどう探すか？<br>そんなもん全部比べれば良いに決まってる。<br>小学生でも分かる。<br>計算機が全部調べてくれるはず。<br>問題は比べ方をどう表現するか？？<br>どう命令するか考える。それがプログラムする人のお仕事。<br><br>例（数値例ではない）を挙げて考える。<br>仮に僕が小麦畑に立っていてるとする。<br>その小麦畑には沢山の子供がはしゃぎ回っている。<br>でも僕はそのはしゃぎ回っている子供達のなかから一番背の高いやつを捕まえなきゃいけないんだ。<br>僕はとりあえず一番近くにいる子供を捕まえた。(car hoge)<br>そしてもう少し、、<br><br>うまく説明できない<br>じっさいコードを表現したときは何も考えてないときが多いからさ、説明できないんだぁ。<br>まぁ今日はこれを使って再帰のすごさを非lispの人々に知らしめようと考えたのに。<br><br>(defun k-max (hoge)<br>  (if(eq (cdr hoge)nil) (car hoge)<br>    (if (&gt;= (car hoge) (k-max (cdr hoge)))(car hoge)<br>      (k-max (cdr hoge)))))<br>まあいい。<br>ライ麦畑はあきらめて、テキトウな順番に一列で並んだ小学生を考えよう。<br>一番順番がびりの奴は基準になれってこと。 (if(eq (cdr hoge)nil) (car hoge)<br>それはそうと前の奴と背を比べろ、それで高かったら、もしかすると一番背が高いかもしれないし違うかもしれない。 (&gt;= (car hoge) (k-max (cdr hoge)))<br>はい！ここの再帰をどう言葉で説明する。<br>出来ない！！！<br>よって日本語はlispより表現の抽象度が劣ることが再び明らかになった！<br>よってlispは最強だ。<br>まぁ紙と鉛筆でぐにゅぐにゅ再帰のイメージを書けば少しは伝わるのかもなぁ。<br><br>あぁ、やっぱり数値例使おう！<br><br><br>(defun k-max (hoge)<br>  (if(eq (cdr hoge)nil) (car hoge)<br>    (if (&gt;= (car hoge) (k-max (cdr hoge)))(car hoge)<br>      (k-max (cdr hoge)))))<br><br>この式が経験とひらめきにより与えられたとする。<br><br>(koki-max '(5 7 4 ))<br><br>を実行すると<br>まず（５,(7 4 ))<br>だから(eq (cdr hoge)nil)は偽<br>でひとまず５と(k-max (cdr hoge)）の比較に飛ぶ。<br>でも(k-max (cdr hoge)が分からないとどうにもならないので、<br>計算機は(k-max (cdr hoge)を評価する<br>(k-max (7 4))<br><br>ぁあ、考えるだけできもくなって来た。<br>再帰している式の展開を考えると恐ろしくなる。<br>てかこんな序長てきな表現を避けるために再帰にしたのに、<br>日本語の抽象度が低いばっかりにこんなことに！<br><br>もうやめた。<br><br>だって見たまんまジャン。<br><br>(defun k-max (hoge)<br>  (if(eq (cdr hoge)nil) (car hoge)<br>    (if (&gt;= (car hoge) (k-max (cdr hoge)))(car hoge)<br>      (k-max (cdr hoge)))))<br>きっとライ麦畑ではしゃぐ子供達をたちから一番背の高い少年を探し出す時君の脳ではこれと似たような処理がなされているはず。<br><br>lispの1行の偉大さが証明された。
]]>
</description>
<link>https://ameblo.jp/start-emacs/entry-10040424866.html</link>
<pubDate>Fri, 20 Jul 2007 00:00:08 +0900</pubDate>
</item>
<item>
<title>collatz-in-elisp</title>
<description>
<![CDATA[ ;; collatz jul 17 2007 collatz<br><br>(defun dablle (i)<br>  (if (= i (* 2 (/ i 2))) t nil))<br><br>(defun collatz (hoge)<br>  (print hoge)<br>  (if (= hoge 1)(print "end")<br>    (if (dablle hoge)<br>(collatz (/ hoge 2))<br>        (collatz (+ 1 (* 3 hoge))))))
]]>
</description>
<link>https://ameblo.jp/start-emacs/entry-10040104658.html</link>
<pubDate>Tue, 17 Jul 2007 04:45:06 +0900</pubDate>
</item>
<item>
<title>lispの基本要素について　　式とアトムの関係</title>
<description>
<![CDATA[ ここではlispっぽいことを説明します。<br>ここから先はもう式とlistを別けて考えないと思いますが、今までかいたことは重要なので心の隅に置いといて下さい。<br><br>いきなり結論を言います。<br><br><font size="7">式はアトムになりうる</font><br><br>いやぁもう説明しようとしたことを全て言ってしまった。<br>まぁ正確には少し違う気もするがまぁこの理解のしかたで困ることは滅多に無いさ。<br>せっかくだからもう少し説明しよう！<br><br>（＋　７　（＊　３　５）　）<br><br>この式を実行する時処理系は内側の括弧から順番に評価（実行）する。<br><br>つまり、まず、（＊　３　５）を評価して<br>その結果を（＋　７　（＊　３　５））に渡す。<br>そして（＋　7　１５）が評価され<br>２２と言う結果になる。<br><br>まぁ式も基本的にはアトムのように扱えるってこと。<br><br>まとめ<br>式とはアトムになりうる。<br>内側の式から順に評価される。
]]>
</description>
<link>https://ameblo.jp/start-emacs/entry-10031843867.html</link>
<pubDate>Thu, 26 Apr 2007 12:08:55 +0900</pubDate>
</item>
<item>
<title>lispの基本要素について　2　シンボルと式</title>
<description>
<![CDATA[ まぁこの辺は初めて読む人にはつまらないと思いますが書いてる本人は結構楽しんでるのでどんどん書きます。<br>復習<br>’（a b c d e）<br>これはa,b,c,d,eの５つのアトムを持つリストです。<br>復習終わり。<br><br>今回の学習(基本)<br>（+ 5 6）<br>これは５＋６と言う式です。<br><br>上の式にある＋のことをシンボルと言います。<br>これだけ知っていればコードを書くだけなら書けます。<br>でもマクロあたりでこけます。（筆者の体験より）<br><br>さて、少し視点をかえて説明します。「lispとはlist　processorの略」とは以前書きました。<br>しかし、listを並べたところでそれは単なる情報の集積であってそれ以上の意味を生み出ささない。（時にそれは有害でもある）<br>　<u>なぜプログラムを書くのか？それは情報に対して高速に的確に適切な処理するために計算機に適切な処理方式を指示するためである</u>。これはどんな言語の教科書にも書いてあることだと思う。だからここでも書いた。<br>まぁlistの集まりではこの目的は達成し得ない。この目的を達成するために必要なもの、それこそがシンボルである。<br><br>シンボルは処理系（計算機とかコンパイラインタプリタとかコードの実行にかかわるもの）に対してlistの処理方式を指示する。<br><br>くどいけど、もう一回。<br>シンボルとは処理系に対してそのlistをどう処理するかを示すものである。<br><br>またシンボルを持ったlistを式と呼ぶ。つまり、シンボルを持たないlistは式である。<br>（まぁ式とlistのどちらから説明しても良かったんだけど、べつに二つを別けて考える必然性も実はないんだけど、elispじゃ式とlistの扱いが完全に同じでない（’がつく）からlistから先に別々に説明しました。）<br><br>あと文法的補足として一つ。<br>シンボルは常にlistの先頭に来る。<br><br>（+ 5 5)はlisp<br><br>(5 + 5)は算数。<br><br>まとめ<br>シンボルはリストの先頭に来る。<br>シンボルは処理系に処理方式を伝える。<br><br><br><br>
]]>
</description>
<link>https://ameblo.jp/start-emacs/entry-10031843177.html</link>
<pubDate>Thu, 26 Apr 2007 11:42:02 +0900</pubDate>
</item>
<item>
<title>lispの基本要素について　2　シンボルと式</title>
<description>
<![CDATA[ まぁこの辺は初めて読む人にはつまらないと思いますが書いてる本人は結構楽しんでるのでどんどん書きます。<br>復習<br>’（a b c d e）<br>これはa,b,c,d,eの５つのアトムを持つリストです。<br>復習終わり。<br><br>今回の学習(基本)<br>（+ 5 6）<br>これは５＋６と言う式です。<br><br>上の式にある＋のことをシンボルと言います。<br>これだけ知っていればコードを書くだけなら書けます。<br>でもマクロあたりでこけます。（筆者の体験より）<br><br>さて、少し視点をかえて説明します。「lispとはlist　processorの略」とは以前書きました。<br>しかし、listを並べたところでそれは単なる情報の集積であってそれ以上の意味を生み出ささない。（時にそれは有害でもある）<br>　<u>なぜプログラムを書くのか？それは情報に対して高速に的確に適切な処理するために計算機に適切な処理方式を指示するためである</u>。これはどんな言語の教科書にも書いてあることだと思う。だからここでも書いた。<br>まぁlistの集まりではこの目的は達成し得ない。この目的を達成するために必要なもの、それこそがシンボルである。<br><br>シンボルは処理系（計算機とかコンパイラインタプリタとかコードの実行にかかわるもの）に対してlistの処理方式を指示する。<br><br>くどいけど、もう一回。<br>シンボルとは処理系に対してそのlistをどう処理するかを示すものである。<br><br>またシンボルを持ったlistを式と呼ぶ。つまり、シンボルを持たないlistは式である。<br>（まぁ式とlistのどちらから説明しても良かったんだけど、べつに二つを別けて考える必然性も実はないんだけど、elispじゃ式とlistの扱いが完全に同じでない（’がつく）からlistから先に別々に説明しました。）<br><br>あと文法的補足として一つ。<br>シンボルは常にlistの先頭に来る。<br><br>（+ 5 5)はlisp<br><br>(5 + 5)は算数。<br><br>まとめ<br>シンボルはリストの先頭に来る。<br>シンボルは処理系に処理方式を伝える。<br><br><br><br>
]]>
</description>
<link>https://ameblo.jp/start-emacs/entry-10031843176.html</link>
<pubDate>Thu, 26 Apr 2007 11:42:02 +0900</pubDate>
</item>
<item>
<title>lispの基本要素について　１listとアトム</title>
<description>
<![CDATA[ なんだか、まじめな入門書的な題名ですが、文章の質は今までと変わらないです。（残念ながら）<br><br>前のところでアトム、シンボル、式の説明をしないと、他のことを何も説明できないことに気付いてしまったので、その辺の説明をします。<br><br>lispの名前の由来はlist processorの略と以前書いたか書いてないかは定かではありませんが、lispの名前の由来はlist processorの略です。つまり、lispはlistにある命令を解読・実行する装置なんです。<br><br>listとはリストです。つまり、概念的には、出席者リストとかの日常的に使う意味でのリストです。（目的に合わせて、多数の項目を一定の形式に従って書き並べたもの。一覧表。目録。名簿。表。三省堂提供「大辞林 第二版」より）<br><br>リストは幾つかの構成要素からなります。この構成要素をアトムと言います。（間抜けな説明ですが、こう説明するのが一番妥当と考えられる。）<br><br>’(a b c)<br><br>これがelispで使うリストです。<br>括弧の前の　’　はこれが式ではなく、listであるとこを示すお約束です。lispの実行環境（lispの方言）によってはつけなくても良いモノもあります。でもemacsでは（elispでは）　’　は必要です。<br><br>以上。listとアトムの説明終わり。
]]>
</description>
<link>https://ameblo.jp/start-emacs/entry-10031841362.html</link>
<pubDate>Thu, 26 Apr 2007 11:14:26 +0900</pubDate>
</item>
<item>
<title>括弧の訳</title>
<description>
<![CDATA[ lispには多数の実装がある（lisp方言と呼ぶ）が、どの実装も括弧が多くてキモイことは共通している。<br>何を隠そう、この括弧こそlispをlispたらしめる所以であり、lispが最強と言われる所以である。<br>例えば、iを２倍して表示する。<br>Cでは<br>#include <stdio.h><br><br>int main (void) {<br>int i;<br>i = 5;<br>printf("%d\n",2*i);<br>    return 0;<br>}<br>となる。<br>lispでは、<br>(setq i 5)<br>(* i 2)<br>です。<br>しまった。俺が言わんとすることをこの式で説明するのは困難を極める。<br>別のことを語ろう。この式も十分重要なことを語れる。<br>（これでいいんだ。　　いきなり括弧の秘密について話しても俺の能力ではその秘密を伝えられない。）<br><br><br>まず、setq(セットクと読む)についてだ。<br>(setq i 5)<br>これは以下の式とほぼ同じ<u>動き</u>をする。<br>int i;<br>i = 5;<br>つまりどちらもi と５を関係づけている。<br><br>しかしながら、Cを書く俺は(setq i 5)を見て考える。<br>i　は果たして何者なのか？<br>同時にlispを書く俺は悩む。<br>何故Cを書く俺は　i　に何故int型と決めることができたのか。<br>i　に文字が来る可能性は無いのか。と。<br><br>まぁ大概の人はCを書く俺に賛成だと思う。<br>でも最近はそうでもないか。<br><br>ここで俺が言わんとすることが分かった人はここから下は読まなくてよろしい。<br><br>Cでは何をするにもはじめに宣言をする。<br>これは何のためか？<br>プログラムに必要なメモリを始めに割り当てる。コンパイルの効率をあげる。ect.<br>まぁようは機械の都合だ。<br><br>(setq i 5)では単にあるデータ　i　に５を束縛しているに過ぎない。<br>束縛って何んだ？って思ってるひとは正解。<br>束縛って代入と同じだろって思っちゃった人は残念。<br><br>今日は代入と束縛の概念の違いをメインに語る（おおいきなり、そんなことをしてもただの自己満足で終わるのに（lispが最強と言われる所以の一つに学習するにつれ他の言語の<u>あら</u>が見えてくる点をあげられる。（まあ言いをかえると言語の特性が見えてくる）））<br><br>束縛とは言ってしまえば<u>その時点の<font color="#FF0000">アトム</font>の状態・値を保持しつつアトムに新たなアトムを結び付けること</u>です。<br><br>アトムって何だってそれは括弧の中に閉じ込められた諸々のものとしか言いようが無いね。<br>いきなり重要事項。<br>てか最重要事項。<br><font size="6"><strong>括弧の中は基本的にアトムでいっぱいだ！！</strong></font>（例外はもうすぐ示す予定）<br>てかまだ<font size="6">式</font>について何も言ってなかった。<br>式とは括弧で括られたアトムとシンボルと括弧自身のすべてを指します。<br>あぁなんかふつーの入門書になってきたわ。（残念）<br>lispでは式と言う単位で考えてる。式はコードそのものであり、lispと言う表現の全てである。（おおこの流れで、後３０００字ぐらい書けば括弧の秘密まで書ける気がする（「lispと言う表現」って深いね））<br>つまり全ての基本的にlispは以下の形からなる。<br>（シンボル　アトム１　アトム２　アトム３、、、、、）<br>シンボルとは＋、＊、setqなどのこと。<br>あぁ飽きて来た。<br><br>強引にまとめる（全くもってまとめではない）<br>今までの説明を読んで来て分かると思うが、ここの文章には脈絡が無い。<br>人に説明しようとしているのに、流れが見えない。<br>しかし、全く無意味でもない。<br>俺はこれが正しいlispの書き方だと思う。<br>「さて、今日はこの仕様書をやっつけよう」と書くのではなく。<br>徒然なるままに、欲望に任せて、書きつづる。<br>そのうち何か、可能性が見えてくる。<br>これぞプログラムの醍醐味。<br>以上。<br></stdio.h>
]]>
</description>
<link>https://ameblo.jp/start-emacs/entry-10031817928.html</link>
<pubDate>Wed, 25 Apr 2007 23:57:40 +0900</pubDate>
</item>
<item>
<title>windowsでemacsインストール編</title>
<description>
<![CDATA[ <a href="http://ourcomments.org/Emacs/EmacsW32.html#download" target="_blank">http://ourcomments.org/Emacs/EmacsW32.html#download</a><br>こんなのもあるけどとりあえずmeadowがよいと思われます。<br><br><a href="http://www.meadowy.org/meadow/" target="_blank">http://www.meadowy.org/meadow/</a><br><br>Netinstallerでインストールすれば良いです。<br>時代は便利なものになりました。<br><br>何か問題が起きたらコメント下さい。暇だったら答えます。
]]>
</description>
<link>https://ameblo.jp/start-emacs/entry-10031810620.html</link>
<pubDate>Wed, 25 Apr 2007 23:47:00 +0900</pubDate>
</item>
<item>
<title>とりあえず使ってみる（Mac編）</title>
<description>
<![CDATA[ なぜMac編なのかと多くの人が突っ込みたくなるかも知れませんが、筆者の偏見により、とりあえず、mac編からです。（だってインストール方法とか分からない人に教えるの面倒じゃん（インストールはgnuを参照すべし））<br>では始めます。<br>ターミナルを開く。<br>ターミナルはユーティリティの中にあります。<br>（finderでリンゴのマークとshiftとUを押せばユーティリティのに飛べます。）<br>ターミナルを無事機動するとcuiの画面が出てきます。<br><br>例<br>Last login: Sun Dec 24 14:59:08 on console<br>Welcome to Darwin!<br>You have mail.<br>mac:~ apple$<br><br>emacsと入力してリターン。<br><br>例<br>Last login: Sun Dec 24 14:59:08 on console<br>Welcome to Darwin!<br>You have mail.<br>mac:~ apple$emacs<br><br>すると<br>Welcome to GNU Emacs<br><br>Get help           C-h  (Hold down CTRL and press h)<br>Undo changes       C-x u       Exit Emacs               C-x C-c<br>Get a tutorial     C-h t       Use Info to read docs    C-h i<br>Ordering manuals   C-h RET<br>Activate menubar   F10  or  ESC `  or   M-`<br>(`C-' means use the CTRL key.  `M-' means use the Meta (or Alt) key.<br>If you have no Meta key, you may instead type ESC followed by the charac\<br>ter.)<br><br>If an Emacs session crashed recently, type M-x recover-session RET<br>to recover the files you were editing.<br><br>GNU Emacs 21.2.1 (powerpc-apple-darwin7.0)<br> of 2006-07-31 on localhost<br>Copyright (C) 2001 Free Software Foundation, Inc.<br><br>GNU Emacs comes with ABSOLUTELY NO WARRANTY; type C-h C-w for full detai\<br>ls.<br>Emacs is Free Software--Free as in Freedom--so you can redistribute copi\<br>es<br>of Emacs and modify it; type C-h C-c to see the conditions.<br>Type C-h C-d for information on getting the latest version.<br><br><br>と表示されます。<br>無事emacsが起動しました。<br>なにかキーを押すと画面が下のように変わります。<br><br><br>File Edit Options Buffers Tools Help                                     <br>;; This buffer is for notes you don't want to save, and for Lisp evaluat\<br>ion.<br>;; If you want to create a file, visit that file with C-x C-f,<br>;; then enter the text in that file's own buffer.<br><br>せっかくだからテトリスをしましょう。<br><br>（tetris)と入力。<br><br>カーソルを（tetris）の直後（つまり『の』の位置）に持って来て<br>controlキーとXを同時に押す。<br>その後controlキーとEを同時に押す。<br><br>はい。emacsでテトリスができました。<br><br>終わるときは<br>まず、controlキーとXを同時に押す。<br>その後controlキーとCを同時に押す。<br>ご苦労様でした。<br><br>まぁemacs起動後の操作方法はMacに限らず他でも同じです。<br><br>今回のポイント<br>終わるときは<br>まず、controlキーとXを同時に押す。<br>その後controlキーとCを同時に押す。<br>
]]>
</description>
<link>https://ameblo.jp/start-emacs/entry-10031672114.html</link>
<pubDate>Tue, 24 Apr 2007 15:34:14 +0900</pubDate>
</item>
<item>
<title>emacsの種類</title>
<description>
<![CDATA[ emacsには幾つかの種類があります。<br>emacs<br>X-emacs<br>carbon-emacs<br>Aquamacs-emacs<br>weadow<br>...etc<br>emacsとX-emacsがメジャーどころ。<br>carbon-emacsと Aquamacs-emacsはMacのGUIを使っているMac専用の変種。<br>weadowはwindows用変種。<br>まぁ基本的にはどれもそう違いは無いのでどれでも好きなのを使うと良いでしょう。<br><br>ちなみに筆者はプライベートではMac　OSXで普通のemacsを使ってます。バージョンはいくつだったっけ？まぁあんま気にしない。どれでもlispが動きます。emacs上で動作するlispをelispと呼びます。<br><br>とりあえず、それぞれのemacsのリンク貼っときます。<br><br><a href="http://www.gnu.org/software/emacs/" target="_blank"> emacs </a><br><a href="http://www.xemacs.org/" target="_blank"> X-emacs </a><br><a href="http://www.apple.com/downloads/macosx/unix_open_source/carbonemacspackage.html" target="_blank"> carbon-emacs </a><br><a href="http://aquamacs.org/" target="_blank"> Aquamacs-emacs </a><br><a href="http://www.meadowy.org/meadow/" target="_blank"> weadow </a><br>あれmeadowが、、あれ？<br>まぁ俺には関係ないさ。
]]>
</description>
<link>https://ameblo.jp/start-emacs/entry-10031670415.html</link>
<pubDate>Tue, 24 Apr 2007 15:13:35 +0900</pubDate>
</item>
</channel>
</rss>
