Haskellで型宣言に型クラスを使う

今まで型宣言には具体的な型を書くものだと思っていたのだけど、型クラスを書いてもいいのね

myequal :: (Eq a) => a -> a -> Bool
myequal a b = a == b

RWHの15.8(Hiding the IO monad)では型クラスを使って抽象化していた。

ProductName Real World Haskell―実戦で学ぶ関数型言語プログラミング
Bryan O'Sullivan
オライリージャパン / 3990円 ( 2009-10-26 )


Bioisosteres in Medicinal Chemistry

見逃してた。これは超欲しい。

opensourceでRXNかSMIRKSのあつかえるchemoinformaticsのライブラリが欲しいなぁ。

高速文字列解析の世界が素晴らしかった

丸4日かけて8章(最終章)以外を読んだ。正月休みの後半の時間をこの本を読むのに費やしたのは正解だった。新年開始早々、知的な満足感が得られた。

本書を読めば、BWT、簡潔データ構造、ウェーブレット木、FM-Indexが理解できる。

LF-mappingのところ(p.28の補題3.4)を理解するのに時間がかかったが、これを理解できればFM-Indexのアルゴリズムが理解できる。ついでにWavelet Matrixも理解できた。ひとつひとつ丁寧に読み進めていけば理解できるようになっていたので良かった。

本や論文で書いてあるなら、まず読んで知っているのが必要条件(slide 24)と著者のスライドに書いてあるように、BWT、簡潔データ構造、ウェーブレット木、FM-Indexは知らないといけない知識になるんだろうなぁと。

pubmed調べたら、bioinformatics用途でしかみつからないのでchemoinformatics方面で応用できたらいいなぁと思った。

その他

  • LZEndはちゃんと理解していない
  • Boyer-Mooreは昔やった

Free Monadを調べている

Free Monadとは

さて、この「Freeモナド」について、オレオレ定義で簡単に言葉にすると。「Functorと組み合わせて様々な挙動を実現できるモナド」です。capriccioso String Creating(Object something){ return My.Expression(something); }

つまるところ

要はFree Monadは、Pureな値が何かの型によってリストのように順々にくるまれた構造をもつデータ型を表していて、Listにおけるfoldのような畳み込みと同様に、Impureな部分をたどっていってPureな部分に到達するまでfmapを繰り返して処理を行いますみょんさんの

もう少し圏論的な説明は

じゃあこの操作を普通の関手でもできるようにしてやろうということを考えると自然とFreeモナドが構成できる。直和が定義できる圏であれば、自由モノイドを作るのと同じ要領でモナドを作ればよい。北海道苫小牧市出身のPGが書くブログ

実際どう使うか

インターフェースを定義するみたいなイメージでいいのかな、Functorが具象クラスで。

RWHの15章を読みなおすのもいいらしい(これから読む)。

簡潔データ構造

4章

簡潔データ構造は、操作が高速でありながら作業領域量が小さいという2つの性質を兼ね備えたデータ構造であり、データ圧縮と索引の技術が組み合わさったものである

完備辞書(FID)

  • access: B[i]を返す
  • rank:B[0,i)中のb∈{0,1}の数を返す
  • select:B中で伝統から見てi+1番目に出現したb∈{0,1}の位置を返す

p.48の式がo(n)ビットに抑えられていると書いてあるのだが手で計算して確かめていない(ので後で計算する)。 (13.01.05 libcdsのチュートリアル読んだら理解した)

簡潔木の説明がさらりとしすぎてあまり触れられていない気もするが、本書においてあまり重要でないってことでいいのかな(全体を読んでみないとわからない)。

それから読んでいて索引が貧弱だなと思った。RRRとかselectとか引けない。

高速文字列解析の世界を読み始めた

僕のフィールドには一応Bioinformatics,Chemoinformaticsも含まれているので、文字列だけでどこまでいけるのかは非常に興味がある。まぁ物理法則を無視できなくなってくると文字列処理ではどうしようもないんだけどね。

3章のBWTまで読んだけど、3-4のBWTの性質と復元のところがさらっと流されていてさっぱり分からなかったので、検索したらわかりやすい説明を見つけた。

が、全体的には丁寧に解説されていて、分かりやすいと思うし、読んでて楽しい。

