はてなブログにGistのコードを埋め込んだ際にデザインがおかしくなるのを修正した

先日の Gist のリニューアルに伴って、外部サイトにコードを埋め込む際の HTML 構造が変更されたらしく、はてなブログ上に貼り付けたコードのデザインがおかしくなってしまった。

修正前:

f:id:hyone:20121228214918p:plain

そこで、以下のような CSS を追加して修正した。

td.line_data pre {
    font-size: 13px;
    white-space: pre;
    box-shadow: none;
}

td.line_numbers {
    font-size: 13px;
}

修正後:

f:id:hyone:20121228214850p:plain

行ごとの枠線を消して、行番号とコードのずれを修正。

参考にしたサイト

DataKinds 言語拡張を使って Typed Heterogeneous List とその基本操作を実装してみた

DataKinds 言語拡張のおかげで、 [String, Bool] のような型レベルのリストリテラルが扱えるようになり、 異なる型の要素を持つことができるヘテロリスト、それも Dynamic のようなユニバーサル型を使った Untyped なものではなく、各要素ごとに異なる型付けができるヘテロリスト ( Typed Heterogeneous List ) を、以下のようにスマートに定義できるようになった。

ので、このヘテロリストに対する基本的な操作を実装してみた。 次のような感じで使える。 ( 要 GHC 7.6.1 以上 )

実装

参考にしたサイト

Singleton types を使ってみる

型レベルでのプログラミングをする際、よく「値」が存在しない型 ( i.e. EmptyDataDecls な型。 DataKinds で Promoted されたデータコンストラクタとか。 ) を「型レベルでの値」として扱うけれど、これはつまり実体を持っていないということだから、まるで雲を掴むような話になってしまいわけがわからなくなる。

これに対して、 GHC 7.6.1 では、「型レベルの値」を「ランタイムレベルの値」にマップして、便利に使えるように、 Singleton types という型クラス群が用意されたようだ。

そこで、前回の 型レベルで FizzBuzz で定義した Nat, Result 型を題材に、実際にそれぞれのインスタンスを宣言して、「型レベルの値」を「ランタイムレベルの値」にマップしてみた。

参考にしたサイト