タグ付けされた質問 「haskell」

関数型プログラミング言語

1
オブジェクト間の関係
数週間、オブジェクト間の関係について考えてきました。特にOOPのオブジェクトについては考えていません。たとえばC ++では、他のオブジェクトへのアクセスを必要とする構造内でポインターまたはポインターのコンテナーを階層化することでそれを表現することに慣れています。オブジェクトAがにアクセスする必要がある場合、in Bを見つけることは珍しいことではありません。B *pBA しかし、私はもはやC ++プログラマーではありません。関数型言語を使用してプログラムを作成します。特に、純粋な関数型言語であるHaskellを使用します。ポインター、参照、またはそのようなものを使用することは可能ですが、「Haskell以外の方法で行う」など、私はそれに不思議に思います。 それから私はそれらすべての関係のことについてもう少し深く考え、要点に達しました: 「なぜこのような関係をレイヤー化して表現するのですか? 私はすでにそれについて考えている人々を読んだ(ここ)。私の見解では、明示的なグラフを介して関係を表現する方が、タイプのコアに焦点を合わせ、後でコンビネータを介して関係を表現できるため、はるかに優れています(SQLと少し似ています)。 コア私たちは定義するときにことを意味しA、我々は何を定義するために期待Aされるで作られたそれはない、何に依存します。たとえば、ビデオゲームでは、タイプがある場合Character、それについて話すことTraitは合法です、Skillまたはそのようなことですが、私たちが話すWeaponかItemsどうかはそうですか?もうよくわかりません。次に: data Character = { chSkills :: [Skill] , chTraits :: [Traits] , chName :: String , chWeapon :: IORef Weapon -- or STRef, or whatever , chItems :: IORef [Item] -- ditto } 私にとってデザインの点で本当に間違っているように思えます。私はむしろ次のようなものを好みます: data Character = { chSkills :: …

2
採用市場、パフォーマンス、保守性に基づいてアプリを構築するための言語を選択する[終了]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 6年前休業。 Rubyですべて実行される特定の本番用アプリ用にHaskellコンポーネントの構築を開始するかどうかの選択に直面しています。 私はいくつかの理由でHaskellに傾いています。主に速度(コンパイルされたHaskellは4〜8倍速い)、透明性の向上(Haskell型システムによる)、安全なリファクタリング(型システム)です。Haskellでいくつかのオープンソースおよびプロダクションプログラムをすでに書いており、それを非常に楽しんで書いています。 実現可能性は問題ではありません。Haskell Snap WebフレームワークとPostgreSQL.Simpleなどのデータベースライブラリをいじってみましたが、RailsアプリとさまざまなバックエンドプログラムをHaskellで書き換えることが可能であることに満足しています。 本当の問題は、開発チームの規模を拡大する必要がある場合にプログラマーを採用すること、または最終的にはプログラミングの責任を完全に引き継ぐことです。Rubyでは、Haskellよりもプログラマを見つける方がはるかに簡単です。その一方で、Haskellコミュニティは成長しているようで、DSLとしてアプローチする場合(Ruby on Railsのように)、Haskellプログラムの一部を変更するようにプログラマーをトレーニングすることはそれほど難しくありません。Haskell型システムは、動的Rubyよりもはるかに安全なコラボレーションを約束するようです。 ポールグラハムは、エッセイ「ビーティングザアベレージ」(http://www.paulgraham.com/avg.html)で、優れた言語を使用することが決定的な利点になり得ると主張しています。しかし、プログラマーをチームに追加しやすくするために、優れた言語を使用するのをやめるのはいつ適切でしょうか。

3
Haskellでのパフォーマンスについて推論するのに適したタイミングはいつですか?
サイモンペイトンジョーンズ自身は、厳密でないセマンティクスのため、Haskellでのパフォーマンスについての推論が難しいことを認識しています。 Haskellで重要なプロジェクトをまだ書いていないので、疑問に思います。プロジェクトの最初(基本的なデータ構造とIOライブラリを選択するとき)にのみパフォーマンスについて推論できますか。問題が発生したときはいつでも、プロファイラーで処理しますか? 別の言い方をすれば、パフォーマンスの問題があるときにパフォーマンスへの対処を延期することは可能ですか(つまり、それほど痛くない)、またはGHCがコードを実行する方法を予測することを学ぶ必要があります(例:厳密性アナライザーが決定するものを推測する) )?

3
Haskellの値/参照セマンティクスのテストの考案
命令型言語では、言語の「値のセマンティクス」または「参照のセマンティクス」の使用に関するプログラミングテストを考案することは簡単です。次のようにしてa(where Vertex {one, two, three :: Integer})の値を確認できます。 a := Vertex 3 4 5 b := a one b := 6 two b := 8 three b := 10 ただし、関数型言語では変数は不変であるため、このテストはそのような言語では機能しません。 私はHaskell(および関数型プログラミング全般)についてほとんど知りませんが、私の理解では、値のセマンティクスを使用しています。Haskellで「refレコード」と「valレコード」を区別するプログラミング実験を考案することは可能ですか?

11
オブジェクト指向のものは本当にそれほど重要ですか?[閉まっている]
現在のところ、この質問は、Q&A形式には適していません。私たちは回答が事実、参考文献、または専門知識によってサポートされることを期待しますが、この質問はおそらく議論、議論、投票、または拡張ディスカッションを誘います。この質問を改善でき、再開できると思われる場合は、ヘルプセンターにアクセスしてください。 8年前に閉鎖。 何年もの間、私はアルゴリズム関連の作業を行っており、インターネット検索用のスケーラブルなデータ構造を作成しています。情報検索関連の作業など 上記で述べたことには共通点があります。上記すべてのもの; C ++のような言語でコーディングされている場合は、それぞれ少数のクラスが必要です。私はそれらが興味深い問題であることを意味しますが、負荷の高いオブジェクト指向のものに関しては複雑ではありません。継承や仮想化などを使用したことがありません。ジェネリックプログラミングやテンプレートなどを頻繁に使用しています。 私はC ++が大好きです(-かさばるOOのもの、Erlangの作成者であるJoe Armstrongの言うところが好きなので、OO Worldではバナナを要求すると、大きなジャングルとバナナを抱えているゴリラができます)。私はJavaやPythonのような他の言語でのコーディングも楽しんでいます。 今私の質問は、私が取り組んでいるプロジェクト/アルゴリズムの種類を楽しんでいるからです。オブジェクト指向の要素を本当に学ぶ必要がありますか。継承、動的ポリモーフィズム(仮想)のようなものを使用するだけで、より優れたコーダー/デザイナーになれますか?または、関数型プログラミングの世界に移動できますか(私は今までそれを行っていません)、タスク/アルゴリズムに集中でき、名詞の王国に基づいたオブジェクト指向の要素、has-a、is-aルールを使用できないので、より魅力的です私? 簡単に言えば、OOは私が上記で言及した種類のプロジェクト/アルゴリズムについて私を助けることができますか? 編集: ここに追加する1つの非常に興味深いリンク: http://steve-yegge.blogspot.in/2006/03/execution-in-kingdom-of-nouns.html
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.