問題タブ [functional-programming]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
8 に答える
10025 参照

f# - 関数型プログラムをどのように設計しますか?

プログラミングのキャリアの初日から、私はオブジェクト指向プログラミングから始めました。しかし、私は他のパラダイムを学ぶことに興味があります(SOで何度も言ったことは良いことですが、時間がありませんでした)。準備ができているだけでなく、時間もあると思うので、F#で関数型プログラミングを開始します。

ただし、設計アプリケーションをはるかに少なく構成する方法がわかりません。私は、オブジェクト指向プログラミングにおけるファイルごとに1つのクラスとクラス名詞/関数動詞のアイデアに慣れています。機能的なアプリケーションをどのように設計および構造化しますか?

0 投票する
4 に答える
3299 参照

functional-programming - Ruby、Lisp、Haskell、Erlang から Ocaml に移行

Ocaml の一貫した速度、迅速なプロトタイピング機能、および優れたメモリ管理について読んでいて、それを取り上げることにしました。

私はすでに Ruby、*lisp、Haskell、および Erlang を習得しているので、Ocaml で注目すべき KISS に違反する機能に特に関心があります。

上記の言語のバックグラウンドを持って Ocaml を始めた場合、理解するのに最もイライラしたことは何でしたか? この困難をどのように回避しましたか?言語の流れを理解するのにどのような類推が役立ちましたか?

また、あなたが単に Ocaml を学習しただけでなく、コーディングの問題の大部分を実際に Ocaml に変換したかどうかも知りたいです。

0 投票する
5 に答える
11965 参照

c# - カタモルフィズムとは何ですか? C# 3.0 で実装できますか?

私はカタモルフィズムについて学ぼうとしています。ウィキペディアの記事と、 Inside F#ブログの F#に関する一連のトピックの最初の 2 つの投稿を読みました。

これがフォールドの一般化であることは理解しています (つまり、値のリストを別のリストに含めて、多くの値の構造を 1 つの値にマッピングします)。そして、fold-list と fold-tree が標準的な例だと思います。

これは、LINQ のAggregate演算子またはその他の高次メソッドを使用して、C# で実行できることを示すことができますか?

0 投票する
12 に答える
2751 参照

functional-programming - 関数型プログラミングはどのような問題に適していますか?

関数型プログラミングは、コンピュータ サイエンスのパラダイムであり、反響がますます大きくなっているようです。

従来のオブジェクト指向のアプローチよりも関数型プログラミングのアプローチの方が、どのような問題を解決するのに適しているのでしょうか。

ありがとうございました。

0 投票する
15 に答える
26214 参照

java - Javaで不変オブジェクトを識別する方法

私のコードでは、オブジェクトが不変である場合にのみ安全な方法で、さまざまなスレッドによってアクセスされるオブジェクトのコレクションを作成しています。コレクションに新しいオブジェクトを挿入しようとしたときに、それが不変かどうかをテストしたいと思います (そうでない場合は、例外をスローします)。

私にできることの 1 つは、いくつかのよく知られた不変型を確認することです。

これで実際には 90% の方法が得られますが、ユーザーが独自の単純な不変型を作成したい場合があります。

クラスが不変であるかどうかを確実に検出できる方法 (おそらくリフレクションを使用) はありますか? 偽陽性 (そうでないときに不変であると考える) は受け入れられませんが、偽陰性 (そうでないときに可変であると考える) は受け入れられます。

編集して追加:洞察に満ちた役立つ回答をありがとう。一部の回答が指摘しているように、私はセキュリティ目標を定義することを怠っていました。ここでの脅威は無知な開発者です。これは、スレッド化についてほとんど知らず、ドキュメントを読まない多数の人々によって使用されるフレームワーク コードの一部です。悪意のある開発者から防御する必要はありません。文字列を変更したり、他の悪ふざけを実行したりするのに十分賢い人は、この場合は安全ではないことを知るのに十分賢いでしょう。コードベースの静的分析は、自動化されている限りオプションですが、すべてのレビューにスレッドに精通したレビュー担当者がいるという保証はないため、コード レビューを当てにすることはできません。

0 投票する
15 に答える
58189 参照

functional-programming - 参照透過性とは何ですか?

参照透過性という用語はどういう意味ですか?「equalsをequalsに置き換えることができる」と説明されていると聞きましたが、これは不十分な説明のようです。

0 投票する
6 に答える
1235 参照

ruby - Rubyは本当に関数型言語として使用できますか?

Rubyは本当に関数型言語として使用できますか?言語のこの側面を教えるためのいくつかの良いチュートリアルは何ですか?注:私は本当にRubyを第一言語として使用し、それを使い続けたいので、現時点ではYAFL(さらに別の関数型言語)に変換することに興味はありません。私は、Rubyの関数型ファセットが標準の関数型言語ベースラインに対してどれだけうまく機能するかに本当に興味があります。ありがとう。

0 投票する
8 に答える
1570 参照

functional-programming - 関数型プログラミングの定義点

私は関数型プログラミングの多くの機能を列挙することができますが、友人が私に尋ねたとき、関数型プログラミングを定義してくれませんか? 私はできませんでした。

0 投票する
8 に答える
17776 参照

functional-programming - ロジック プログラミングの最適な用途は何ですか?

ロジック プログラミングとは、宣言型プログラミング言語のサブパラダイムを意味します。この質問を「if-then-else で解決できる問題は何ですか?」と混同しないでください。

Prolog のような言語は非常に魅力的であり、学習のために学習する価値はありますが、現実世界の問題のどのクラスがそのような言語で最もよく表現され、解決されるのか疑問に思う必要があります。もっと良い言語はありますか?論理プログラミングは、より流行のプログラミング言語で別の名前で存在しますか? 答えの冷笑的なバージョンはPython Paradoxの変形ですか?

0 投票する
13 に答える
57609 参照

c - Cの関数型プログラミングにはどのようなツールがありますか?

私は最近、C(C ++ではなく)で関数型プログラミングを行う方法について多くのことを考えています。明らかに、Cは手続き型言語であり、関数型プログラミングをネイティブにサポートしていません。

関数型プログラミング構造を言語に追加するコンパイラ/言語拡張機能はありますか?GCCは、ネストされた関数を言語拡張として提供します。ネストされた関数は親スタックフレームから変数にアクセスできますが、これは成熟したクロージャからはまだ遠いです。

たとえば、Cで本当に役立つと思うことの1つは、関数ポインターが期待される場所であればどこでも、ラムダ式を渡して、関数ポインターに減衰するクロージャーを作成できることです。C ++ 0xにはラムダ式が含まれます(これは素晴らしいと思います)。ただし、ストレートCに適用できるツールを探しています。

[編集]明確にするために、私は関数型プログラミングにより適したCの特定の問題を解決しようとはしていません。私がそうしたいのであれば、私はただそこにどんなツールがあるのか​​知りたいだけです。