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

css

先日の Gist のリニューアルに伴って、外部サイトにコードを埋め込む際の HTML 構造が変更されたらしく、はてなブログ上に貼り付けたコードのデザインがおかしくなってしまった。 修正前: そこで、以下のような CSS を追加して修正した。 td.line_data pre {…

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

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

Singleton types を使ってみる

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

Haskell で非同期 HTTP Request

複数の HTTP Request を非同期で実行する例 ( http.async.client のコールバックAPIを使って非同期 HTTP Request - hyoneの日記 と同じ題材 ) を async ライブラリを使って書いてみた。 参考にしたサイト Conduit + Attoparsec (+ Concurrent) - yunomuのブ…

型レベルで FizzBuzz

最近、 Type Family, Datatype Promotion, Kind Polymorphism といったあたりの話をいろいろ読んでいたので、練習に型レベルで FizzBuzz を書いてみた。型レベルの計算の記述は、まだまだ冗長でスマートでない感じだけど、 GHC 7.6.1 で導入されたという Pro…

ある型のうち一部の複数のデータコンストラクタのみを受け付ける関数を定義する

GADTs を使うと、以下のように、ある型のうち、特定のデータコンストラクタのみを受け付ける関数を書くことができるようになるけど、これだと、ある型のうち1つのデータコンストラクタだけ受け付ける関数しか定義することができない。指定した複数のデータコ…

Monad 変換子を使って List Monad でロギングできるようにする

Monad 変換子を使う練習として、 List Monad の中で Writer Monad を使ってロギングできるように変換してみる。まず、題材として、葉の数が n である二分木の全ての組み合わせの数を返す count 関数を定義。ここで count 関数の do 式での処理過程を Writer …

http.async.client のコールバックAPIを使って非同期 HTTP Request

http.async.client が v0.4.4 で event callback API が整備された ので、これを使って http.async.client で非同期 HTTP Request - hyoneの日記 のコードを書き直した。

リストをN個ごとにサブリストに分割

リストをN個ごとにサブリストに分割する関数を splitAt と State Monad を使って書いた。結局、 Data.List.Split.splitEvery にあったれど。

Haskell で XML Scraping

Twitter API から XML を取ってきて、ツイートの URL 一覧を抜き出す。

Inverse FizzBuzz で Scala の練習

Scala を書くの久しぶりで、けっこう手こずった。

Inverse FizzBuzz

部分列検索するだけか、簡単だぜひゃっほー、とか調子に乗ってたら、そもそも問題の意味からして完全に間違えてましたorz 修正版を追加。Inverse Fizzbuzz - just another scala quant を Clojure で書いてみた。 修正版

aleph を使って非同期 HTTP Request

前回、http.async.client を使って非同期 HTTP Request したコードを aleph を使って書いてみる。

http.async.client で非同期 HTTP Request

v0.4.4 で追加されたコールバックAPIを使ったコードはこちら http.async.client のコールバックAPIを使って非同期 HTTP Request - hyoneの日記http.async.client を使って、複数の HTTP Request を非同期で実行してみる。ドキュメントでは http.async.client…

quickrun.el の導入と実行結果が表示されない問題の対処

quickrun.el の github 最新版を emacs に導入してみたのだが、 いざ M-x quickrun をしても出力が表示されない。ぐぐってみると、同様の症状が出ている記事が見つかった。『quickrun.el』が超便利そうな感じ、でも出力表示がうまくいかない場合。 - 牌語備…

slime repl (clojure) で paredit が [] や {} を括弧として取り扱ってくれるようにする

S式を移動したり、入力したりする上で paredit は欠かせないが、 slime repl (clojure) 上では、なぜか や {} を括弧として取り扱ってくれなくて ( clojure-mode では問題ないのに! )、 pareedit-forward-up などですっ飛ばされてしまいイライラの元になって…

画像まとめページをスクレイピングして画像を並列ダウンロード

ScalaでWebスクレイピングして画像収集する - tototoshiの日記 を写経したついでに Clojure でも書いてみた。せっかくなので、並列でダウンロードするように。http://satlog.blog119.fc2.com/blog-entry-2943.html から、jpgファイルのURLを抜き出して並列ダ…

中心点の座標を持つ二つの図形(点、正方形、長方形、円)が重なりを持つかどうか判定する

6.6 練習問題 - Objective Caml 入門 より。

evil.el で現在の関数を text-object として扱えるようにする

evil.el で現在の関数を text-object として扱えるようにする。これで "vaf" で現在の関数を選択したり、"yaf" でコピーしたりと、できるようになった。

elscreen-next, elscreen-previous を引数を取れるように改良。

elscreen-next, elscreen-previous は引数を取ることができず、一度に一つずつしかタブ移動できないので、引数を取れるように改良した。

RichInt と構造的部分型で Runtime Error

type LT = { def < (that: Int): Boolean } def lt(x: LT, y: Int): Boolean = { println(a.getClass) x < y }scala> lt(2,3) class scala.runtime.RichInt java.lang.NoSuchMethodException at scala.runtime.BoxesRunTime.testLessThan(Unknown Source) sc…

100 doors

Problem: You have 100 doors in a row that are all initially closed. You make 100 passes by the doors. The first time through, you visit every door and toggle the door (if the door is closed, you open it; if it is open, you close it). The s…

Clojure 1.2.0 で再帰的呼び出しを dotrace で補足できない件

dotrace マクロを使うと、指定した関数の呼び出しの引数、返り値をトレースできる。 user> (use 'clojure.contrib.trace) nil user> (defn f [n] (* n n)) #'user/f user> (dotrace [f] (doseq [i [1 2 3]] (f i))) TRACE t7412: (f 1) TRACE t7412: => 1 TR…

datatype 型で Readable な文字列を得るには

defrecord した datatype 型を REPL で表示すると Readable な文字列が表示されるのに str 関数で文字列を得ようとすると、いやんな感じになってしまう。 user> (defrecord message [sender text]) user.message user> (def s (message. "Tom" "Hello")) #'u…

ニュートン・ラプソン法で平方根

clojure でエラトステネスのふるい

anything-find-file で 1 キーストロークで上のディレクトリに移動できるようにする

anything-complete.el で定義されている anything-find-file で M-p で上のディレクトリに移動できるようにする。 (when (require 'anything-complete nil t) (defun anything-find-file-follow-directory (sel) "Follow directory in 'sel'." (interactive)…