タグ

ghcに関するrydotのブックマーク (7)

  • GHC 7.4.1 の型レベル新機能を使い倒す 〜GADTs、型族 と DataKinds、ConstraintKinds の円環〜

    konn-san.com 建設予定地 Blog GHC 7.4.1 の型レベル新機能を使い倒す 〜GADTs、型族 と DataKinds、ConstraintKinds の円環〜 GHC 7.4.1 の型レベル新機能を使い倒す 〜GADTs、型族 と DataKinds、ConstraintKinds の円環〜 konn-san.com 型であそぼう! みなさん今日は!遂にHaskell Platform 2012.2.0.0 がリリースされましたね! そこでこの記事では、シンプルな例を通して、GADTs や型族、更には GHC 7.4.1 の新機能であるデータ型の昇格と制約カインド、などといった型レベルプログラミングの機能を紹介していきたいと思います。こちらが題材となるソースコードです。 問題:リストの要素を関数に渡したい Haskell を学びたての頃によくしがちな間違いとして、リス

    GHC 7.4.1 の型レベル新機能を使い倒す 〜GADTs、型族 と DataKinds、ConstraintKinds の円環〜
    rydot
    rydot 2015/06/14
  • 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 - あどけない話
  • The ghc-vis User Guide

    ghc-vis is a tool to visualize live Haskell data structures in GHCi. Evaluation is not forced and you can interact with the visualized data structures. This allows seeing Haskell’s lazy evaluation and sharing in action. Functional programming languages like Haskell offer a way to write well-structured software, which is easy to understand and still performs well. In order to achieve this one has t

  • 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