問題タブ [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.
haskell - Haskellデータ型のメモリフットプリント
Haskell(主にGHCを使用)にあるデータ型の値を格納するために必要な実際のメモリ量をどのように見つけることができますか?実行時に(たとえばGHCiで)それを評価することは可能ですか、それともそのコンポーネントから複合データ型のメモリ要件を推定することは可能ですか?
a
一般に、タイプとのメモリ要件b
がわかっている場合、次のような代数的データ型のメモリオーバーヘッドはどのくらいですか。
たとえば、これらの値はメモリ内で何バイトを占めますか?
ガベージコレクションが遅れているため、実際のメモリ割り当てが多いことを理解しています。遅延評価のために大幅に異なる場合があります(サンクサイズは値のサイズとは関係ありません)。問題は、データ型が与えられた場合、完全に評価されたときにその値がどのくらいのメモリを消費するかということです。
GHCiにはメモリ統計を表示するオプションがあることがわかりましたが:set +s
、単一の値のメモリフットプリントを見積もる方法が明確ではありません。
haskell - Haskellで2つのクラスを1つにマージ/ユニオン
重複しないタイプのセットが2つあり、これら2つの和集合である他のセットを作成したいと思います。コードサンプル:
GHC 6.12.3では、これをエラーメッセージで宣言することはできません。
私は、この宣言が重複するインスタンスの制御を失うことにつながることを理解しています。これはAB a
、インスタンスが後で発生する可能性があるためです(A a
そしてB b
、それを処理する簡単な方法がわかりません)。
同じ動作をするためには、いくつかの「回避策」が必要だと思います。
次のようなPSバリアント:
と
そして、このタイプのいくつかをラップする他のものは私のニーズに合いません(サードパーティが宣言したタイプのクラスによる実装を選択します)
@camccannへのコメント: フラグのマージ/選択タイプを制御するためにフラグを追加するのは素晴らしいアイデアですが、重複するインスタンスの競合などは避けたいと思います。この回答に興味のある人のために、圧縮されたバリアント:
haskell - HackageからCabalを介してHaskellパッケージをインストールすると、依存関係の解決に行き詰まります
これが冗長モードからの出力です。私はこれが以前私のために働いていたことを知っています、しかし今これは起こります。私は他のパッケージでそれを試しましたが、同じ結果が得られました。
この時点で、プログラムは仮想メモリを使い果たし始め、システムをロックし、最終的にOSにディスク容量の減少を警告するように促します。
これが私の環境です。私はMacOSX10.4.11も使用しています。
haskell - Haskell: Print TextEncoding
ハスケル初心者です。
サードパーティの Haskell プログラムで奇妙なロケール関連のバグをデバッグしようとしているときに、デフォルトのエンコーディングを出力しようとしています:
しかし、それは失敗します:
私のgoogle-fuは私を失敗させています。私は何が欠けていますか?
haskell - シンボル__module_registeredエラーの定義が重複しています
GHCiから、「シンボル__module_registeredの定義が重複しています」というエラーメッセージが表示されます。次のようになります。
これを修正する方法は?
syntax - Haskell エラー: 入力 `=' の解析エラー
仕様
GHC 6.12.1
Mac OS X 10.6.4 x64
マックブックプロ
問題
let
構文の使用に問題があります。次のコードはコンパイルを拒否します。
タブを押してみましy = 2
たz = 3
。サイコロはありません。
(望ましくない) 解決策
コードをコンパイルする唯一の方法は、次のいずれかです
- ハードタブをスペースに置き換えます。
let
句を句に置き換えるwhere
。
haskell - ghcでmain関数なしでオブジェクトファイルのみを取得するにはどうすればよいですか?
[ソースコード]
データFooBar=Foo | バー
[指示]
$ ghc -c foo_bar.hs
foo_bar.hs:1:0:関数「main」がモジュール「Main」で定義されていません
[構成]
Glasgow Haskellコンパイラバージョン6.12.3、Haskell 98用、ステージ2、GHCバージョン6.10.4で起動
haskell - ghcおよびmingwツールを介したhaskellコードのクロスコンパイル
私は試してみまし-fvia-C
た-pgm
が、どれも実行可能ファイルを作成できず、のような多くのエラーが発生しましたWarning: retaining unknown function ``L4' in output from C compiler
。
compiler-construction - Haskell コンパイラは「where」ステートメントをどのように処理しますか?
x
次の関数では、コンパイラが十分に賢く、一定のままになるのか、それともリスト内のすべての項目のリストの先頭を計算するのか疑問に思っています。(私はGHCを使用しています)
optimization - Haskell / GHC でボックス化されていない型 (Int# など) を使用している場合、注意すべきことはどれですか?
Brainfuck コードを解析して実行する小さなスクリプトを作成しようとしています。最適化の GHC オプションを理解するために、コードを最適化して、少し高速化し、そこで何が起こっているのかを理解しようとしています。
パーツの 1 つは BF コードの内部表現です。これには特別なデータ型を使用します。ソースコードは次のとおりです。変換を行う 2 つの関数が含まれています。
アイデアは、コードが何らかの入力 (文字列) から読み取られ、上記のコードによって事前に解析および単純化されてから、他の関数によって実行されるというものです。(入力が有効であると仮定します)。
この例を最適化するために、次のような domething を実行して、コンストラクターMovePointer
とコンストラクターの Int パラメーターをアンボックスしようとしました。AdjustValue
これにより、ボックス化された型が、GHcの実装の詳細であるボックス化Int
されていない生の型に変わります。Int#
私が読んだように、このオプションはいくつかの場合にのみ有効です。そのため、この種の最適化を実行する場合、どの点に注意する必要があるかを尋ねたいと思います。私の目標は、Haskell の利点を利用して BF コードを実行できるようにすることです。