した直方体スマートフォン用の表示で見るぷるぷるした直方体エンジニアの雑記です。―Scalazコントリビューターによる関数型徹底ガイド"を買いました。読んで、各章の内容をまとめてゆきます。本書の目的や関数型プログラミングについて触れられています。まえがきOdersky先生の寄せ書き、まえがきではこの本の目的について述べられています。Scalaを純粋関数型プログラミング言語として扱う方法。今までのことは忘れ、初心に立ち返る必要がある関数型プログラミングが「今までやってきたことじゃないか」と思えたらサイコー。責任を分離したり、イミュータブルにしたり徐々に抽象度を上げていく構成となっているようです。‌‌練習問題も用意されており、解答はGithubに上がっているので見てね、とのことです。関数型プログラミングを「今までやってきたこと」と捉えると良い、というのはナルホドと思いました。‌「関数型でなくても使える普遍的な考え方が、関数型であればより表しやすい」と言うのは実にシンプルで強力な説明です。1章1章では関数型プログラミングの概要について触れています。‌‌もちろん、純粋な関数型を前提としています。コーヒーをクレジットカードで買う例を出し、副作用のあるプログラムを書き換えていくことで純粋関数の利点を示しています。‌‌ここで述べられている利点は以下の通りです。テストしやすいモジュラリティが高い関数型の(時には厳しい)ルールに従うことにより、プログラムの構成が変わり、良いコードが出来上がるとの主張です。‌‌制約と誓約、要は念能力ですね。続いて、純粋関数の説明が入ります。入力と出力が1:1対応する参照透明(式を常にその結果に置き換えることができる)結果、関心ごとに関数を分離しやすく、モジュール性の高いプログラムになりやすいです。感想プログラミングにおいて制約は極めて重要です。‌‌そのため、いかに制約をつけるかで様々な手法が試されてきました。‌‌例えばPythonのインデントであり、契約プログラミングであり、静的型付けであり、全てがオブジェクトである言語であるわけです。制約と自由さ、このバランスをいかに取るかで言語設計者は頭を悩ませているかと思います。‌‌その1つの提案が純粋関数型言語であり、副作用を制限するというかなり厳しい制約を背負っています。‌‌そのため同じ動作をさせようと思っても、様々な違いが出てきます。‌‌利点と欠点を見極めて、上手く使いこなせるようにしたいものですね。―Scalazコントリビュータ...2016-09-03技術書まとめ買い最近あまり本を読んでいないなぁ、と感じています。reserved.スターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。