<?xml version="1.0" encoding="UTF-8" ?>
<rdf:RDF
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns="http://purl.org/rss/1.0/"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:content="http://purl.org/rss/1.0/modules/content/">

  <channel rdf:about="http://honoka.blog.shinobi.jp/RSS/100/">
    <title>HonokaBlog</title>
    <link>http://honoka.blog.shinobi.jp/</link>
    <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://honoka.blog.shinobi.jp/RSS/" />
    <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" />
    <description>萌え指向プログラミング言語「萌香」のBlog</description>
    <dc:language>ja</dc:language>
    <dc:date>2008-05-04T22:30:55+09:00</dc:date>
    <items>
    <rdf:Seq>
      <rdf:li rdf:resource="http://honoka.blog.shinobi.jp/2ch/last%20battles" />
      <rdf:li rdf:resource="http://honoka.blog.shinobi.jp/%E8%90%8C%E9%A6%99/%E8%90%8C%E9%A6%99%E3%82%92%E4%BD%BF%E3%81%88%E3%81%B0%E4%BA%AC%E5%A4%A7%E3%81%AB%E3%82%82%E5%85%A5%E3%82%8C%E3%82%8B%E3%81%AE%E5%B7%BB" />
      <rdf:li rdf:resource="http://honoka.blog.shinobi.jp/c-/.net%20framework%E3%81%A7%E7%94%BB%E5%83%8F%E3%82%92%E6%89%B1%E3%81%86%E3%81%A8%E3%81%8D%E3%81%AE%E5%9F%BA%E6%9C%AC" />
      <rdf:li rdf:resource="http://honoka.blog.shinobi.jp/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0/microsoft%20excel%E7%94%A8csv%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AE%E4%BD%9C%E6%88%90" />
      <rdf:li rdf:resource="http://honoka.blog.shinobi.jp/mew/mew%E3%81%A7%E3%81%AEsmtp%E8%AA%8D%E8%A8%BC" />
      <rdf:li rdf:resource="http://honoka.blog.shinobi.jp/ruby/%E3%80%8Cruby%E3%81%A7%E7%BF%92%E4%BD%9C%E3%80%8D%E3%81%AE%E6%B7%BB%E5%89%8A%E9%81%94" />
      <rdf:li rdf:resource="http://honoka.blog.shinobi.jp/%E8%90%8C%E9%A6%99/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0%E4%B8%AD%E3%81%AE%E6%9C%AB%E5%B0%BE%E5%86%8D%E5%B8%B0%E3%81%AB%E9%96%A2%E3%81%99%E3%82%8B%E3%83%A1%E3%83%A2" />
      <rdf:li rdf:resource="http://honoka.blog.shinobi.jp/%E6%96%87%E5%AD%97%E3%82%B3%E3%83%BC%E3%83%89/%E6%9C%9D%E6%97%A5%E6%96%B0%E8%81%9E%E3%81%AE%E5%AD%97%E4%BD%93-%E3%81%AE%E5%A4%89%E6%9B%B4" />
      <rdf:li rdf:resource="http://honoka.blog.shinobi.jp/%E8%90%8C%E9%A6%99/blog%E4%BD%9C%E3%82%8A%E3%81%BE%E3%81%97%E3%81%9F" />
    </rdf:Seq>
    </items>
  </channel>

  <item rdf:about="http://honoka.blog.shinobi.jp/2ch/last%20battles">
    <link>http://honoka.blog.shinobi.jp/2ch/last%20battles</link>
    <title>Last battles</title>
    <description>2chより。ガンダムラストバトル集
 678 名前： そら(熊本県)[sage] 投稿日：2008/05/04(日) 18:03:33.28 ID:Kp5IFPry0
youtubeで見られるラストバトル集


