Worldかんたんなかいせつ数字は?リストは?入出力は?というかですね二期みたAbstractCPUのクロック数が頭打ちになり、1コアあたりの性能を向上させるよりもコア数を増やす事による並列性能向上が行われるようになった昨今では、並列化の行い易い純粋関数型プログラミング言語が注目されています。本研究で題材とするLazyKは、トークンが4つというシンプルさでありながら、チューリング完全な純粋関数型プログラミング言語です。近年のアニメシーンにおいて、アニメ本編よりもインターネット上での罵声の浴びせかけあいやステマばかりが着目され、アンチと信者のせめぎあいがより激しくなり荒廃が進んでいます。7/2より放送されている「ゆるゆり♪♪」の主人公赤座あかりは、彼女の必殺技「\アッカリ~ン/」によって可視光における強い参照透過性を実現し、彼女のすべてを愛す性格によって、世界に愛をもたらしています。aKari」を実装することで、LazyKの啓蒙と世界に愛を広めました。いつも通りの「トークン変えただけのゴミ言語のお時間」です。Brainfuckでやってる事が多い気がしますが、毎度毎度Brainfuckでやるのも流石に秋田ので別のにしました。トークンが4つで調度良かったのでLazyKです。毎度毎度手続き型で書くのも秋田ので今回はLISPで書いて見ました。ほとんどLISPの機能を使ったので随分楽ちんな実装となっております。ledyba/Lazy-aKariScheme処理系の一つであるgaucheを使ってます。Unlambdaスタイルのみに対応しております。<ソースファイル>として、入力を入れたらCtrl+D(WindowsではCtrl+Zらしい)を押して入力を確定すると、プログラムが実行されて結果が表示されます。サンプル:echoプログラム入力をそのまま返します。echo.txtとして実行し、入力したらCtrl+D(WindowsではCtrl+Z)を押してね。入力した結果がそのまま表示されます。echo.akariyryr[Ctrl+D]yryr大好きはエコー...。メッセージ変えたかったのですがLazyKは書ける気がしなかった()のでWikipediaのをそのまま使いました。わぁいわぁいうすしおわぁいわぁいうすしおわぁいあかりうすしおあかり大好きどうしたあかり。world!かんたんなかいせつLazyKは上にあるように、4つのトークン`skiをつかいます。そのうちskiの3つは関数です。LISPで書くとこんな関数。x)で、`というのは関数呼び出しを表します。関数は必ず1つだけ引数を取ります。以下可読性を重視してLISP形式で書きます。Iは引数をそのまま返す関数なので簡単ですね。Kは関数を返す関数です。2)としてさらに戻ってきた関数を呼び出すと1(=x)という結果になります。なんでこんな面倒な事をするかというと、LazyKの世界では関数は引数を1つしか取れないのですが、Kという関数にはどうしても2つ引数を取らせたかったからです。LazyKでは関数は関数を返すことができるので、関数を返す関数を作ることで引数が1個しかとれない問題を回避しています。これをカリー化と言うそうです。Sはちょっと厄介ですね。K)が関数Iと等しい関数であることを確かめると理解できると思います。内側のラムダ式でwは使われないことに注目。これはIそのもの...うーん、面倒ですね。数字は?LazyKは上記でみた3つの要素しかありません。数字というリテラルはありません。えっ、でも計算くらいできないと困るじゃん。そこでLazyKでは、数をチャーチ数というので表します。数とありますがやっぱり関数で、この関数に別の関数fを渡すと、fをn回適用してくれる関数を返してくれる関数です。「関数」がゲシュタルト崩壊してきてはあ?って感じですね。チャーチ数で3を表す関数をchurch-3は、引数として関数fをとり、「f(f(f(x)))を返す関数」を返してくれます。