SchemeやHaskellのような関数型プログラミング言語の擬似コードを書くには? 私が検索したのは、CスタイルまたはPythonスタイルの擬似コードでした。関数型プログラミング言語の疑似コードの書き方は?
1
A
答えて
1
私は機能的なスタイルで擬似コードでアルゴリズムを書いているなら、私はミックスと一致する言語が、一貫して使用するかもしれませんが:
- せバインド変数
- 関数適用
- マップとたとえば、
テイクを折る、ハッシュ関数:
hash data =
let blocks = chunksOf blockSize (preprocess data)
foldr updateContext initialContext blocks
4
SICPやその他のチュートリアルでは、楽観的なプログラミングがあります。擬似コードの代わりに、物事に名前をつけ、彼らが取るかもしれない議論を提供するだけです。ですから、最低から最高周波数にソートされたノードのリストのうち、ハフマンツリーを作りたいと想像:
(define (huffman nodes)
(if (single-node? nodes)
(first nodes)
(let ([new-node
(make-node (first nodes)
(second nodes))])
(huffman (insert-sorted new-node
(cddr nodes))))))
これは完全なアルゴリズムであり、それはそうであっても、結果として、実際のコードの一部となりますそれは実際の擬似コードでもありません。 single-node?
、make-node
、insert-sorted
は定義されていません。Schemeではエラーが発生しますが、CLでは実際にこれを使用することができ、デバッガにジャンプして基本的にすべての作業が終了するまで実行を続行しながら欠落部分を実装します。
私は、Haskellや他のプログラミング言語では、機能的なものだけでなく、このような楽観的なプログラミングを行うことができます。最終的な結果には小さな変化があるかもしれませんが、他のリファクタリングではそれ以上の変化はありません。
関連する問題
- 1. 関数は、Cプログラミング言語
- 2. cプログラミング言語 - declare()関数
- 3. アルゴリズム/疑似コードをHTMLに書き込む方法は?
- 4. 今日のプログラミングでは疑似コードが必要ですか?
- 5. Excel疑似コード擬似コード
- 6. シェルフスタッキングの疑似コード
- 7. 数理プログラミング言語
- 8. 関数型プログラミング言語はどのように実装しますか?
- 9. このC#コードは関数型言語では終らない方法(F#?ハスケル?)
- 10. 関数 `selfApp`を本の中で書く*タイプとプログラミング言語*をスカラーに書く
- 11. シンプルな疑似コード言語用のパーサーを作成していますか?
- 12. プログラミング言語のインタプリタを書く
- 13. 早期返品の代わりに関数型プログラミング言語で関数を使用する方法
- 14. オブジェクトを関数型プログラミング言語で使用する利点は何ですか?
- 15. Fortuneのアルゴリズムの疑似コード
- 16. Webプログラミングのための強力な型付き言語
- 17. は、ランタイムは、一般的に、私は関数型言語の通訳に関する一般的な質問がある関数型言語コード
- 18. Doctrine2 Query Builderの疑似関数オブジェクトの使用方法は?
- 19. プログラミング言語間の類似機能の参照
- 20. 継承、疑似多型
- 21. スキームのプログラミング言語
- 22. Jプログラミング言語での配列言語
- 23. 複数のプログラミング言語でコードを作成するウィザード
- 24. Javascriptの基本的な疑問oopまたはobp、スクリプティングまたはプログラミング言語?
- 25. 関数/変数/クラスの名前でUnicodeを使用できるプログラミング言語?
- 26. プログラミング言語
- 27. NesCプログラミング言語
- 28. のpython関数型プログラミングpyspark
- 29. JavaScriptの関数型プログラミング - イベント
- 30. Dプログラミング言語のインプレース基数ソート
私は、これが擬似コードを書くためにどの機能言語に依存しているかと非常に依存していると思います。 Haskell、ocaml、fsharpはerlang、clojure/lispとはまったく異なるアプローチをしています。したがって、擬似コードは異なるように見えます。 haskellの場合は、ほとんどが型シグネチャを記述し、散文のアルゴリズムを説明します。動的言語については、私はあなたに何かヒントを与えるために十分な経験がありません – epsilonhalbe
なぜそれを書いてみませんか?誰かが「私に擬似コードを表示する」と言っているのですか、あるいは機能的なスタイルでコードを設計する方法を理解しようとしていますか?後者の場合、疑似コードが間違っている可能性があります。あなたの質問に対するもう少しの背景が役に立つでしょう。 –
機能コードは非常にコンパクトで高水準なので、小さなスペースではアルゴリズム全体に合わせて擬似コードを不要にすることができます(必ずしもそうとは限りません)。 IMOの擬似コードは、あまりにも冗長な構文(理解に害を与える)がある場合や、退屈な部分をスキップしたい場合(スタブがここでうまくいく)、より便利です。 – chi