<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Go towards a Word-Progress &#187; IronScheme</title>
	<atom:link href="http://wordprogress.org/archives/tag/ironscheme/feed" rel="self" type="application/rss+xml" />
	<link>http://wordprogress.org</link>
	<description>　～言霊とプログラム言語の共進化!?</description>
	<lastBuildDate>Fri, 22 Jan 2010 03:37:35 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<atom:link rel="hub" href="http://pubsubhubbub.appspot.com"/><atom:link rel="hub" href="http://superfeedr.com/hubbub"/>		<item>
		<title>IronScheme その２　Wikibookに学ぶ(vistaオチ)</title>
		<link>http://wordprogress.org/archives/359</link>
		<comments>http://wordprogress.org/archives/359#comments</comments>
		<pubDate>Tue, 10 Nov 2009 09:08:50 +0000</pubDate>
		<dc:creator>アルケー</dc:creator>
				<category><![CDATA[未分類]]></category>
		<category><![CDATA[IronScheme]]></category>
		<category><![CDATA[WikiBook]]></category>

		<guid isPermaLink="false">http://wordprogress.org/?p=359</guid>
		<description><![CDATA[
		<script type="text/javascript"><!--
			show_rakuten('#vvv10003148', '<!-- cache --><div class="rakuten_image"><a href="http://hb.afl.rakuten.co.jp/hgc/0b16999f.c5b9c54b.0b1699a0.49a76732/?pc=http%3A%2F%2Fitem.rakuten.co.jp%2Fvvv%2Fvistaquest-vg2000%2F" target="_blank"><img src="http://thumbnail.image.rakuten.co.jp/@0_gold/vvv/img/vistaquest/vq2000-00.jpg?_ex=128x128"><br /><p class="rakuten_logo"><!-- Rakuten Web Services Attribution Snippet FROM HERE --><a href="http://webservice.rakuten.co.jp/" target="_blank"><img src="http://webservice.rakuten.co.jp/img/credit/200709/credit_4936.gif" border="0" alt="楽天ウェブサービスセンター" title="楽天ウェブサービスセンター" width="49" height="36"/></a><!-- Rakuten Web Services Attribution Snippet TO HERE --></p><font class="rakuten_warn"><a href="#" class="tooltip">[ご利用にあたって]<span>このサイトで掲載されている情報は、「Go towards a Word-Progress」の作成者により運営されています。価格、販売可能情報は、変更される場合があります。購入時に楽天市場店舗（www.rakuten.co.jp）に表示されている価格が、その商品の販売に適用されます。</span></a></font></div><div class="rakuten_info"><p class="rakuten_itemname"><a href="http://hb.afl.rakuten.co.jp/hgc/0b16999f.c5b9c54b.0b1699a0.49a76732/?pc=http%3A%2F%2Fitem.rakuten.co.jp%2Fvvv%2Fvistaquest-vg2000%2F" target="_blank">トイカメラ Vista Quest （ビスタクエスト） トイデジ 2色から選べる VQ2000 TOY CAMERA デジタルカメラ　VQ1005の後継機</a></p><p class="rakuten_caption">.top {font-size:12px;color:#FFFFFF;}.title {font-size:smaller;padding-bottom:10px;}.midashi {width:130px;margin-top:5px;font-size:smaller;}.txt {width:450px;font-size:smaller;}.redfont {color:#FF3300;font-size:9pt;} 商品説明 【商品名】 Vista Quest（ビスタクエスト） 【型番】 VQ……</p><p><em>販売価格：</em> 6300 円 <font class="rakuten_time">(10/07/30 06:38 更新)</font></p><p><em>販売店舗：</em> <a href="http://www.rakuten.co.jp/vvv/" target="_blank">ガジェット クラブ（Gadget Club）</a></p></div><!-- cache -->');
		// -->
		</script>
		一度、Scalaと比較しかかったIronSchemeだが、あまりに異種格闘技ということで、以下ではおとなしくSchemeのWikibookを通じ入門していこう。
標準インストールされたIronSchemeのホームディレクトリは以下 :  C:\Program Files\IronScheme  ここにパスを通して、コマンドプロンプトかPowerShellでiscとタイプするとREPL画面を立ち上げることができる。SchemeのWikibook、Schemeは言語仕様が小さいからマスターが簡単だ、とどこかで聞いたようなことを書いてある。
その通り、マスターしやすい教科書となってくれているのだろうか。以下、いくつか試していってみる。

・・・set!で破壊的代入、(define (手続きの名称と引数) (手続きの実体)の束縛。。
なぜ、こう書くのか、プログラミング入門であるならば、Lispの「前置記法」き少し丁寧に解説するのがいいのかも。個人的には、英語のSVOC構文の比ゆとして解説したくなる。I set a (as) one&#8230;てな関係を図示する。。  その後、式の要素として、リテラルを解説している、数値・文字列・文字・真偽値の４つしか提示されてないのは、初学者向けにちょうど良いだろう。  続いて、LispらしくListの解説となっている。  
emacsのeも知らない人は、ここでの括弧づけの嵐に、くじけてしまうかもしれない。
Scalaなら、
scala&#62; val lst = 1::2::3::Nil
lst: List[Int] = List(1, 2, 3)
scala&#62; lst.head
res11: Int = 1
scala&#62; lst.tail
res12: List[Int] = List(2, 3)
scala&#62; val lst = 1::2::3::Nil
lst: List[Int] = List(1, 2, 3)
  scala&#62; lst.head
res11: Int = 1
scala&#62; lst.tail
res12: List[Int] = [...]]]></description>
			<content:encoded><![CDATA[
		<script type="text/javascript"><!--
			show_rakuten('#vvv10003148', '<!-- cache --><div class="rakuten_image"><a href="http://hb.afl.rakuten.co.jp/hgc/0b16999f.c5b9c54b.0b1699a0.49a76732/?pc=http%3A%2F%2Fitem.rakuten.co.jp%2Fvvv%2Fvistaquest-vg2000%2F" target="_blank"><img src="http://thumbnail.image.rakuten.co.jp/@0_gold/vvv/img/vistaquest/vq2000-00.jpg?_ex=128x128"><br /><p class="rakuten_logo"><!-- Rakuten Web Services Attribution Snippet FROM HERE --><a href="http://webservice.rakuten.co.jp/" target="_blank"><img src="http://webservice.rakuten.co.jp/img/credit/200709/credit_4936.gif" border="0" alt="楽天ウェブサービスセンター" title="楽天ウェブサービスセンター" width="49" height="36"/></a><!-- Rakuten Web Services Attribution Snippet TO HERE --></p><font class="rakuten_warn"><a href="#" class="tooltip">[ご利用にあたって]<span>このサイトで掲載されている情報は、「Go towards a Word-Progress」の作成者により運営されています。価格、販売可能情報は、変更される場合があります。購入時に楽天市場店舗（www.rakuten.co.jp）に表示されている価格が、その商品の販売に適用されます。</span></a></font></div><div class="rakuten_info"><p class="rakuten_itemname"><a href="http://hb.afl.rakuten.co.jp/hgc/0b16999f.c5b9c54b.0b1699a0.49a76732/?pc=http%3A%2F%2Fitem.rakuten.co.jp%2Fvvv%2Fvistaquest-vg2000%2F" target="_blank">トイカメラ Vista Quest （ビスタクエスト） トイデジ 2色から選べる VQ2000 TOY CAMERA デジタルカメラ　VQ1005の後継機</a></p><p class="rakuten_caption">.top {font-size:12px;color:#FFFFFF;}.title {font-size:smaller;padding-bottom:10px;}.midashi {width:130px;margin-top:5px;font-size:smaller;}.txt {width:450px;font-size:smaller;}.redfont {color:#FF3300;font-size:9pt;} 商品説明 【商品名】 Vista Quest（ビスタクエスト） 【型番】 VQ……</p><p><em>販売価格：</em> 6300 円 <font class="rakuten_time">(10/07/30 06:38 更新)</font></p><p><em>販売店舗：</em> <a href="http://www.rakuten.co.jp/vvv/" target="_blank">ガジェット クラブ（Gadget Club）</a></p></div><!-- cache -->');
		// -->
		</script>
		<p>一度、<a href="http://wordprogress.org/archives/197">Scalaと比較しかかったIronScheme</a>だが、あまりに異種格闘技ということで、以下ではおとなしく<a href="http://ja.wikibooks.org/wiki/Scheme">SchemeのWikibook</a>を通じ入門していこう。</p>
<p>標準インストールされたIronSchemeのホームディレクトリは以下 :  C:\Program Files\IronScheme  ここにパスを通して、コマンドプロンプトかPowerShellでiscとタイプするとREPL画面を立ち上げることができる。<a href="http://ja.wikibooks.org/wiki/Scheme">SchemeのWikibook</a>、Schemeは言語仕様が小さいからマスターが簡単だ、とどこかで聞いたようなことを書いてある。</p>
<p>その通り、マスターしやすい教科書となってくれているのだろうか。以下、いくつか試していってみる。</p>
<p><img class="alignnone size-full wp-image-357" title="isc" src="http://wordprogress.org/wp2045/wp-content/uploads/2009/11/isc.jpg" alt="isc" width="630" height="266" /></p>
<p>・・・set!で破壊的代入、(define (手続きの名称と引数) (手続きの実体)の束縛。。</p>
<p>なぜ、こう書くのか、プログラミング入門であるならば、Lispの「前置記法」き少し丁寧に解説するのがいいのかも。個人的には、英語のSVOC構文の比ゆとして解説したくなる。I set a (as) one&#8230;てな関係を図示する。。  その後、式の要素として、リテラルを解説している、数値・文字列・文字・真偽値の４つしか提示されてないのは、初学者向けにちょうど良いだろう。  続いて、LispらしくListの解説となっている。  <img class="alignnone size-full wp-image-358" title="isc2" src="http://wordprogress.org/wp2045/wp-content/uploads/2009/11/isc2.jpg" alt="isc2" width="396" height="158" /></p>
<p>emacsのeも知らない人は、ここでの括弧づけの嵐に、くじけてしまうかもしれない。</p>
<p>Scalaなら、</p>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">scala&gt; val lst = 1::2::3::Nil</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">lst: List[Int] = List(1, 2, 3)</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">scala&gt; lst.head</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">res11: Int = 1</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">scala&gt; lst.tail</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">res12: List[Int] = List(2, 3)</div>
<p><span style="color: #800000;">scala&gt; val lst = 1::2::3::Nil<br />
lst: List[Int] = List(1, 2, 3)</span></p>
<p><span style="color: #800000;"> </span> <span style="color: #800000;">scala&gt; lst.head<br />
</span><span style="color: #800000;">res11: Int = 1</span></p>
<p><span style="color: #800000;">scala&gt; lst.tail<br />
<span style="color: #000000; "><span style="color: #800000;">res12: List[Int] = List(2, 3)</span> </span></span></p>
<p><span style="color: #800000;"><span style="color: #000000; ">LispにとってListは言語の中核であるのに対し、ScalaにとってはDSL(特化言語)のひとつに過ぎないので、どちらがどうというものではないが。 </span></span></p>
<p>さて、いよいよラムダが登場だ。Lispのラムダは、Scalaの関数リテラルにおける「=&gt;」</p>
<p><span style="color: #800000; ">scala&gt; def average = (x:Int, y:Int) =&gt; (x + y) / 2</span></p>
<p><span style="color: #800000;"><span style="color: #000000; "><span style="color: #800000;"><span style="color: #000000; "><span style="color: #800000;">average: (Int, Int) =&gt; Int</span></span></span></span></span></p>
<p><span style="color: #800000;"><span style="color: #000000; "><span style="color: #800000;"><span style="color: #000000; "><span style="color: #800000;"> </span> <span style="color: #800000;"> scala&gt; average(2,4)<br />
res13: Int = 3<br />
</span> <span style="color: #800000;"> scala&gt; average(2,5) res14: Int = 3</span></span></span></span></span></p>
<p><span style="color: #800000;"><span style="color: #000000; "> </span></span></p>
<p><span style="color: #800000;"><span style="color: #000000;">で、<span style="color: #800000; "><span style="color: #000000;">IronSchemeの方は・・・</span><span style="color: #000000;">Orz&#8230;実行結果をこぴぺしようとしたら、<span style="color: #ff0000;">Vistaごと落ちた</span></span><span style="color: #000000;">。。。さすが、ベータ版(いやRCか・・)。</span></span></span></span></p>
<p>これはひどいニムダ、いや、ラムダ。。。。</p>
<p>Wikibookの入門はここいらで修了(続きにS<a href="http://ja.wikibooks.org/wiki/Scheme/%E7%B6%99%E7%B6%9A">cheme(Lisp)の継続の話</a>がある)。</p>
<p>たしかに１時間くらいで読めるのだろうが、これだけでLispマスターになれるのは長門くらいなものだよ。ただ、ラムダの次に継続の勉強までいけるのは、いいな。２冊目のプログラミング入門書、Lisp系から入るのはありかもしれない(ここで、<span style="color: #800000; "><span style="color: #000000;">IronSchemeの</span><span style="color: #000000;">実行結果を再びこぴぺしようとしたら、<span style="color: #ff0000;">Vistaごと落ちた</span></span><span style="color: #000000;">。)</span></span></p>
<p>IronSchemeはいまだになぞ。<a href="http://wordprogress.org/archives/312">clojure-clr</a>が待ち遠しいな。</p>
<p><span style="font-family: 'Lucida Grande', Verdana, Arial, 'Bitstream Vera Sans', sans-serif; line-height: 11px; font-size: 11px; color: #333333;">◇Vista Quest （ビスタ違い）</span></p>
<p><span style="font-family: 'Lucida Grande', Verdana, Arial, 'Bitstream Vera Sans', sans-serif; line-height: 11px; font-size: 11px; color: #333333;"><em style="outline-width: 0px; outline-style: initial; outline-color: initial; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent; background-position: initial initial; padding: 0px; margin: 0px; border: 0px initial initial;"><div id="vvv10003148" class="rakuten_details">Now Loading...</div></em></span></p>
]]></content:encoded>
			<wfw:commentRss>http://wordprogress.org/archives/359/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Scalaから見たIronScheme　その1 やっぱりリスト操作から</title>
		<link>http://wordprogress.org/archives/197</link>
		<comments>http://wordprogress.org/archives/197#comments</comments>
		<pubDate>Wed, 04 Nov 2009 21:51:02 +0000</pubDate>
		<dc:creator>kyon</dc:creator>
				<category><![CDATA[Scala]]></category>
		<category><![CDATA[Gauche]]></category>
		<category><![CDATA[IronScheme]]></category>

		<guid isPermaLink="false">http://wordprogress.org/?p=197</guid>
		<description><![CDATA[.NET上のLisp実装であるIronScheme。なぜ、.NET上で実装したのか気になるところではあるが、目の前にあるバーゲン品で購入したvistaならば、インストール後、C:\Program Files\IronScheme\IronScheme.Console.exeをクリックすると即実行できるので、とりあえず、試して見る。
◇IronScheme
ちょっと手抜きで実行した画面をそのままキャプチャ


(count &#8216;(1 2 3))がエラー　・・　Clojureとは違い、長さを測るのはlengthなのね。
shiroさんの『プログラミングGauche』(O&#8217; REILLY))の46頁にあるfoldは実行できない　・・　S式の基本に戻って(+ x y)を積み重ねる。

◇Scala
Gaucheのfoldに相当するのは、foldLeft とか。例えば、こんな感じ :
scala&#62; (List(2,3,4) foldLeft 1) {(x,y) =&#62; x+y}
res3: Int = 10

scala&#62; (List(2,3,4).foldLeft (1)) {(x,y) =&#62; x+y}
res4: Int = 10

scala&#62;(List(2,3,4) foldLeft 1) {_+_}
res5: Int = 10
左から順に加えていくfoldLeft、ふだんあまり使ってないが、自分が書くならば3番目の書き方かな。
ちなみに、foldLeft相当の記号として:/がある。はじめて見た時には違和感があったけど、左から順にぱたぱた倒れていく、とかイメージすれば、まぁ覚えられるかな。
(1 /: List(2,3,4))(_+_)
(1 /: (2 :: 3 :: 4 :: Nil))(_+_)
/:


◇再びIronScheme
・・・でも、Gaucheのfoldの方がシンプルだなぁ。
IronSchemeでも、Scheme実装であるGaucheのfoldのコードが動くので、以下のように自前でfoldを定義すれば、IronSchemeでもfoldできる。

・・・しかし、IronScheme.Console.exeは使い勝手が微妙。すでに、IronSchemeはIronSchemeで、独自のエコシステムを作りつつあるのだろうが、それを覚える気になるか、自分??
]]></description>
			<content:encoded><![CDATA[<p>.NET上のLisp実装であるIronScheme。なぜ、.NET上で実装したのか気になるところではあるが、目の前にあるバーゲン品で購入したvistaならば、インストール後、C:\Program Files\IronScheme\IronScheme.Console.exeをクリックすると即実行できるので、とりあえず、試して見る。</p>
<h3 style="font-size: 1.17em;">◇IronScheme</h3>
<h3><span style="font-weight: normal; font-size: 13px;">ちょっと手抜きで実行した画面をそのままキャプチャ</span></h3>
<p><img class="alignnone size-full wp-image-198" title="ironscheme" src="http://wordprogress.org/wp2045/wp-content/uploads/2009/11/ironscheme.jpg" alt="ironscheme" width="810" height="482" /></p>
<ul>
<li>(count &#8216;(1 2 3))がエラー　・・　Clojureとは違い、長さを測るのはlengthなのね。</li>
<li>shiroさんの『プログラミングGauche』(O&#8217; REILLY))の46頁にあるfoldは実行できない　・・　S式の基本に戻って(+ x y)を積み重ねる。</li>
</ul>
<h3>◇Scala</h3>
<p>Gaucheのfoldに相当するのは、foldLeft とか。例えば、こんな感じ :</p>
<pre style="margin-left: 1em; margin-right: 1em; background-color: #f8f8f8; white-space: pre-wrap; word-wrap: break-word; padding: 1ex; border: 1px solid #707b8d;">scala&gt; (List(2,3,4) foldLeft 1) {(x,y) =&gt; x+y}
res3: Int = 10

scala&gt; (List(2,3,4).foldLeft (1)) {(x,y) =&gt; x+y}
res4: Int = 10

scala&gt;(List(2,3,4) <span style="color: #800000;">foldLeft</span> 1) {_+_}
res5: Int = 10</pre>
<p>左から順に加えていくfoldLeft、ふだんあまり使ってないが、自分が書くならば3番目の書き方かな。<br />
ちなみに、foldLeft相当の記号として<span style="color: #800000;"><strong>:/</strong></span>がある。はじめて見た時には違和感があったけど、<em><span style="color: #800000;">左から順にぱたぱた倒れていく</span></em>、とかイメージすれば、まぁ覚えられるかな。</p>
<pre style="margin-left: 1em; margin-right: 1em; background-color: #f8f8f8; white-space: pre-wrap; word-wrap: break-word; padding: 1ex; border: 1px solid #707b8d;">(1 <span style="color: #800000;"><strong>/:</strong></span> List(2,3,4))(_+_)
(1 <span style="color: #800000;"><strong><span style="color: #800000;">/:</span></strong></span> (2 :: 3 :: 4 :: Nil))(_+_)</pre>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 73px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><strong>/:</strong></div>
<p><br/><br />
<hr/>
<h3 style="font-size: 1.17em;">◇再びIronScheme</h3>
<p>・・・でも、Gaucheのfoldの方がシンプルだなぁ。<br />
IronSchemeでも、Scheme実装であるGaucheのfoldのコードが動くので、以下のように自前でfoldを定義すれば、IronSchemeでもfoldできる。<br />
<img class="alignnone size-full wp-image-203" title="fold on IronScheme" src="http://wordprogress.org/wp2045/wp-content/uploads/2009/11/fold-on-IronScheme.jpg" alt="fold on IronScheme" width="487" height="167" /><br />
・・・しかし、IronScheme.Console.exeは使い勝手が微妙。すでに、IronSchemeはIronSchemeで、独自のエコシステムを作りつつあるのだろうが、それを覚える気になるか、自分??</p>
]]></content:encoded>
			<wfw:commentRss>http://wordprogress.org/archives/197/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
