タグ付けされた質問 「functional-programming」

関数型プログラミングは、関数を使用して抽象化を構築し、副作用や状態の変化を回避することに基づくプログラミングパラダイムです。純粋な関数型プログラミングはスレッドセーフです。

10
Haskellは実世界で何に使用されていますか?[閉まっている]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 6年前休業。 Haskellには多くの誇大宣伝がありますが、実際のアプリケーションでそれがどのように使用されているかについての情報を取得することは困難です。Haskellの最も人気のあるプロジェクト/使用法は何ですか、なぜこれらの問題の解決に優れているのですか?

16
Scalaのケースクラスとクラスの違いは何ですか?
Googleで検索して、a case classとaの違いを見つけましたclass。クラスでパターンマッチングを実行する場合は、ケースクラスを使用すると誰もが述べています。それ以外の場合は、クラスを使用し、equalsやハッシュコードのオーバーライドなどの追加の特典について言及します。しかし、これらがクラスの代わりにケースクラスを使用するべき唯一の理由ですか? Scalaのこの機能には、いくつかの非常に重要な理由があると思います。説明とは何ですか、またはScalaケースクラスの詳細を学ぶためのリソースはありますか?


15
機能的なGUIプログラミングは可能ですか?[閉まっている]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 2年前休業。 最近FPバグを見つけて(Haskellを学ぼうとしている)、これまでに見たもの(ファーストクラスの関数、遅延評価、その他すべての利点)に本当に感動しました。私はまだ専門家ではありませんが、基本的なアルゴリズムを強制的に実行するよりも「機能的に」推論する方が簡単だと気づき始めています(また、必要なところに戻るのに苦労しています)。 ただし、現在のFPが横ばいに見えるのは、GUIプログラミングです。Haskellのアプローチは、命令型のGUIツールキット(GTK +やwxWidgetsなど)をラップし、「do」ブロックを使用して命令型のスタイルをシミュレートするようです。私はF#を使用していませんが、.NETクラスでOOPを使用して同様のことを行うと私は理解しています。明らかに、これには十分な理由があります。現在のGUIプログラミングはすべてIOと副作用に関するものであるため、純粋な関数型プログラミングは現在のほとんどのフレームワークでは不可能です。 私の質問は、GUIプログラミングへの機能的アプローチを持つことは可能ですか?これが実際にどのように見えるか想像できません。このようなことを試みる実験的またはその他のフレームワーク(または関数型言語用にゼロから設計されたフレームワーク)を知っている人はいますか?それとも、GUIパーツにOOPを使用し、ロジックにFPを使用する、ハイブリッドアプローチのみを使用するソリューションですか?(私は好奇心から求めているだけです。FPは「未来」だと思いたいのですが、GUIプログラミングはかなり大きな穴のように思えます。)

5
純粋に関数型プログラミングの効率
命令型ではなく純粋に機能的にプログラミングするときに発生する可能性がある最悪の漸近的なスローダウンが何であるかを誰かが知っていますか(つまり、副作用を許可する)。 itowlsonによるコメントからの明確化:最もよく知られている非破壊アルゴリズムが最もよく知られている破壊アルゴリズムよりも漸近的に悪い問題はありますか?

18
Yコンビネーターとは何ですか?[閉まっている]
休業。この質問には、より焦点を当てる必要があります。現在、回答を受け付けていません。 この質問を改善してみませんか?質問を更新して、この投稿を編集するだけで1つの問題に焦点を当てます。 2年前休業。 Yコンビネーターは、物事の「機能」面からのコンピューターサイエンスコンセプトです。ほとんどのプログラマーは、コンビネーターについて聞いたことさえあれば、コンビネーターについてまったく知りません。 Yコンビネーターとは何ですか? コンビネーターはどのように機能しますか? 彼らは何のために良いのですか? それらは手続き型言語で役立ちますか?