Z  http://www.youtube.com/watch?v=tCRUT...</description>
    <content:encoded><![CDATA[<h2>2chより。ガンダムラストバトル集</h2>
<cite> 678 名前： そら(熊本県)[sage] 投稿日：2008/05/04(日) 18:03:33.28 ID:Kp5IFPry0<br />
youtubeで見られるラストバトル集<br />
<br />
<ul>
<li>Z <a href="http://www.youtube.com/watch?v=tCRUTQt_vfM"> http://www.youtube.com/watch?v=tCRUTQt_vfM</a></li>
<li>ZZ <a href="http://www.youtube.com/watch?v=z-sUvZF-ZEw"> http://www.youtube.com/watch?v=z-sUvZF-ZEw</a></li>
<li>逆襲のシャア <a href="http://www.youtube.com/watch?v=30fZrYxxVpo"> http://www.youtube.com/watch?v=30fZrYxxVpo</a></li>
<li>F91 <a href="http://www.youtube.com/watch?v=sXY_fBnGvkw"> http://www.youtube.com/watch?v=sXY_fBnGvkw</a></li>
<li>G（東方不敗） <a href="http://www.youtube.com/watch?v=xHSSDFBQ2Co"> http://www.youtube.com/watch?v=xHSSDFBQ2Co</a></li>
<li>G <a href="http://www.youtube.com/watch?v=wi9f_IbAvIQ"> http://www.youtube.com/watch?v=wi9f_IbAvIQ</a></li>
<li>X <a href="http://www.youtube.com/watch?v=D6EKSLHcEcY"> http://www.youtube.com/watch?v=D6EKSLHcEcY</a></li>
<li>&forall; <a href="http://www.youtube.com/watch?v=SeWACe1FaSM"> http://www.youtube.com/watch?v=SeWACe1FaSM</a></li>
<li>00 <a href="http://www.youtube.com/watch?v=kgGURs5b_q4"> http://www.youtube.com/watch?v=kgGURs5b_q4</a></li>
</ul>
</cite>]]></content:encoded>
    <dc:subject>2ch</dc:subject>
    <dc:date>2008-05-04T22:30:55+09:00</dc:date>
    <dc:creator>No Name Ninja</dc:creator>
    <dc:publisher>NINJA BLOG</dc:publisher>
    <dc:rights>No Name Ninja</dc:rights>
  </item>
  <item rdf:about="http://honoka.blog.shinobi.jp/%E8%90%8C%E9%A6%99/%E8%90%8C%E9%A6%99%E3%82%92%E4%BD%BF%E3%81%88%E3%81%B0%E4%BA%AC%E5%A4%A7%E3%81%AB%E3%82%82%E5%85%A5%E3%82%8C%E3%82%8B%E3%81%AE%E5%B7%BB">
    <link>http://honoka.blog.shinobi.jp/%E8%90%8C%E9%A6%99/%E8%90%8C%E9%A6%99%E3%82%92%E4%BD%BF%E3%81%88%E3%81%B0%E4%BA%AC%E5%A4%A7%E3%81%AB%E3%82%82%E5%85%A5%E3%82%8C%E3%82%8B%E3%81%AE%E5%B7%BB</link>
    <title>萌香を使えば京大にも入れるの巻</title>
    <description>萌香で京大の入試問題を力技の巻
