タグ

haskellとghcに関するrydotのブックマーク (5)

  • GHCのこと

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

  • GHC と gold - あどけない話

    GHCのコンパイル速度は、お世辞にも速いとは言えないのだが、一番イライラするのはリンクが遅いこと。これは GNU ld が遅いからである。という訳で、速いと言われる gold を使うためのメモ。 GHC 7.6.3 までは gold が使えない。なぜなら、GNU ld 固有のオプションである --hash-size と --reduce-memory-overheads がハードコードされており、これらを gold がサポートしてないからだ。 GHC 7.8 以降からは、リンカーに応じてオプションを変えるようになる。僕は GHC head で試した。以下のいずれかをやると、gold が使える。 ld のシンボリックリンクを ld.gold に向ける (Linux で binutils-gold をインストールするとこうなる。) cabal に --with-ld=ld.gold を指定する

    GHC と gold - あどけない話
  • Haskellの言語拡張たち - rfなブログ

    前回、なんか拡張を沢山使っていたが、おまじないのままなのもそろそろまずい感じなので、とりあえず調べてみた。 今回調べた拡張 型系 GADTs ScopedTypeVariables EmptyDataDecls TypeFamilies 型クラス系 MultiParamTypeClasses TypeSynonymInstances FlexibleInstances FlexibleContexts パターン系 BangPatterns PatternGuards ViewPatterns 文字列系 OverloadedStrings TemplateHaskell系 TemplateHaskell QuasiQuotes import系 ImplicitPrelude PackageImports 他言語系 CPP ForeignFunctionInterface 参考にしたところ L

    Haskellの言語拡張たち - rfなブログ
  • GADTs使ってみた - Faith and Brave - C++で遊ぼう

    このエントリは、Haskell Advent Calendar 2011の参加記事です。 今回は、HaskellのGHC拡張であるGADTs(Generalized Algebraic Data Types : 一般化代数データ型)を調べて使ってみたという内容を書いてみました。 最初に、GADTsはGHC拡張なので、使用するには以下のようにして拡張を有効にする必要があります: {-#LANGUAGE GADTs #-} まずは構文的な違いを、Maybeを例にして見てみましょう。 通常の代数データ型では、Maybeは以下のように書きます: data Maybe a = Nothing | Just a GADTsでは以下のように書きます: data Maybe a where Nothing :: Maybe a Just :: a -> Maybe a 通常の代数データ型では、データコンス

    GADTs使ってみた - Faith and Brave - C++で遊ぼう
  • apfelmus - GSOC 2012 Project Proposal - GHCi in the web browser

    The Google Summer of Code 2012 is looming on the horizon and it is time to think about project proposals related to Haskell. This year, I have a cool idea for a project that I’m willing to mentor. Addendum: An updated version of the proposal can now be found on the Summer of Code Trac. Project title: “GHCi in the web browser” Description: Imagine that you’re drawing a picture in Haskell with the d

  • 1