4
プログラミングの文脈で「代数」とはどういう意味ですか?
関数型プログラミングとPLTサークルで「代数」という用語を何度も聞いたことがあります。特に、オブジェクト、コモナード、レンズなどについて議論する場合はそうです。この用語をグーグルで検索すると、これらの構造の数学的説明が記載されたページが表示されますが、これは私にはほとんど理解できません。誰もがプログラミングの文脈で合同代数が何を意味するか、それらの重要性は何であるか、そしてそれらがオブジェクトとコモナードとどのように関連するか説明できますか?

30
なぜ関数型言語なのか?[閉まっている]
休業。この質問には、より焦点を当てる必要があります。現在、回答を受け付けていません。 この質問を改善してみませんか?質問を更新して、この投稿を編集するだけで1つの問題に焦点を当てます。 6年前休業。 ここで関数型言語などについて多くの話をします。なぜあなたは「伝統的な」言語でそれを使うのですか?彼らは何をよりよくするのですか?彼らは何が悪いのですか?理想的な関数型プログラミングアプリケーションは何ですか?

9
Pythonが関数型プログラミングに適していないのはなぜですか?[閉まっている]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 2年前休業。 この質問を改善する 関数型プログラミングはPythonで実行できるといつも思っていました。したがって、Pythonがこの質問であまり言及されていないことに驚きました。そして、言及されたとき、それは通常、あまり肯定的ではありませんでした。ただし、これについては多くの理由が示されていません(パターンマッチングの欠如と代数的データ型について言及されていました)。だから私の質問は、なぜPythonは関数型プログラミングに適していないのですか?パターンマッチングと代数的データ型の欠如よりも多くの理由がありますか?あるいは、これらの概念は関数型プログラミングにとって非常に重要なので、それらをサポートしていない言語は、2級の関数型プログラミング言語としてしか分類できませんか?(関数型プログラミングの私の経験はかなり限られていることを覚えておいてください。)

6
Python 3でフィルター、マップ、リデュースを使用する方法
filter、map、そしてreduce完全にPythonの2ここでの作業は一例です: >>> def f(x): return x % 2 != 0 and x % 3 != 0 >>> filter(f, range(2, 25)) [5, 7, 11, 13, 17, 19, 23] >>> def cube(x): return x*x*x >>> map(cube, range(1, 11)) [1, 8, 27, 64, 125, 216, 343, 512, 729, 1000] >>> def add(x,y): return …


3
map()関数内のインデックス
from mapを使用Listして関数内のインデックス番号を取得するオプションがありませんImmutable.js。 var list2 = list1.map(mapper => { a: mapper.a, b: mapper.index??? }).toList(); ドキュメントはそれmap()が戻ることを示していますIterable<number, M>。必要なものにエレガントな方法はありますか?

7
代数的データ型の代数の乱用-なぜこれが機能するのですか?
代数的データ型の「代数的」表現は、数学のバックグラウンドを持つ誰かに非常に暗示的に見えます。私の言いたいことを説明してみましょう。 基本的なタイプを定義した 製品 • 連合 + シングルトン X 単位 1 そして、X²for X•Xと2Xfor X+Xceteraの短縮形を使用して、リンクされたリストなどの代数式を定義できます。 data List a = Nil | Cons a (List a) ↔ L = 1 + X • L そして二分木: data Tree a = Nil | Branch a (Tree a) (Tree a) ↔ T = 1 + X …


11
Java 8のOptional.ifPresentおよびif-not-Presentの機能スタイル?
Java 8では、Optionalオブジェクトが存在する場合は何かを行い、存在しない場合は別のことを行います。 if (opt.isPresent()) { System.out.println("found"); } else { System.out.println("Not found"); } ただし、これは「機能的なスタイル」ではありません。 OptionalifPresent()メソッドを持っていますが、メソッドをチェーンできませんorElse()。 したがって、私は書くことができません: opt.ifPresent( x -> System.out.println("found " + x)) .orElse( System.out.println("NOT FOUND")); @assyliasへの返信として、私はOptional.map()次の場合にはうまくいかないと思います: opt.map( o -> { System.out.println("while opt is present..."); o.setProperty(xxx); dao.update(o); return null; }).orElseGet( () -> { System.out.println("create new obj"); dao.save(new obj); return null; }); …

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