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

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

5
Swiftでインデックスを使用してマップまたは縮小する
配列のインデックスを取得する方法がありますmapかreduceスウィフトでは?each_with_indexRubyのようなものを探しています。 func lunhCheck(number : String) -> Bool { var odd = true; return reverse(number).map { String($0).toInt()! }.reduce(0) { odd = !odd return $0 + (odd ? ($1 == 9 ? 9 : ($1 * 2) % 9) : $1) } % 10 == 0 } lunhCheck("49927398716") lunhCheck("49927398717") 上記のodd変数を削除したいと思います。


13
JavaScriptは関数型プログラミング言語ですか?
関数がファーストクラスのオブジェクトであり、クロージャーや高次の関数があるからといって、JavaScriptは関数型プログラミング言語と呼ばれるに値するのでしょうか?それが欠けていると私が思う主なものは純粋な関数であり、lispのような他の関数型言語のように「感じる」ことはありません(ただし、それが関数型言語にならない理由としては本当ではありません...)

2
なぜλ-calculusの最適なエバリュエーターは数式なしで大きなモジュラ指数を計算できるのですか?
教会番号は、関数としての自然数のエンコードです。 (\ f x → (f x)) -- church number 1 (\ f x → (f (f (f x)))) -- church number 3 (\ f x → (f (f (f (f x))))) -- church number 4 きちんと、2つの教会の数を適用するだけで指数化できます。つまり、4対2を適用すると、教会番号16、またはを取得します2^4。明らかに、それは全く実用的ではありません。教会の数は線形のメモリ量を必要とし、本当に非常に遅いです。10^10GHCIがすぐに正しく答えるようなものを計算すると、時間がかかり、とにかくコンピュータのメモリを合わせることができませんでした。 最近、最適なλエバリュエーターを使って実験しています。私のテストでは、最適なλ計算機に誤って次のように入力しました。 10 ^ 10 % 13 べき乗ではなく、乗法であると考えられていました。指を動かして、絶え間なく実行されているプログラムを絶望的に中止する前に、それは私の要求に答えました: 3 { iterations: 11523, applications: 5748, …

5
HaskellとF#の主な違いは何ですか?[閉まっている]
クローズ。この質問はもっと焦点を合わせる必要があります。現在、回答を受け付けていません。 6年前に閉鎖されました。 ロックされています。この質問とその回答は、質問がトピックから外れているが歴史的に重要であるため、ロックされています。現在、新しい回答ややり取りは受け付けていません。 F#とHaskellの比較をインターネットで検索しましたが、本当に決定的なものは見つかりませんでした。主な違いは何ですか?なぜ私はどちらかを選択したいのですか?

8
ステートレスプログラミングの利点?
私は最近関数型プログラミングについて学んでいます(特にHaskellですが、LispとErlangのチュートリアルも行ってきました)。概念が非常に啓発的であることがわかりましたが、「副作用なし」の概念の実際的な側面はまだわかりません。それの実際的な利点は何ですか?私は関数型の考え方で考えていますが、簡単な方法で状態を保存する機能がないと、非常に複雑に見える状況もあります(Haskellのモナドは「簡単」とは考えていません)。 Haskell(または他の純粋な関数型言語)を詳細に学習し続ける価値はありますか?関数型プログラミングまたはステートレスプログラミングは、手続き型プログラミングよりも実際に生産的ですか?Haskellや他の関数型言語を今後も使用する可能性はありますか、それとも理解のためだけに学習すべきですか? 私は生産性よりもパフォーマンスを気にしません。したがって、私は主に、手続き型/オブジェクト指向/その他よりも関数型言語でより生産的になるかどうかを尋ねています。

6
ファーストクラス関数と高次関数の違い
私は思ったんだけどどうか/の間にどのような違いファーストクラスの機能と高階関数。 私はこれら2つのWikiページを読みましたが、どちらもかなり似ています。同じことを言っているのに、なぜ2つの用語が必要なのでしょうか。 グーグルを試してみましたが、有用なものは見つかりませんでした。

7
リスト内の要素をImmutableJSで更新する方法は?
これは公式ドキュメントが言ったことです updateIn(keyPath: Array<any>, updater: (value: any) => any): List<T> updateIn(keyPath: Array<any>, notSetValue: any, updater: (value: any) => any): List<T> updateIn(keyPath: Iterable<any, any>, updater: (value: any) => any): List<T> updateIn(keyPath: Iterable<any, any>, notSetValue: any, updater: (value: any) => any): List<T> 通常のWeb開発者(関数プログラマーではない)がそれを理解する方法はありません! 私はかなり単純な(非機能的なアプローチの)ケースを持っています。 var arr = []; arr.push({id: 1, name: "first", count: …

9
Pythonマップとその他の機能ツールの使用
これはかなりn00bishですが、Pythonで関数型プログラミングを学習/理解しようとしています。次のコード: foos = [1.0,2.0,3.0,4.0,5.0] bars = [1,2,3] def maptest(foo, bar): print foo, bar map(maptest, foos, bars) 生成する: 1.0 1 2.0 2 3.0 3 4.0 None 5.0 None Q. Pythonでマップやその他の機能ツールを使用して、ループなしで以下を生成する方法はありますか? 1.0 [1,2,3] 2.0 [1,2,3] 3.0 [1,2,3] 4.0 [1,2,3] 5.0 [1,2,3] 余談ですが、fooとbarの間に依存関係がある場合、実装はどのように変化するでしょうか。例えば foos = [1.0,2.0,3.0,4.0,5.0] bars = [1,2,3,4,5] そして印刷: 1.0 [2,3,4,5] 2.0 …


5
Goにジェネリックがないのはなぜですか?
免責事項:私はGoで1日しか遊んだことがないので、多くの機会を逃した可能性があります。 Goでジェネリック/テンプレート/ whatsInANameが実際にサポートされていない理由を誰かが知っていますか?つまり、ジェネリックがありますが、それはmapコンパイラーによって提供されますが、Goプログラマーは独自の実装を作成できません。Goをできるだけ直交にすることについてのすべての話で、なぜジェネリック型を使用できるが、新しい型を作成できないのですか? 特に関数型プログラミングに関して言えば、ラムダやクロージャさえありますが、静的型システムにジェネリックが欠けている場合、どうすれば一般的な高次関数を作成できfilter(predicate, list)ますか?わかりました。リンクされたリストなどは、interface{}タイプセーフを犠牲にして実行できます。 SO / Googleでクイック検索を行っても洞察は得られなかったため、ジェネリックがあったとしても、後から考えてGoに追加されるようです。私はThompsonがJavaの人よりもはるかに優れていると信じていますが、なぜジェネリックスを除外するのですか?または、それらは計画されていて、まだ実装されていませんか?

29
なぜLispを学ぶ必要があるのですか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。事実、参考文献、専門知識によって回答が裏付けられることを期待していますが、この質問は、討論、議論、投票、または拡張ディスカッションを求める可能性があります。この質問が改善され、場合によっては再開できると思われる場合は、ヘルプセンターにアクセスしてください。 7年前休業。 私はLispを学ぶべきだと本当に感じており、それを行うために役立つリソースがたくさんあります。 私は複雑な構文に我慢するのではなく、「伝統的な商用プログラミング」のどこで手続き型言語の代わりにそれを使用するのが理にかなっていると思う場所を見つけます。 Lispで書かれた商用キラーアプリはありますか?

8
Haskellでグラフをどのように表現しますか?
代数的データ型を使用してhaskellでツリーまたはリストを表すのは簡単です。しかし、どのようにグラフを活版印刷で表現するのでしょうか。ポインタが必要なようです。私はあなたが次のようなものを持つことができると思います type Nodetag = String type Neighbours = [Nodetag] data Node a = Node a Nodetag Neighbours そして、それは実行可能でしょう。ただし、少し切り離されているように感じます。構造内の異なるノード間のリンクは、リスト内の現在の前の要素と次の要素、またはツリー内のノードの親と子の間のリンクほど実際には「感じ」がありません。私が定義したように、グラフ上で代数的操作を行うことは、タグシステムを通じて導入される間接性のレベルによって多少妨げられるだろうという予感があります。 私がこの質問をするのは、主にこの疑念と優雅さの認識です。Haskellでグラフを定義するより良い/より数学的にエレガントな方法はありますか?それとも、本質的にハード/ファンダメンタルなものに遭遇しましたか?再帰的なデータ構造はすばらしいですが、これは別のことのようです。ツリーとリストが自己参照する方法とは異なる意味での自己参照データ構造。これは、リストとツリーがタイプレベルで自己参照であるように見えますが、グラフは値レベルで自己参照です。 では、実際に何が起こっているのでしょうか。

3
Hindley-Milnerとは何ですか?
私はこの用語Hindley-Milnerに出会いましたが、それが何を意味するのか把握できていません。 次の投稿を読みました。 Steve Yegge- 動的言語の反撃 Steve Yegge- ピノキオ問題 Daniel Spiewak- Hindley-Milnerとは何ですか?(そして、なぜそれがクールなのですか?) しかし、ウィキペディアにはこの用語の単一のエントリはなく、通常は私に簡潔な説明を提供します。 注-1つが追加されました それは何ですか? それを実装または使用する言語とツールは何ですか? 簡潔な答えを教えていただけませんか?

24
reduce()を使用する便利なコード?[閉まっている]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 4年前休業。 この質問を改善する 誰かがPythonでreduce()関数を使用する便利なコードを持っていますか?例にある通常の+および*以外のコードはありますか? GvRによるPython 3000のreduce()の運命を参照してください

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