先日の Gist のリニューアルに伴って、外部サイトにコードを埋め込む際の HTML 構造が変更されたらしく、はてなブログ上に貼り付けたコードのデザインがおかしくなってしまった。 修正前: そこで、以下のような CSS を追加して修正した。 td.line_data pre {…
DataKinds 言語拡張のおかげで、 [String, Bool] のような型レベルのリストリテラルが扱えるようになり、 異なる型の要素を持つことができるヘテロリスト、それも Dynamic のようなユニバーサル型を使った Untyped なものではなく、各要素ごとに異なる型付け…
型レベルでのプログラミングをする際、よく「値」が存在しない型 ( i.e. EmptyDataDecls な型。 DataKinds で Promoted されたデータコンストラクタとか。 ) を「型レベルでの値」として扱うけれど、これはつまり実体を持っていないということだから、まるで…
複数の HTTP Request を非同期で実行する例 ( http.async.client のコールバックAPIを使って非同期 HTTP Request - hyoneの日記 と同じ題材 ) を async ライブラリを使って書いてみた。 参考にしたサイト Conduit + Attoparsec (+ Concurrent) - yunomuのブ…
最近、 Type Family, Datatype Promotion, Kind Polymorphism といったあたりの話をいろいろ読んでいたので、練習に型レベルで FizzBuzz を書いてみた。型レベルの計算の記述は、まだまだ冗長でスマートでない感じだけど、 GHC 7.6.1 で導入されたという Pro…
GADTs を使うと、以下のように、ある型のうち、特定のデータコンストラクタのみを受け付ける関数を書くことができるようになるけど、これだと、ある型のうち1つのデータコンストラクタだけ受け付ける関数しか定義することができない。指定した複数のデータコ…
Monad 変換子を使う練習として、 List Monad の中で Writer Monad を使ってロギングできるように変換してみる。まず、題材として、葉の数が n である二分木の全ての組み合わせの数を返す count 関数を定義。ここで count 関数の do 式での処理過程を Writer …
http.async.client が v0.4.4 で event callback API が整備された ので、これを使って http.async.client で非同期 HTTP Request - hyoneの日記 のコードを書き直した。
リストをN個ごとにサブリストに分割する関数を splitAt と State Monad を使って書いた。結局、 Data.List.Split.splitEvery にあったれど。
Twitter API から XML を取ってきて、ツイートの URL 一覧を抜き出す。
Scala を書くの久しぶりで、けっこう手こずった。
部分列検索するだけか、簡単だぜひゃっほー、とか調子に乗ってたら、そもそも問題の意味からして完全に間違えてましたorz 修正版を追加。Inverse Fizzbuzz - just another scala quant を Clojure で書いてみた。 修正版
前回、http.async.client を使って非同期 HTTP Request したコードを aleph を使って書いてみる。
v0.4.4 で追加されたコールバックAPIを使ったコードはこちら http.async.client のコールバックAPIを使って非同期 HTTP Request - hyoneの日記http.async.client を使って、複数の HTTP Request を非同期で実行してみる。ドキュメントでは http.async.client…
quickrun.el の github 最新版を emacs に導入してみたのだが、 いざ M-x quickrun をしても出力が表示されない。ぐぐってみると、同様の症状が出ている記事が見つかった。『quickrun.el』が超便利そうな感じ、でも出力表示がうまくいかない場合。 - 牌語備…
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 として扱えるようにする。これで "vaf" で現在の関数を選択したり、"yaf" でコピーしたりと、できるようになった。
elscreen-next, elscreen-previous は引数を取ることができず、一度に一つずつしかタブ移動できないので、引数を取れるように改良した。
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…
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…
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…
defrecord した datatype 型を REPL で表示すると Readable な文字列が表示されるのに str 関数で文字列を得ようとすると、いやんな感じになってしまう。 user> (defrecord message [sender text]) user.message user> (def s (message. "Tom" "Hello")) #'u…
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)…