問題タブ [ghc]

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.

0 投票する
2 に答える
245 参照

haskell - Haskell GD バインディングでのビルド エラー

cabal を使用して GD パッケージ ( http://hackage.haskell.org/package/gd-3000.4.0 ) をインストールしました。GD を使用するプログラムをコンパイルしようとすると、エラーが発生します。

0 投票する
1 に答える
299 参照

haskell - GHC プロファイラ出力の型クラス関数のデマングリング

GHC で書かれた Haskell プログラムをプロファイリングするとき、型クラス関数の名前は .prof ファイルでマングルされ、あるインスタンスのそれらの実装を別のインスタンスと区別します。これらの名前をデマングルして、それがどのタイプのインスタンスであるかを調べるにはどうすればよいですか?

たとえば、次のプログラムがあり、型FastSlow両方が実装されているとしShowます。

でコンパイルし-prof -auto-all -caf-allて実行し+RTS -pます。生成される .prof ファイルでは、上位のコスト センターは次のとおりです。

ツリーには、同様に次のように表示されます (関係のない行は省略します)。

の実装であり、の実装でshow_an9はないことをどのように把握できますか?SlowshowFast

0 投票する
3 に答える
123 参照

windows - Hackageからソースパッケージを操作して、複数のWindowsボックスに簡単にデプロイする方法は?

最近、Hackageでghc 6.12 / 6.10の優れたソースパッケージを見つけたとき、それらのパッケージをWindowsで動作させるために、cabalファイルにマイナーまたはメジャーな変更を加える必要がありました。修正をフォークしてgithubとマージする以外に、これらの変更されたビルドを、基本的なhaskellプラットフォームのみがインストールされている他のいくつかのWindowsボックスに取り込むための最良の方法/十分な方法は何でしょうか?

どういうわけかcabal-installを使用できるかどうかを選択する必要があります。これは、通常使用されるものだからです。変更されたビルドディレクトリを共有/ネットワークディレクトリに配置し、対象のWindowsボックスからマウントする必要がありますか?次のように言います。

機械で準備する

機械の使用と通常の開発について

0 投票する
1 に答える
454 参照

haskell - do表記は「base:GHC.Base.Monad」に固有のものですか?

標準Monadクラスには欠陥があり、実際に拡張する必要がある、FunctorまたはPointed浮かんでいるという考え。

私は必ずしもそれが正しいことだと主張しているわけではありませんが、誰かがそれをやろうとしていたとします:

これまでのところは問題ありませんが、do 表記法を使用しようとすると、次のようになります。

コンパイラは不平を言います:

質問:

do 表記は に対してのみ機能しbase:GHC.Base.Monadますか? Monad代替クラスで動作させる方法はありますか?

追加のコンテキスト:

私が本当にやりたいことはbase:Control.Arrow.Arrow、「一般化された」Arrowクラスに置き換えることです。

そしてArrow、クラスで の proc 表記を使用Arrowしますが、上記の do 表記と の例のように失敗しますMonad

現在のクラスのような型コンストラクターではなく、主Eitherにペア型コンストラクターとして使用します。これにより、私のおもちゃの RTS ゲーム ( ) のコードをよりきれいにすることができるかもしれません。(,)Arrowcabal install DefendTheKind

0 投票する
1 に答える
6115 参照

list - Map を使用して複数の入力を持つ関数を適用しますか? (ハスケル)

皆さん、こんにちは。

現在、私が取り組んでいる宿題を少し終わらせようとしており、複数の入力を受け入れる関数にマップを適用しようとしているという問題があります。

したがって、私が processList f (x:xs) = mapcelebrateList f xs x xs を使用している場合

processList には、浮動値 (f) と、別のリストにソートされるリストが与えられます

Accelerate List は、浮動値 (f) List と List Object を取り、それを介して別の List Object を返します。

Accelerate List コードが正しいことはわかっていますが、このコードの構文が機能することは一生ありません。

何か案は?もう3時間くらい頭をかいてます。私はそれが本当に単純なことだと知っています。

0 投票する
1 に答える
259 参照

haskell - 怠惰なコードの奇妙な振る舞いを理解するのに役立ちます

平面グラフの直交表現を生成するプログラムを作成します。この仕事では、GHC6.10.1を使用します。私のコードはFGLライブラリに基づいています。グラフ構造を維持するために使用します。

最近、説明できないエラーを見つけました。私のプログラムのコンテキストジョブを削除する場合は、次のようにします。

このプログラムは「OK」を出力する必要がありますが、結果は「ERROR」です。

詳細はこちらです。関数prepareDataは、ヘルプエッジのあるグラフを取得します。Data BlockSchemeは、それらをリストcyclesInfoBSに保持します。これらのエッジには、関数dualGraphのアルゴリズムが必要です。

関数prepareGは、これらのエッジを削除したグラフから新しいグラフを作成します。また、embeddedBSG変数の値はどこでも同じである必要があります。

ただし、dualGraphが機能するとエラーが発生します。内部をトレースすると、グラフにはヘルプエッジ(2,1)がありませんが、dualGraphを呼び出す前に、そのグラフ引数にヘルプエッジがあります。dualGraphのモジュールには、delEdge、delEdge、delNodes、delNodeのいずれも含まれておらず、これを行う関数を呼び出していません。dualGraphのモジュールは、グラフ変数のみを読み取ります。

コメントコードがヘルプエッジを削除する場合、それらは残ります。

dualGraphの前のグラフの状態:

グラフの状態をDualGraphモジュールに:

2番目の状態のノード2には、発信エッジがありません。

DualGraphの関数lSortSucでエラーが検出される場所があります。

lSortSucvertexIdグラフ=....これには、vertexIdが少なくとも1つの入力エッジと1つの出力エッジを持っているか、シンクノードである頂点が必要です。この場合、シンクノードは1です。

次に、ノード2のヘルプエッジがないグラフに対して、lSortSucがまだどこかで呼び出されていると想定できます。しかし、それは正しくありません。

誰かアイデアはありますか?私に何ができる?

0 投票する
1 に答える
79 参照

haskell - 使用されているライブラリの有効な範囲バージョンをすばやく検出する方法はありますか

私は初心者の Haskell プログラマーです。過去 6 か月間、役立つコードをいくつか書きました。そして、そこからライブラリを解放したい。このコードは、Haskell ライブラリと同様にシステム インストール cabal を使用します。ライブラリは、cabal でリリースされ、ライブラリとそのバージョンからの論理述語があるメタ データ ファイルがあります。

開発者は通常、1 セットのライブラリを使用します。セットライブラリのセットを面倒に扱います。一部のサブセット ライブラリについて、ライブラリが正常にコンパイルされているかどうかを確認する方法は?

0 投票する
3 に答える
661 参照

haskell - s ++ tが大きなsのスタックオーバーフローを引き起こさないのはなぜですか?

なぜだろうか

スタックオーバーフローエラーは発生しません。プレリュードの++は単純で、末尾再帰ではないようです。

編集:当初、この問題は前奏曲で++が定義されている方法、特に書き換えルールに関係していると思いました。したがって、質問は以下のように続きました。議論は私にこれが事実ではないことを示しました。遅延評価効果によってコードがスタックオーバーフローなしで実行されるようになったと思いますが、その方法はよくわかりません。

これだけで、スタックオーバーフローが発生するはずですよね?だから私はそれがおそらく++の定義に従うghc魔法と関係があると思います:

{-#ルール "++" [〜1] forallxsys。xs ++ ys = augment(\ cn-> foldr cn xs)ys#-}

*それはスタックオーバーフローを回避するのに役立ちますか?誰かがこのコードで何が起こっているのかについてのヒントを提供できますか?**

0 投票する
1 に答える
4607 参照

haskell - Haskellでは、バインディングが「既存のバインディングをシャドウイングする」とはどういう意味ですか?

コンパイルすると、GHCから警告が表示されます。

警告:「pats」のこのバインディングは、「match_ignore_ancs」の定義内の既存のバインディングをシャドウイングします

関数は次のとおりです。

これが何を意味するのか、どうすれば修正できるのか、何か考えはありますか?

乾杯。

0 投票する
5 に答える
6869 参照

windows - Haskell:改行の後ではなく、コンソールから入力文字をすぐに読み取る

私はこれを試しました:

しかし、Enterキーが押されるまで待機します。これは私が望んでいることではありません。ユーザーが押した直後に文字を読みたい。

私はWindows7でghcv6.12.1を使用しています。

編集:私にとっての回避策は、これを正しくサポートするGHCからWinHugsに移行することでした。