趣味関数式プログラミング聖書


1
初日
神はジョン・マッカーシーが表処理言語のLispを発明したのを見て、学術研究だけに用いた。とても悲しいことに、Lisp解釈器の秘密を彼の学生スティーブン・ラッセルに教えました。スティーブン・ラッセルはIBM 704のマシンでeval関数を実現した後、関数式プログラミングの門は初めて人類に開けました。
2
翌日
この平行宇宙の神の思想は独特で、彼は言います。

神はまた言いました。「関数は純粋なものです。」
関数に渡す変数を変更できません。
グローバル変数を変更できません。
同じ入力パラメータに対して、戻り値は常に同じです。
以下の関数は許可されています。呼出する度に、戻り値は同じです。宇宙がなくなるまで安全に呼び出せます。

このような関数は関数宇宙では許されません。2回目の呼び出しは関数宇宙の壊滅を招くからです。

この関数は許可されていません。入力パラメータを変更したいです。

関数が新しい配列を返したら、元の値を変えずに関数式の神様が喜んでくれます。

人類は神の立てた決まりに対して困惑します:arou kiding me?
3
三日目
人間はプログラムを書いてみましたが、不変量の規定により、基本的なforサイクルが定まらないことが分かりました。

人間は困惑します。「間違えていませんか?循環はどう書きますか?」
あなた達は循環で何をしますか?
人間はコードを書きました。

神は言います:再帰があります!
神もコードを書きました。

これは仕事を完成することができますが、あまり直感的ではないようです。また、親愛なる神様、もし私のlist容量が大きいなら、再帰層が深いです。スタックが溢れていますか?」
神は言います:“大丈夫で、私は最後の再帰があって、必ずあふれないことを保証します。この再帰的な書き方は、だんだん慣れてきました。」
4
四日目
神は多くの関数がほぼ同じであることを発見しました。一部の細部だけが違っています。多くの重複コードがあります。もったいないです。

神は言います:“高次の関数があります!”
関数を使って関数を生成し、共用部分を抽出し、非共用部分と共用部分を組み合わせることができます。

神はいくつかのとても良い高次関数を提供して、例えばmap、filter、foldなど、人類に素早く効率的に集合データを操作させます。

5
5日目
神は自分の仕事に満足しています。プログラムの世界の枠组みはほぼ完成したようで、下の隅だけが実现しました。
しかしこの宇宙の人類はいつも関数式のプログラミングが難しすぎると不平を言って、ここの神が変えたくないことを見て、多くの人はS-87のそのいわゆる“対象に向かいます”の宇宙まで通り抜けました。
神はため息をつきました:“あなた達、眼光は浅くて、ムーアの法則はすでに失効して、多核の時代はすでに到来して、私達の関数式のプログラミングは生まれつき合併のプログラミングのために生んだので、関数を見てみてください、変数を共有しないで、安全にいかなるCPU coreまで運行するように手配することができて、煩わすロックの問題がなくて、どんなに良いです!”
二日間後、隣のS-87宇宙のお相手の神様が遊びに来ました。
対象の神に向かって言います。「親愛なる関数式の神様、裏切り者、いいえ、投降者、あ、私のところにタイムスリップした人がいます。この宇宙には関数式プログラミングという宝物がありますか?」
関数式の神:"まだ宝物ですか?みんな逃げてしまいました。」
「話してください。その時はまた帰ってくるように勧めます。」
関数式の神は彼に自分が世紀を作る時に立てた決まりを話しました。彼は6日目に、7日目に人類に教えたい知識、何かCurrying、惰性求値、マクロなどもたくさん話しました。
対象の神様に感謝の意を表し、喜び勇んで帰りました。
後に、対象の宇宙に向けて、関数的な神様が、多くの混合式プログラミング言語のOOP+FP(Funtional Programming)が現れたと聞きました。
関数式の神様は何も言いませんでした。ため息をつきました。
6
六日目
関数式の神様は休みを決めます。
7
七日目
関数式の神様は休みを続けます。
これはなぜ関数世界のプログラマーが二日間休むことができるかという由来です。
以上は趣味関数式プログラミング聖書の詳細です。関数式プログラミングに関する資料は他の関連記事に注目してください。