個人的にはSMILESみたいな構造情報を文字列にしたものをBWTで扱えないかなぁと考えている(chemoinformaticsに応用してみたい)。構造変換ルールにもイディオムみたいなのあるしね。MMPを高速に検索できても嬉しいだろうし、なんか使い道がありそうな気がするんだけど。

巳年

ひねりなし

ary = [32, 95, 95, 95, 95, 95, 95, 95, 95,
       95, 95, 95, 95, 95, 95, 95, 95, 95,
       95, 95, 95, 95, 95, 95, 95, 47, 32,
       32, 79, 32, 92, 95, 95, 95, 47, 10,
       60, 95, 47, 95, 92, 95, 47, 95, 92,
       95, 47, 95, 92, 95, 47, 95, 92, 95,
       47, 95, 92, 95, 47, 95, 95, 95, 95,
       95, 95, 95, 47, 32, 32, 32, 92, 10]

print "".join([chr(c) for c in ary])

python

YesodのBlogのExampleがちょっとわかりにくい

Yesod本のBlogのExampleがyesod initでできるスキャフォールドとかけ離れていてわかりにくい。

ProductName Developing Web Applications With Haskell and Yesod
Michael Snoyman
Oreilly & Associates Inc / 2805円 ( 2012-05-04 )


Foundation.hsとかに丁寧なコメント書いてあるだろうっていうツッコミもあるだろうけど、写経できるに越したことはないよなぁと思う。

wikiのほうを先にやるかな。

ウェブで政治を動かす!

僕はKindle版で読んだけど、これは読んでおくべき良書だと思う。個人的にはウェブで動かすのは地方政治であるべきかな。facebookあるしね。

政治家は、政策を実現するための道具です。その道具を使いこなすためのメディアとして、インターネットは公開性が高く、コストもかからない。さらに、各委員会、審議会は公開の場で行い、テーマごとに議事録も整理して、インターネット上で閲覧できる仕組みを作るべきだと考えます。

ProductName ウェブで政治を動かす! (朝日新書)
津田大介
朝日新聞出版 / 861円 ( 2012-11-13 )


デモとは

個人的にはデモの意義は勉強になった。

フランスの市民デモに「異議申立てのため、ただ、参加するだけでいい」「デモは楽しいもの」という共通点があることを我々は知っておくべきだ。

民主主義というのは多数派が少数派の意見を効率良く無視するためのシステムだというのは周知のとおりであり、小選挙区制というのはそれが顕著に現れていると思う。

デモとは何か。それは、もはや暴力に訴えかけていかなければ統制できないほどの群衆が街中に出現することである。

そして、選挙区を超えて、密度を高めて主張する手段がデモなのかなぁと思った。少数派の意見を効率良く無視させないシステムだな。そう考えるとウォール街を占拠せよなんかは興味深い。

双方向性

地方政治にこそ双方向性を持ち込む必要があるよなぁと思う。

ホームページというのはもう古いんですよね。更新は遅いし、双方向性も共有性もない。要は石器のようなものです。

まぁ、富士市のtwitterFacebookも双方向性を完全にシャットアウトしていてどうしようもないなぁと思うんだけどリノベートできるようにある程度API的なものを整備してくれないかなぁと思っている。

そんだけやれば市民で勝手に仕組みを作るでしょ。

追記 13.01.02

双方向の仕組みも模索しているようだ。頑張って欲しい。

正月は家でグダグダしながらコードを書いている

昨日長野から帰ってきて、今日は朝からぐーたらしている。風が強すぎて外に出る気も起きないのでDJ ShadowのMixを聴きながら、大那を飲みつつYesodいじってた。

1357096629

年末に頂いた赤目の処理をして、幾つかを煮物にしてもらう。

1357096630

ついでにustもしてみた。リキッドとAdele多めで

Rolling In The Deep (NuTone Remix) / Adele
Long Distance / Fred V & Grafix
Some Disco / LSB
Long Distance / DJ Marky & Makoto
Keep Me Down (Ft. Angela Johnson) / Makoto
The Stand / High Contrast
Hometown Glory (High Contrast Remix) / Adele
The Plan That Cannot Fail / London Elektricity
Through The Night (Club Mix) / Drumsound & Bassline Smith
All Yours (S.P.Y Remix) / Submotion Orchestra
Habitation / The Prototypes
New Drums / Teddy Killerz
Requiem / Uman & No Money
The First Note Is Silent (feat. Tiesto & Underworld) / High Contrast