関数型プログラミングに関するアクセシブルブック[非公開]


17

関数型プログラミングをアクセシブルな方法で説明する本を探しています。また、私はあまり退屈ではなく、難解な言語を使用しないものを好むでしょう。

理想的には、関数型プログラミングが命令型アプローチよりもエレガントでシンプルなソリューションにつながる状況を示す例を使用します。

プログラミングの経験はある程度ありますが、関数型プログラミングの知識はありません。提案をありがとう


3
「難解な言語」を使いたくないと言ったときに、あなたが念頭に置いていた特定の言語があったら興味があります。
MatrixFrog

@MatrixFrog:「難解な言語」とは、Schemeを意味していたと99%確信しています。彼はおそらくSICPが最初に推奨される本であることを知っていたでしょう。
user16764

@ user16764しかし、「アクセス可能」?それは、「コンピュータサイエンスカリキュラムの構造と解釈」の著者が示した理論的根拠に基づいた、How To Design Programs(または第2版)です。
マークC

回答:


13

私は「The Little Schemer」(そしてその後、おそらく「The Reasoned Schemer」)で始まると思います。

Schemeが難解すぎると思う場合、またはJavascriptが好きな場合、Douglas Crockfordは多くの演習をJavascriptに翻訳しています:http : //javascript.crockford.com/little.html

C#を楽しんでいるのであれば、Tomas Petricekによる「Real-World Functional Programming」が出発点として最適です。また、F#の入門書としても役立ちます。


10

静的に型付けされた言語と[ブラケット]が好きな場合:

Haskellはプログラミングパラダイムの純度にかなり重きを置いていますが、「Learn Has a Haskell For Great Good!」という形でこれまで見たことのない言語を紹介するのに最適です。ウェブサイトは無料であるため、書籍の形式はオプションですが、これは私がまったく圧倒されるとは思わなかった著者の1人です。現実世界のHaskellは優れていますが、[Learn..Good]へのフォローアップとして実際に採用したほうがよいでしょう。RWHは、オプションの紙質の良さで無料です。

HaskellからF#OCamlのような他のMLバリアントに簡単に移行できます。どちらもより広く使用されています。最先端のATS向け

必要な場合(およびDynamic_Typing括弧):

Schemeは、2つの主要なLisp方言の機能指向であり、Common Lispよりも小さく純粋ですが、業界ではあまり広く使用されていません。個人的にはコンピュータープログラムの構造と解釈が好きですが、それはかなり理論的に重い本ですが、飲み込むのが少し難しいと、より良いプログラマーになるでしょう。

Common Lispを好むなら、Practical Common LispまたはLand of Lispのどちらかが良い投資のように思えます。1つ目は無料のオンラインで、2つ目はかなり安価で、もっと重要な(一部の)ゲーム中心です。Schemeよりも純粋ではありませんが、より強力です。

これらから、必要に応じてClojureに展開できます。JVM用のLispであるため、デプロイが容易であり、「アカデミック」であるという告発に対する防御力を高めることができます。Clojureは.NETにデプロイでき、Javascriptにもクロスオーバーできます。ネイティブ.NETの場合は、IronSchemeを試してください

Haskell で48時間Write Yourself a Schemeを使用して、違いを分割して一度に両方の種類を学ぶこともできます。


SICPを使用する場合、この本に関するビデオ講義も多数あります。最も有名なものは次のとおりです。groups.csail.mit.edu / mac / classes / 6.001 / abelson-sussman- lectures Paul Grahamは優れた作家であり、無料の本があります。なぜlispがミツバチの膝なのかpaulgraham.com/onlisptext.html
simoraman

1
Real World Haskellの無料のオンラインバージョンを読んでいます。テキストを読みながらコメントを読む機能は非常に役立ちます。そのため、紙版を入手したとしても、オンライン版も読むことをお勧めします。一部の部分は、コメントとの混同が少ない方法です。
MatrixFrog

4

私のお気に入りのソースはHaskell優しい紹介です。Learn you a HaskellとO'Reilly Real-World HaskellとSimon ThompsonのCraft of Functional Programmingの一部を読みましたが、正直なところ、穏やかなイントロでより良くやっています。それは、HaskellのK&Rのようなものです。言語の作成者によって作成された薄いドキュメントです。言葉遣いも愛用もせず、彼らの博学であなたを圧倒しようともしない。


1
ジェントルはじめはずっと胃にしっかりとパンチのように、非常に直接的およびきまじめです。悪意なく暴力を振るうという意味で穏やかであり、甘やかしたり支配したりすることを求めません。むしろ、読者が反撃するために必要な内なる力を発見することを期待して。
CAマッキャン

1
うーん、先生、私はその画像を使用するかどうかはわかりませんが、何でも。それは暴力的ではなく、内面の強さも問題ではありませんが、残りの部分には同意します。「穏やか」はここでは少しユーモラスです。「ささやかな提案」のような。
JohnL4

1
はい、私はそこにいくつかの...小さな創造的自由を取りました。;](Haskellだけでなく、どの言語でも)最近のその他の入門資料と比べて非常に鈍いものを通り抜けるには、精神的な不屈の精神が必要です。しかし、K&Rと比較すると、そのようなスタイルに慣れていると思います。私は一般に、「穏やか」はHaskellレポートや多くの研究論文から学ぶこととは対照的であると想定してきました。
CAマッキャン

1

http://hop.perl.plover.com/には、無料でダウンロードできる本が含まれています。Perlで多くの機能的なテクニックを使用する方法を説明します。

それが言っていることのほとんどは、非常に簡単にJavaScript、RubyまたはPythonに翻訳できます。


1

私は現在、関数型プログラミングを自分で学んでいます。ただし、Haskellを使用して学習しています。

オンラインブックは次のとおりです(ハードカバーiircでも購入できます)。

Haskellはエステルではなく、より主流になりつつあります(LISPやEr​​langほど主流ではありません)。ただし、これは純粋な関数型言語であり、関数型プログラミングのパラダイムを習得する必要があります。純粋に関数型ではない言語を使用して得られる、半分の命令型の関数型のアプローチとは対照的です。

人々は、haskellを使用してWebServer、Bittorrent Client、およびいくつかの実際のアプリケーションを開発しました。しかし、私は個人的にそれを使用して概念を学習し、それを今まで素晴らしい動作をしているC#とF#に適用しています。

楽しい。


1

「コンピュータプログラムの構造と解釈」について良いことを何度か聞いたことがあります。本書ですので、Paperでも入手できます。http://www.amazon.co.uk/Structure-Interpretation-Computer-Electrical-Engineering/dp/0262510871を参照してください

ここは自由に利用可能ですhttp://mitpress.mit.edu/sicp/http://mitpress.mit.edu/sicp/full-text/book/book.html)や講義のも、ビデオがあります(のhttp: //groups.csail.mit.edu/mac/classes/6.001/abelson-sussman-lectures/


SICPは素晴らしかったですが、私の経験ではアクセスできません。
ウィレム

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.