タグ

ブックマーク / www.kotha.net (6)

  • GHCのこと

    オブジェクトレイアウト 通常のHaskellの値(代数的データ型および関数)と、未評価の計算を表すサンクは、全てポインタで参照される。ポインタが指す先は通常はヒープ上のオブジェクトだが、静的セクションに置かれていることもある。いずれにしてもレイアウトは同じで、以下の一般形をとる。 オブジェクトの先頭1ワードは静的領域へのポインタ(infoポインタ)で、この値を評価(関数なら適用)するためのコード(entry code)と、このオブジェクトの種類に関する情報を集積したレコードを指している。なお、GHCにおける1ワードはポインタと同じ大きさ、つまり32ビットOSなら32ビット、64ビットOSなら64ビットである。これはIntの精度と同じでもある。 代数的データ型 代数的データ型の評価済みの値では、infoポインタが構築子の種類を表し、その後に構築子の引数を入れるスロットが続く。したがって、N引

  • 4.10. 最適化(コードの改善)

    igrep
    igrep 2016/03/19
    よく見たらすごい訳が混ざってたw “とにかくハイクオリティがいいお( ^ω^) 時間とか気にしないお!CPU稼働率100%でも構わないお!”
  • 栄光のグラスゴーHaskellコンパイルシステム利用の手引き バージョン7.6.2

    栄光のグラスゴーHaskellコンパイルシステム利用の手引き バージョン7.6.2The GHC Team目次 The Glasgow Haskell Compiler License1. 参考訳1. GHCの紹介1.1. GHCを入手する1.2. メタ情報: ウェブサイト、メーリングリストなど1.3. GHCのバグを報告する1.4. GHCのバージョン番号付け規則1.5. Release notes for version 7.6.11.5.1. Highlights1.5.2. Full details1.5.2.1. Language1.5.2.2. Compiler1.5.2.3. GHCi1.5.2.4. Template Haskell1.5.2.5. Runtime system1.5.2.6. Build system1.5.3. Libraries1.5.3.1. arr

  • パッケージ

    パッケージとは、Haskellモジュールから成るライブラリで、コンパイラが把握している。GHCにはいくつかのパッケージが付属している。同梱のライブラリ説明書(訳注: 未訳。web上の最新版)を見よ。また、HackageDBから別のライブラリを入手してインストールすることができる。 パッケージを使う手順はこの上なく単純である。––makeやGHCiを使っているなら、インストール済みパッケージの大部分を余分なオプションなしでプログラムから使うことができる。例外は下記4.9.1. パッケージを使う で説明されている。 自分のパッケージをビルドするのもとても簡単な作業である。我々が提供するCabalインフラストラクチャがパッケージの設定、ビルド、インストール及び配布を自動化する。必要なのは、単純な設定ファイルを書き、いくつかのファイルを正しい場所に置くことだけである。詳細はCabal説明書(訳注:

  • GHCiデバッガ

    GHCiは単純な命令的スタイルのデバッガを搭載していて、実行中の計算を停めて変数の値を確かめることができる。このデバッガはGHCiに統合されており、デフォルトで有効になっている。デバッグ機能を使うのにフラグは必要ない。一つ、重要な制限があって、ブレークポイントとステップ実行は解釈実行されているモジュールでしか使えない。コンパイル済みコードはデバッガからは見えない[5]。 このデバッガは以下のものを提供する。 プログラム中の関数定義や式にブレークポイントを設定する能力。その関数が呼ばれたとき、あるいはその式が評価されたとき、GHCiは実行を中断してプロンプトに戻る。そこで、実行を続ける前に、局所変数の値を調べることができる。 ステップ実行ができる。評価器は、簡約をだいたい一回行うごとに実行を一時停止し、局所変数を調べることができるようにする。これはプログラムのあらゆる地点にブレークポイントを

  • 基本的なこと

    必要呼び Haskellの言語仕様(ja)は式の評価順序を定めていないが、プログラムの計算量を見積もるには具体的な評価戦略を知っている必要がある。といっても事態は単純で、GHCを始めとする有名な処理系は全て「必要呼び(call by need)」という評価戦略を基にしている。(「Haskellは遅延評価をする言語である」と言われるが、この「遅延評価」という語は必要呼びを指す)。そこで、必要呼びに従った評価を手動で再現することができれば、Haskellプログラムの計算量をおおざっぱに見積もることができる。以下ではその手順を紹介する。 普通の言語の評価戦略は値呼び(call by value)と呼ばれる。値呼びと対比したときの必要呼びの大きな特徴は、関数を呼ぶ際に、引数を未評価のまま渡すことである。次の関数を考える。 inc :: Int -> Int inc n = n + 1 これを使っ

    igrep
    igrep 2012/09/25
    超いいまとめだ
  • 1