おまえにハートブレイク☆オーバードライブ - 小粋な数学入試問題 より 
......って引用しようと思ったけど数式が画像とか引用がめんどくさいので元記事読んでください。 
んでこれの設問の2。これが萌香があれば解けちゃうんです。ソースはこちら 
「レンジ を...</description>
    <content:encoded><![CDATA[<h1>萌香で京大の入試問題を力技の巻</h1>
<p><a href="http://d.hatena.ne.jp/ykurihara/20080307#1204897806">おまえにハートブレイク☆オーバードライブ - 小粋な数学入試問題 </a>より </p>
<p>......って引用しようと思ったけど数式が画像とか引用がめんどくさいので元記事読んでください。 </p>
<p>んでこれの設問の2。これが萌香があれば解けちゃうんです。ソースはこちら </p>
<pre>「レンジ を 「(開始 終点)
      「もし (開始 終点 &gt;)
              '()
             「開始 「(開始 1.0 +) 終点 の レンジ」 の コンス」」
           の 仕事」 と 定義」


「階乗 を 「(a b)
        「もし (b 0.1 &lt;=)   ;; たぶん無いけど丸め誤差とかがあったときのため
              1.0
             「(a (b 1.0 -) の 階乗) a *」」
       の 仕事」 と 定義」


「f を 「(n)
     「n の 7 の 剰余」
    の 仕事」 と 定義」


「g を 「(n)
        (3 に
           ((+
             0
             (「(num) 「num の n の 階乗」 の 仕事」 に
              「1 7 の レンジ」 を マップ)
          の 右畳み込み) の f)
           を かける)  仕事」 と 定義」



「「(n) 「n と 表示」
        「&quot;:&quot; と 表示」
        「(n の g) と 表示」
        「改行」              の 仕事」 に
  「1 15 の レンジ」 を マップ」
</pre>
<p>&nbsp;</p>
<p>これを実行すると6と12のところで18点ゲット。 fの性質よりmaxの点が18なので答案用紙に6と書けば、この問題はパーヘクツですよあなた !!</p>
<p>なんで中途半端な15までなのかって ?..........</p>
<p>萌香は数値をすべてRubyのFloatで保持しているため Cのdouble型の精度となります。そうすると仮数部が53 bitなため2^53を超えるところ 10^16のところで正確な計算ができなくなってしまい、 20のところで7^20が出て、これが10^16を超えるので正確な計算ができなくなりおかしな数字が出てしまう結果となります。これは <a href="http://d.hatena.ne.jp/tek_koc/20080308/1204967022">ここ(遥か彼方の彼方から - 小粋な数学入試問題をcodepadで組んでみた)</a> のプログラムもおんなじ原因じゃないかと思ってたらすでに指摘があった..... </p>
<p>ちなみにRuby版が </p>
<pre>#!/usr/local/bin/ruby


def pow(x, y)
  result = 1
  (1..y).each do |dummy|
    result = result * x
  end

  return result
end


def f(n)
  return n % 7
end


def g(n)
  return 3 * (f((1..7).map{|num| pow(num, n)}.inject(0){|sum, num| sum + num}))
end



(1..100).each do |num|
  puts &quot;#{num}:#{g(num)}&quot;
end
</pre>
Scheme(Gauche)版が
<pre>#!/usr/local/bin/gosh

(use srfi-1)

(define pow
  (lambda (x y)
    (if (= 1 y)
	x
	(* x (pow x (- y 1))))))

(define f
  (lambda (n)
    (modulo n 7)))

(define g
  (lambda (n)
    (* 3 
       (f (fold + 0 (map (lambda (num) (pow num n))
			 (iota 7 1)))))))


(map (lambda (num)
       (format #t &quot;~a: ~a\n&quot; num (g num)))
     (iota 100 1))
</pre>
となります。
<p>&nbsp;</p>
<p>どちらも100程度まではなんの問題もなく動きます。 Bignumなんかいらね、とか思ってたのですが、この程度でも必要になってくるのですね。</p>]]></content:encoded>
    <dc:subject>萌香</dc:subject>
    <dc:date>2008-03-13T01:26:54+09:00</dc:date>
    <dc:creator>No Name Ninja</dc:creator>
    <dc:publisher>NINJA BLOG</dc:publisher>
    <dc:rights>No Name Ninja</dc:rights>
  </item>
  <item rdf:about="http://honoka.blog.shinobi.jp/c-/.net%20framework%E3%81%A7%E7%94%BB%E5%83%8F%E3%82%92%E6%89%B1%E3%81%86%E3%81%A8%E3%81%8D%E3%81%AE%E5%9F%BA%E6%9C%AC">
    <link>http://honoka.blog.shinobi.jp/c-/.net%20framework%E3%81%A7%E7%94%BB%E5%83%8F%E3%82%92%E6%89%B1%E3%81%86%E3%81%A8%E3%81%8D%E3%81%AE%E5%9F%BA%E6%9C%AC</link>
    <title>.Net Frameworkで画像を扱うときの基本</title>
    <description>Bitmap#(set|get)Pixelは遅い
.Net Frameworkで画像ファイルにフィルタなどの処理で
たくさんのピクセルの値を変更したい場合(set|get)Pixelメソッドを
使用するとめちゃくちゃ遅いです。これはBitmapオブジェクトが
単なる画像のコンテナじゃなくて他...</description>
    <content:encoded><![CDATA[<h2>Bitmap#(set|get)Pixelは遅い</h2>
<p>.Net Frameworkで画像ファイルにフィルタなどの処理で
たくさんのピクセルの値を変更したい場合(set|get)Pixelメソッドを
使用するとめちゃくちゃ遅いです。これはBitmapオブジェクトが
単なる画像のコンテナじゃなくて他のいろんなものとの調停とか
があるからかな ?</p>

<p>とりあえず遅いです</p>

<p>そこで.Net Framework的にはBitmapデータの
画像データをロックして自由にいじっても大丈夫なようにし、
いじってアンロックするというのが作法みたいです。</p>

<h2>手順</h2>

<ol>
<li>Bitmap#LockBitsメソッドを使いBitmapDataオブジェクトを獲得する。</li>
<li>得られたBitmapDataオブジェクトから画像データをコピー。
具体的には
<pre>
System.Runtime.InteropServices.Marshal.copy(bitmapdata.Scan0, (Byte[] buffer, (int)開始点, (int)長さ)
</pre>
</li>
<li>(Byte[])bufferを適当にいじる</li>
<li>いじった画像データを元のBitmapDataオブジェクトにコピー。
具体的には
<pre>
System.Runtime.InteropServices.Marshal.copy(Byte[] buffer, (int)開始点, bitmapData.Scan0, (int)長さ)
</pre></li>
<li>bitmapImage.UnlockBits(bitmapData)
とかやって元のbitmap imageに変更を適用</li>
</ol>

<p>See
<a href="http://junki.lix.jp/csgr/002ColorDataAccess1.htm">
MemoNyanDum - Bitmap の内部色データにアクセスする</a>
</p>]]></content:encoded>
    <dc:subject>C#</dc:subject>
    <dc:date>2008-02-18T02:00:03+09:00</dc:date>
    <dc:creator>No Name Ninja</dc:creator>
    <dc:publisher>NINJA BLOG</dc:publisher>
    <dc:rights>No Name Ninja</dc:rights>
  </item>
  <item rdf:about="http://honoka.blog.shinobi.jp/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0/microsoft%20excel%E7%94%A8csv%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AE%E4%BD%9C%E6%88%90">
    <link>http://honoka.blog.shinobi.jp/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0/microsoft%20excel%E7%94%A8csv%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AE%E4%BD%9C%E6%88%90</link>
    <title>Microsoft Excel用CSVファイルの作成</title>
    <description>Microsoft Excelで使用するためのCSV形式のファイルを作成しようとしたらはまりました。
現象
改行を含んだデータを1セルに入れるため、 ダブルクォーテーションで囲んだのですが、 中に入っている改行コードがCSV行末の改行と認識されてしまい
列がめちゃくちゃになってしまいました。...</description>
    <content:encoded><![CDATA[<p>Microsoft Excelで使用するためのCSV形式のファイルを作成しようとしたらはまりました。</p>
<h2>現象</h2>
<p>改行を含んだデータを1セルに入れるため、 ダブルクォーテーションで囲んだのですが、 中に入っている改行コードがCSV行末の改行と認識されてしまい
列がめちゃくちゃになってしまいました。</p>
<h2>ダブルクォーテーションに関わるExcelの挙動</h2>
<p>何が原因だったかと言うと、 自分はいつもCSVファイルを書く時カンマの後ろにスペースを入れるのですが、 (そのため以下のように文字列前後のスペースを取り除く) Excel的にはそういうのはだめでスペースから始まる文字列と みなされてしまいました。</p>
<p>で、おまけにExcelは先頭にないダブルクォーテーションは制御記号ではなく ただの文字として扱ってしまい、結局ダブルクォーテーションで囲まれた改行は CSV的にエスケープされることなく行の終端記号として扱われてしまいました。</p>
<h3>普段書いてたプログラム(in Ruby)</h3>
<pre>row = line.split(',').map {|elm| elm.strip}<br /></pre>
<h2>ExcelのCSVファイル中の改行</h2>
<p>Excelはセル内の改行にはLFを行の終端にはCR + LFを使っていました。 これは、さすがにExcelがよきに計らってくれるかな。 とりあえず動くので検証はめんどい。 エディタでちょいちょいといかないかしら。</p>
<p>行終端がCR + LFなのは <a href="http://www.kasai.fm/wiki/rfc4180jp">RFC4180</a>的に妥当なのですが、 なんでセル内の改行はLFだけなんだろう。 同じように出力しようとするとちょっとめんどい</p>
<h2>まとめ</h2>
<p>とりあえず、Excelで使うためのCSVファイルを作成する上での注意点を Excelとは直接関係ない(RFCで定められたCSVファイル一般のことも含めて) まとめると。</p>
<ol>
    <li>カンマの前後にスペースを入れてはいけない。</li>
    <li>漢字コードはShift JIS</li>
    <li>改行コードはCR + LF。ただし、セル内の改行はLF</li>
</ol>
<p>ちなみに使ったExcelはExcel2000 for Windows。 最新のExcelならUTF-8は使えるかな ?</p>
<h2>リンク
<ul>
    <li><a href="http://www.ietf.org/rfc/rfc4180.txt"> RFC4180 - Common Format and MIME Type for Comma-Separated Values (CSV) Files </a></li>
    <li><a href="http://www.kasai.fm/wiki/rfc4180jp">RFC4180日本語訳</a></li>
</ul>
</h2>
<h2>雑感</h2>
<p>今日初めてCSVファイルフォーマットのRFCを読みました。 いろいろ、細かい点が知らなくてためになりました。</p>
<p>でもですよ、カンマの後ろにスペースは付けたいし、 人間に見やすいようにカンマの位置というか文字列の開始位置を そろえたいじゃないですか。 まぁ、そんな理由でmustでなくshould not be ignoredなのだと思います。</p>
<p>だからといって、自分一人で使うからいいやと自由な形式で プログラムを書いたりするとあとではまることになるんだな。きっと。 </p>]]></content:encoded>
    <dc:subject>プログラミング</dc:subject>
    <dc:date>2007-10-30T13:33:49+09:00</dc:date>
    <dc:creator>No Name Ninja</dc:creator>
    <dc:publisher>NINJA BLOG</dc:publisher>
    <dc:rights>No Name Ninja</dc:rights>
  </item>
  <item rdf:about="http://honoka.blog.shinobi.jp/mew/mew%E3%81%A7%E3%81%AEsmtp%E8%AA%8D%E8%A8%BC">
    <link>http://honoka.blog.shinobi.jp/mew/mew%E3%81%A7%E3%81%AEsmtp%E8%AA%8D%E8%A8%BC</link>
    <title>Mewでのsmtp認証</title>
    <description>smtp認証
プロバイダのメールアドレスがsmtp認証になったんです。
で、そのための設定をしなければならなかったのですが
まったく設定の必要はなかったです。
(popサーバのアドレスの変更とかは必要だった)


すごいですねMew
...</description>
    <content:encoded><![CDATA[<h1>smtp認証</h1>
<p>プロバイダのメールアドレスがsmtp認証になったんです。</p>
<p>で、そのための設定をしなければならなかったのですが
まったく設定の必要はなかったです。
(popサーバのアドレスの変更とかは必要だった)
</p>
<p>
すごいですね<a href="http://www.mew.org/">Mew</a>
</p>]]></content:encoded>
    <dc:subject>Mew</dc:subject>
    <dc:date>2007-04-17T23:22:02+09:00</dc:date>
    <dc:creator>No Name Ninja</dc:creator>
    <dc:publisher>NINJA BLOG</dc:publisher>
    <dc:rights>No Name Ninja</dc:rights>
  </item>
  <item rdf:about="http://honoka.blog.shinobi.jp/ruby/%E3%80%8Cruby%E3%81%A7%E7%BF%92%E4%BD%9C%E3%80%8D%E3%81%AE%E6%B7%BB%E5%89%8A%E9%81%94">
    <link>http://honoka.blog.shinobi.jp/ruby/%E3%80%8Cruby%E3%81%A7%E7%BF%92%E4%BD%9C%E3%80%8D%E3%81%AE%E6%B7%BB%E5%89%8A%E9%81%94</link>
    <title>「Rubyで習作」の添削達</title>
    <description>ユメのチカラ Rubyで習作 に吉岡弘隆さんのRubyプログラムが掲載されていていろんな人が添削しています。 
プログラムの内容は親(?)ファイルにLinuxディストリビューションのパッケージ情報が入っていて、 (複数の)子(?)ファイルにそれが入っている場合&amp;amp;quot;include&amp;amp;quot;...</description>
    <content:encoded><![CDATA[<p><a href="http://blog.miraclelinux.com/yume/2007/02/ruby_b40b.html">ユメのチカラ Rubyで習作</a> に吉岡弘隆さんのRubyプログラムが掲載されていていろんな人が添削しています。 </p>
<p>プログラムの内容は親(?)ファイルにLinuxディストリビューションのパッケージ情報が入っていて、 (複数の)子(?)ファイルにそれが入っている場合&quot;include&quot;と、入っていない場合&quot;not-include&quot;と表示するものです。 (各行がパッケージ名、各列が各ディストリビューションのテーブルとなる) </p>
<p>個人的には <a href="http://d.hatena.ne.jp/tociyuki/20070206/1170766993">Tociyuki::Diary - 吉岡弘隆さんの「Rubyで習作」を添削</a> が非常に参考になりました。 </p>
<p>特にArrayの最初の要素とそれ以外の要素を分けるために </p>
<blockquote>asianux, *dists = ARGV.collect do |filename| </blockquote>とやるとこなんかは自分のイディオムに入ってなかったので大変参考になりました。
<p>自分は最初 </p>
<pre>mother   = ARGV[0]
children = ARGV[1..-1]
</pre>
なんてのを考えていました。
<p>自分でやるなら結果をCSV形式にしてこんなかんじにしますでしょうか。 </p>
<pre>#!/usr/local/bin/ruby

mother_name, *child_names = ARGV

children = child_names.map {|name|
                aHash = Hash.new(&quot;not-include&quot;)
                IO.foreach(name) {|package_name|
                    aHash[package_name] = &quot;include&quot;
                }
                aHash
            }

IO.foreach(mother) {|package_name|
    tArray = [package_name] \
           + children.map {|child|
                 child[package_name]
             }
    puts tArray.join(&quot;, &quot;)
}
</pre>
テストデータがないためデバッグができないのでぜんぜん動かなかったらすみません。
<p>とりあえずHashのデフォルト値を使ったので条件分岐がなくなったのがちょっとした利点です。 </p>]]></content:encoded>
    <dc:subject>Ruby</dc:subject>
    <dc:date>2007-02-14T01:14:15+09:00</dc:date>
    <dc:creator>No Name Ninja</dc:creator>
    <dc:publisher>NINJA BLOG</dc:publisher>
    <dc:rights>No Name Ninja</dc:rights>
  </item>
  <item rdf:about="http://honoka.blog.shinobi.jp/%E8%90%8C%E9%A6%99/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0%E4%B8%AD%E3%81%AE%E6%9C%AB%E5%B0%BE%E5%86%8D%E5%B8%B0%E3%81%AB%E9%96%A2%E3%81%99%E3%82%8B%E3%83%A1%E3%83%A2">
    <link>http://honoka.blog.shinobi.jp/%E8%90%8C%E9%A6%99/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0%E4%B8%AD%E3%81%AE%E6%9C%AB%E5%B0%BE%E5%86%8D%E5%B8%B0%E3%81%AB%E9%96%A2%E3%81%99%E3%82%8B%E3%83%A1%E3%83%A2</link>
    <title>プログラム中の末尾再帰に関するメモ</title>
    <description>「萌香」のコードを整理しようと思ってコードを読んだんですが、「末尾再起の最適化に関するメモ」というコメントがなにを書いてるんだかさっぱりわからない。ポルナレフAAを貼りたくなるぐらい何がなんだかわからない。なんか悪い薬でもやってたんだろうか。
きっと末尾再帰っぽいことがようやくできて舞い上がってい...</description>
    <content:encoded><![CDATA[<p>「萌香」のコードを整理しようと思ってコードを読んだんですが、「末尾再起の最適化に関するメモ」というコメントがなにを書いてるんだかさっぱりわからない。ポルナレフAAを貼りたくなるぐらい何がなんだかわからない。なんか悪い薬でもやってたんだろうか。</p>
<p>きっと末尾再帰っぽいことがようやくできて舞い上がっていたんだろう。黒歴史として早く葬りたい。</p>
<p>解読してみる。</p>
<p>--- begin 本文 ---<br />
末尾再帰の最適化に関するメモ</p>
<p>本プログラムには変数のフレームのスタックと継続のスタックが存在します。<br />
Lexical scopeのクロージャなので、クロージャの再帰呼出しではフレームの<br />
スタックが積まれることはありません。<br />
(その呼出しへの参照が残っていた場合、そこに保持されている。)</p>
<p>クロージャの呼出し時に<br />
フレームの退避 --&gt; クロージャの実行 --&gt; フレームの復帰<br />
と行うと、クロージャの実行時に末尾再帰呼出しがあった場合<br />
フレームの退避 --&gt; クロージャの実行 --&gt;<br />
フレームの退避 --&gt; クロージャの実行 --&gt; フレームの復帰 --&gt; フレームの復帰<br />
となります。<br />
ここで、フレームの退避はlexical scopeクロージャの場合フレームの<br />
新規作製であり、作製されたフレームはクロージャの実行の終了とともに<br />
GCによって回収されるようになります。</p>
<p>結局クロージャの実行時にフレームの復帰の継続がどんどん増えていくことに<br />
なります。<br />
フレームの復帰は最後のものだけ行えばよく、<br />
末尾再帰の場合、フレームの復帰の継続を作製する場合、次の継続に<br />
フレームの復帰があった場合継続の作製は行う必要はありません。</p>
<p>以上のことから、フレーム復帰の継続の作製を抑制すれば末尾再帰の<br />
最適化になることになります。<br />
--- end 本文 ---</p>
<p>--- 本プログラムには変数のフレームのスタックと継続のスタックが存在します。<br />
これは単なる事実。ここでいう継続のスタックで保持されているものには次の関数呼び出しで使われる引数の保持先(return valueの戻し先)等様々なものがある。(わかりにくくてすみません。あとで整理する。)　なので厳密な「継続のスタック」ではないかも知れない。</p>
<p>--- Lexical scopeのクロージャなので、クロージャの再帰呼出しではフレームのスタックが積まれることはありません。<br />
「クロージャの再帰呼び出し」ではなく「クロージャの呼び出し」。ちなみに現在の実装ではフレームを積んでおきながら、呼び出しと同時にクロージャ定義時のフレームの参照に変更している。あとでなおす。</p>
<p>--- (その呼出しへの参照が残っていた場合、そこに保持されている。)<br />
「その」と「そこ」が何を指しているかわからない。</p>
<p>--- クロージャの呼出し時にフレームの退避 --&gt; クロージャの実行 --&gt; フレームの復帰と行うと、クロージャの実行時に末尾再帰呼出しがあった場合フレームの退避 --&gt; クロージャの実行 --&gt;フレームの退避 --&gt; クロージャの実行 --&gt; フレームの復帰 --&gt; フレームの復帰となります。<br />
ここで、フレームの退避はlexical scopeクロージャの場合フレームの新規作製であり、作製されたフレームはクロージャの実行の終了とともにGCによって回収されるようになります。<br />
ここでいう「フレームの退避」はフレームチェインに新しいフレームを作成すること。(新しいフレームは既存のフレームチェインにつなげられる) なんで「退避」と言う言葉を使ったのかわからない。 今考えると「フレームの退避」「フレームの復帰」は必要ないっぽい。(現在見えている変数フレームは継続スタックに保持されているじゃん) あとでなおす。</p>
<p>--- 結局クロージャの実行時にフレームの復帰の継続がどんどん増えていくことになります。フレームの復帰は最後のものだけ行えばよく、末尾再帰の場合、フレームの復帰の継続を作製する場合、次の継続にフレームの復帰があった場合継続の作製は行う必要はありません。</p>
<p>--- 以上のことから、フレーム復帰の継続の作製を抑制すれば末尾再帰の最適化になることになります。<br />
現在の実装ではフレームの復帰が連続する場合その継続の作成を抑制しているがフレームの復帰は必要ないっぽい。あとでなおす。</p>]]></content:encoded>
    <dc:subject>萌香</dc:subject>
    <dc:date>2007-01-17T03:14:05+09:00</dc:date>
    <dc:creator>No Name Ninja</dc:creator>
    <dc:publisher>NINJA BLOG</dc:publisher>
    <dc:rights>No Name Ninja</dc:rights>
  </item>
  <item rdf:about="http://honoka.blog.shinobi.jp/%E6%96%87%E5%AD%97%E3%82%B3%E3%83%BC%E3%83%89/%E6%9C%9D%E6%97%A5%E6%96%B0%E8%81%9E%E3%81%AE%E5%AD%97%E4%BD%93-%E3%81%AE%E5%A4%89%E6%9B%B4">
    <link>http://honoka.blog.shinobi.jp/%E6%96%87%E5%AD%97%E3%82%B3%E3%83%BC%E3%83%89/%E6%9C%9D%E6%97%A5%E6%96%B0%E8%81%9E%E3%81%AE%E5%AD%97%E4%BD%93-%E3%81%AE%E5%A4%89%E6%9B%B4</link>
    <title>朝日新聞の字体?の変更</title>
    <description>今まで簡略化されていた文字を元の文字?の表記に戻すらしい。d.hatena.ne.jp/NAOI/20070109/1168334642
ところでこれって字体 ?(グリフ ?)の変更というので正しいのでしょうか。変換は一対一で出来るのでしょうか。葛城市の問題は ? 高と髙はどうなるの ? 今回の変...</description>
    <content:encoded><![CDATA[<p>今まで簡略化されていた文字を元の文字?の表記に戻すらしい。<a href="http://d.hatena.ne.jp/NAOI/20070109/1168334642">d.hatena.ne.jp/NAOI/20070109/1168334642</a></p>
<p>ところでこれって字体 ?(グリフ ?)の変更というので正しいのでしょうか。変換は一対一で出来るのでしょうか。葛城市の問題は ? 高と髙はどうなるの ? 今回の変更はそこまでの問題は扱わず単純にグリフの変更で対応できるもののみ扱うの ? 文字コードは難しいです(&gt; &lt;;)</p>
<p>ところで初めてのトラックバックなんだけどこれでいいのかな ? 引用元に迷惑掛けてないかな ?</p>]]></content:encoded>
    <dc:subject>文字コード</dc:subject>
    <dc:date>2007-01-10T01:39:31+09:00</dc:date>
    <dc:creator>No Name Ninja</dc:creator>
    <dc:publisher>NINJA BLOG</dc:publisher>
    <dc:rights>No Name Ninja</dc:rights>
  </item>
  <item rdf:about="http://honoka.blog.shinobi.jp/%E8%90%8C%E9%A6%99/blog%E4%BD%9C%E3%82%8A%E3%81%BE%E3%81%97%E3%81%9F">
    <link>http://honoka.blog.shinobi.jp/%E8%90%8C%E9%A6%99/blog%E4%BD%9C%E3%82%8A%E3%81%BE%E3%81%97%E3%81%9F</link>
    <title>Blog作りました</title>
    <description>萌え指向プログラミング言語「萌香」を公開してから１年経ちました。
この一年何もしてないように見えていろいろやってたんですよ。エイトクィーンの記事を書こうと悪戦苦闘してたのですがなかなかうまく書けなくって。人にわかる文章書くのって難しいですね。
ほんとは一周年のときにエイトクィーンの記事くらいは書...</description>
    <content:encoded><![CDATA[<p>萌え指向プログラミング言語「萌香」を公開してから１年経ちました。</p>
<p>この一年何もしてないように見えていろいろやってたんですよ。エイトクィーンの記事を書こうと悪戦苦闘してたのですがなかなかうまく書けなくって。人にわかる文章書くのって難しいですね。</p>
<p>ほんとは一周年のときにエイトクィーンの記事くらいは書きたかったのですが、あきらめて中途半端ですが順列の作成プログラムをアップするだけにしました。(一応エイトクィーンのプログラムも出来てたはずなのですがどっかいっちゃった。)</p>
<p>今後ともよろしくお願いします。</p>]]></content:encoded>
    <dc:subject>萌香</dc:subject>
    <dc:date>2006-12-25T01:59:51+09:00</dc:date>
    <dc:creator>No Name Ninja</dc:creator>
    <dc:publisher>NINJA BLOG</dc:publisher>
    <dc:rights>No Name Ninja</dc:rights>
  </item>
</rdf:RDF>
