問題タブ [haskell]
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.
debugging - 本番機能プログラムをデバッグした実際の経験はありますか?
大規模な関数型プログラムの欠陥を診断するために使用されるツールと方法に興味があります。どのようなツールが便利ですか? 私の現在の理解では、'printf' デバッグ (たとえば、ログの追加と再デプロイ) が通常使用されるものです。
機能するシステムのデバッグを行ったことがあれば、オブジェクト指向または手続き型言語で構築されたシステムのデバッグと何が違うのでしょうか?
haskell - サーバー用の Haskell?
ゲームサーバーの作成に関しては、スケーラビリティと同時実行機能を備えた「この種のことのために構築された」言語として、Erlang が常に登場するようです。私は Haskell も Erlang も経験していませんが、表面上は同じように見えます。Haskell のドキュメントを見ると、マルチプロセッサのスケーラビリティと同時実行性がサポートされているようで、Haskell はより堅実な言語であり、目に見えて優れたコミュニティを持っていると言われています。私の質問は、Haskell は Erlang と同じくらい優れたサーバー構築ソリューションであると考えられているのでしょうか?
haskell - Haskell でのグラフの保存
有向グラフのノードのデータ型を簡単に定義できます。
show 関数を使用してグラフをファイルに保存し、read を使用して復元できます。ただし、show はサイクルに対応しません。グラフを保存して復元する簡単な方法はありますか?
visual-studio - ビジュアル ハスケル 2008
Haskell for Visual Studio 2005はVS2008 SP1 と互換性がありますか?
algorithm - 連続確率分布の表現
連続確率分布関数のコレクションに関連する問題があります。そのほとんどは経験的に決定されます(出発時間、通過時間など)。私が必要としているのは、これらのPDFのうちの2つを取得し、それらを計算する方法です。たとえば、PDFXから取得した2つの値xとPDFYから取得したyがある場合、(x + y)またはその他の操作f(x、y)のPDFを取得する必要があります。
分析的な解決策は不可能なので、私が探しているのは、そのようなことを可能にするPDFの表現です。明らかな(しかし計算コストの高い)解決策はモンテカルロです。xとyの値をたくさん生成し、f(x、y)を測定するだけです。しかし、それにはCPU時間がかかりすぎます。
私は、PDFを範囲のリストとして表すことを考えました。各範囲はほぼ等しい確率であり、PDFを一様分布のリストの結合として効果的に表すことができます。しかし、それらを組み合わせる方法がわかりません。
誰かがこの問題に対する良い解決策を持っていますか?
編集:目標は、PDFを操作するためのミニ言語(別名ドメイン固有言語)を作成することです。しかし、最初に、基礎となる表現とアルゴリズムを整理する必要があります。
編集2: dmckeeはヒストグラムの実装を提案します。それが、一様分布のリストで得ていたものです。しかし、それらを組み合わせて新しいディストリビューションを作成する方法がわかりません。最終的には、これが非常に小さい場合に備えて、P(x <y)のようなものを見つける必要があります。
編集3:ヒストグラムがたくさんあります。発生データから生成しているため、均等に分散されていないため、基本的に100個のサンプルがあり、ヒストグラムに10個のポイントが必要な場合は、各バーに10個のサンプルを割り当て、バーを可変幅で一定の面積にします。
PDFを追加するには、それらを畳み込むことがわかったので、そのための計算に骨を折った。2つの一様分布を畳み込むと、3つのセクションを持つ新しい分布が得られます。広い一様分布はまだ存在しますが、狭い方の幅の両側に三角形が貼り付けられています。したがって、XとYの各要素を畳み込むと、これらがすべて重なり合うようになります。今、私はそれらすべてを合計する方法を理解し、それからそれに最適な近似であるヒストグラムを取得しようとしています。
結局、モンテカルロはそんなに悪い考えではなかったのだろうかと思い始めています。
編集4: このペーパーでは、一様分布の畳み込みについて詳細に説明します。一般に、「台形」の分布が得られます。ヒストグラムの各「列」は一様分布であるため、これらの列を畳み込み、結果を合計することで問題が解決されることを期待していました。
ただし、結果は入力よりもかなり複雑で、三角形も含まれます。 編集5: [間違ったものを削除しました]。しかし、これらの台形が同じ面積の長方形に近似されている場合は、正しい答えが得られ、結果の長方形の数を減らすことも非常に簡単に見えます。これは私が見つけようとしてきた解決策かもしれません。
編集6:解決しました!この問題の最終的なHaskellコードは次のとおりです。
他の演算子は、読者の練習問題として残されています。
haskell - $はいつ使用する必要がありますか(常に括弧に置き換えることができます)?
私が読んでいることから、$
「その引数に関数を適用する」と説明されています。ただし、二項演算子であるため、Lispのようには機能しないようです。したがって、実際には、の代わりに(apply ...)
かっこを避けるのに役立つように見えます。私はそれを正しく理解していますか?後者の形式は「悪いスタイル」と見なされますか?foo $ bar quux
foo (bar quux)
haskell - 相互再帰 -- このコードがどのように機能するかを説明してくれる人はいますか?
「A Gentle Introduction to Haskell」を読んでいますが、早い段階で次の例を使用しています。これは、GHC では正常に機能し、私の脳では恐ろしく機能します。
そして呼び出しコード:
take 10 reqs
私がそれをどのように見ているかは、 がreqs
呼び出されclient
、引数 0 とresps
. したがって、resps
今は呼び出される必要はありません...これは再び呼び出さreqs
れますか? それはすべてとても無限に思えます...誰かがそれが実際にどのように機能しているかを詳しく説明できれば、私は最も感謝しています!
string - haskellで繰り返される単語のリストを表示する
文字列から繰り返される単語を表示し、文字列のリストを出現順に返し、文字以外を無視する関数を作成できる必要があります
例:抱擁プロンプトで
haskell - 型付きFP:タプル引数とCurriable引数
Standard ML、F#、OCaml、Haskellなどの静的に型付けされた関数型プログラミング言語では、関数は通常、パラメーターを互いに分離し、関数名から空白で区切って記述されます。
ここでの型は" int -> (int -> int)
"です。つまり、intを受け取り、その順番がintを取り、最後にintを返す関数を返す関数です。これによりカリー化が可能になります。
タプルを引数として取る同様の関数を定義することもできます。
この場合、タイプは「(int * int) -> int
」になります。
言語設計の観点から、型代数でこれら2つの型パターンを単純に識別できない理由はありますか?つまり、「(a * b)->c」が「a->(b-> c)」になり、両方のバリアントを同じように簡単にカレーできるようになります。
私が言及した4つの言語のような言語が設計されたとき、この質問が浮かび上がったに違いないと思います。では、これら4つの言語すべてがこれら2つのタイプのパターンを「統合」しないことを選択した理由を示す理由や調査を知っている人はいますか?
exception - この例外を処理するにはどうすればよいですか?
今日は Haskell が頭を悩ませています。例外を処理したい。トップに到達すると、次のように出力されます。
*** 例外: ../p/trip/Trip.hs:(88,16)-(89,50): 関数分割の非網羅的なパターン
私にはそれが PatternMatchFail のように見えますが、これは機能しません:
つまり、コンパイルはしますが、例外を処理しません。私は何を間違っていますか?これは間違った例外ですか、それとも何ですか? 例外をキャッチする方法はありますか?