61

関数型プログラミングの概念を理解しようとしています。

私は何年もの間、Web アプリケーションのクライアント側スクリプト作成に Javascript を使用してきましたが、プロトタイプの使用を除けば、すべて単純な DOM 操作、入力検証などでした。

最近、Javascript が関数型プログラミングをサポートする言語の 1 つであることをよく読んでいます。

私は Javascript に精通しており、経験もあるので、Javascript を使用して関数型プログラミングを学習することを好みます。主要な機能概念により集中でき、完全に新しい構文に行き詰まったり気を散らされたりすることがなくなると思います。

要約すると、Javascript は関数型プログラミングの概念を学ぶのに適した選択肢でしょうか? Javascript のどの機能が関連し、関数型プログラミングをサポートしていますか?

4

8 に答える 8

43

JavaScript はファースト クラス関数をサポートします。関数型プログラミング手法を使用して洗練された JavaScript を作成する を参照してください。

于 2008-09-28T02:49:15.377 に答える
9

高次 Javascriptは、javascript の機能面に慣れるための優れた方法です。また、より大きな本に飛び込むことなく足を濡らしたい場合に備えて、比較的短い読み物です.

于 2008-09-29T02:11:27.067 に答える
6

誰が言ったかは覚えていませんが、javascriptは「SchemewithAlgolsyntax」と呼ばれています。したがって、Scheme / Lispを学ぶために、Javascriptは悪いスタートではありません。ただし、Lispのような関数型言語は、Haskellのような純粋関数型言語とはかなり異なることに注意してください。

「ファーストクラス関数」(関数は値であり、変数に割り当てることができることを意味します)とは別に、字句スコープも関数型言語を作成するための固有の部分です。

高次のJavascriptLittleJavascripterについてはすでに説明しました。どちらも優れたテキストです。さらに、Javascriptでの高次プログラミングの方が簡単なスタートかもしれません。

于 2008-09-29T19:31:43.600 に答える
6

JavaScript を使用すると関数型プログラミングの概念をすぐに理解できますが、JavaScript を関数型プログラミング言語のように一貫して使用することは一般的ではありません。少なくとも明らかに一般的ではありません。ほとんどの人は、JavaScript で関数型プログラミングを行う方法を特定するチュートリアルを投稿しません。marxidad が指摘したのは、実際にはかなり適切な例ですが、多くは見つかりません。人々が JavaScript でクロージャーを使用しているのと同じように、機能面は明らかではありませんが、それを行っていることに気づいていません。

2 つの関数を引数として 3 番目の関数に渡し、戻り値を最初の 2 つの関数に関連する何らかの実行にするという考えは、高度な手法であり、ほとんどの場合、jQuery のような本格的なライブラリのコアにのみ表示されます。 . 自己実行型の無名関数などは支持を得ていますが、まだ一貫して使用されているわけではありません。チュートリアルの大部分は、プロパティとメソッドの作成方法、スコープ、アクセス制御、コンストラクターのプロトタイプ プロパティの使用方法など、JavaScript の OO 機能に焦点を当てていることがよくあります。正直なところ、関数型プログラミングが必要な場合は、この機能で厳密に知られている言語を選択します。

于 2008-09-28T03:05:05.917 に答える
6

JavaScript は FP をある程度サポートしていますが、それを直接推奨するものではありません。そのため、 Oliver Steele の Functional のようなプロジェクトが存在し、ギャップを埋めています。したがって、FPの学習にはお勧めしません。代わりに F# をチェックしてください。

于 2008-09-28T02:49:44.283 に答える
3

The Little Schemerを読むことをお勧めします。これは、再帰に関するかなりスリムな本であり、関数型スタイルの優れた入門書です。これはスキームに焦点を当てていますが、JavaScript にも簡単に適用できます。 http://javascript.crockford.com/little.htmlを参照してください。最終的には非常に扱いにくくなりますが、JavaScript の開発には非常に役立ちました。

于 2008-09-29T14:04:59.067 に答える
2

また、Eloquent JavaScript: 関数型プログラミングの章.

于 2008-09-29T06:51:17.253 に答える
2

Javascript はマルチパラダイム言語です。関数型言語の概念を学ぶことが目標の場合は、OCamlHaskellなどの純粋な関数型言語から始めてみてください。

于 2008-09-28T02:50:39.833 に答える