iteratee I/O勉強会

勉強会後に加筆修正予定。流れはこんな感じでできるところまで。 概要 iterateeの神秘について語り合う会。 Tweetvite :: iteratee I/O勉強会 参加者10名の予定 集合は15:00 IIJロビーのピアノ前 16:30に休憩を入れて、途中参加者の合流も予定 次回のHIMA'は…

Orphan instances

Haskellのorphan instanceが何者なのか、その意味するところをちゃんと理解してなかったので調べてみた。 orphan instancesとは何? 型クラスの定義ともデータ型の定義とも異なるモジュールで定義されたインスタンス宣言のこと 例: T.hsで定義されたデータ型…

多相的な二分木

Scala勉強中ということで、多相的な二分木を書いてみた。memberとかdeleteは書いてない。2.8からはTraversableなど新しいtraitがあるようなので、それを使うようにするとよりよくなると思う。 Treeを共変にするためには、insertを多相的にして下限境界を指定…

RRD4Jのテキストアンチエイリアス

RRD4Jは出力されるテキストにアンチエイリアスが掛からないので、公式SubversionリポジトリのHEADを勝手にgithubにimportして、小さな変更を入れて公開していたら、作者から取り込ませてくれとメールが来た。快諾したところ取り込まれたみたい。 https://rrd…

PRML復習レーンに参加した

途中までしか予習できずに参加してみたものの、予想通りついて行けなかった。わからないから教えて欲しいけど、何がわからないのかすらよくわからないくらいのレベル。PRMLより先に基礎体力づくりが必要だと認識した。確率統計と線形代数かなあ。正直イミフ…

Functional Programming Meeting 2010

土曜日にOleg Kiselyovさんと單中杰(Chung-chieh Shan)さんを囲む会に参加した。会自体は午前中からやっていたけど、所用で昼からの参加となった。午後の内容はTyped tagless-final interpretations: Lecture notesだった。要約すると簡単な型付きλ計算の…

HaskellのPortage overlay

maoe/portage-overlay · GitHubに公開した。ひとまず Emacsで補完・Flycheckするためのscion FRPライブラリのReactive 並列プログラム用プロファイラThreadScope あたりをアップロードした。あとで使い方を書くかも。GentooのHaskell overlayの中の人に連絡…

Happy Haskelling

金曜日にSimon Peyton Jones氏来日に合わせて催されたHaskellers Meeting 2010 Springに行ってきた。2次会的なものでSPJに、「Haskellプロジェクトやライブラリの中で一番好きな、クールだと思うものは何か」と訪ねたところ、言うまでもなくGHCと言われてし…

ClojureでmapAccumL

こっちはスタックオーバフローする。lazy-seq意味なし。 user> (defn map-accum-l [f s ls] (if (empty? ls) [s []] (let [[ss y] (f s (first ls)) [sss ys] (map-accum-l f ss (rest ls))] [sss (lazy-seq (cons y ys))]))) #'user/map-accum-l user> (map…

Clojureでscanl

lazy-seqはこういうときに使えるのか。 user> (defn scanl [f q ls] (lazy-seq (cons q (if (empty? ls) '() (scanl f (f q (first ls)) (rest ls)))))) #'user/scanl user> (scanl + 0 (range 0 9)) (0 0 1 3 6 10 15 21 28 36) user> (take 10 (scanl + 0 …

Clojureのキーワード引数ライブラリ: funky-0.0.1

Clojureでキーワード+オプショナル引数に対応するマクロを拡張して、ClojureのリポジトリClojarsに登録しました。ライブラリの名前はfunkyです。 Clojarsはfunky 0.0.6 - Clojars ソースコードはmaoe/funky · GitHub APIリファレンスはfunky - Overview 拡張…

キーワード + オプショナル引数

Clojureは組み込みではキーワード引数がサポートされてませんが、分配束縛(destructuring)を使うことで同様のことができるようになります。例はにあります。リンク先にも書いてあるとおり、このパターンをマクロにしたものが、clojure.contrib.defに入って…

やさしいFunctional reactive programming(Behavior編)

注意: このエントリは書きかけです。前回はHaskellのFRPライブラリのreactiveについて取り上げ、Eventの使い方を紹介しました。今回はFRPにおいてEventと並んで重要なBehaviorを見ていきます。 Behaviorとは Behaviorについては前回触れましたが、再度おさら…

やさしいFunctional reactive programming(Event編)

前回はFRPのBehaviorとEventという重要な概念と、Haskellでの代表的なライブラリを簡単に紹介しました。今回は紹介したものの中からreactiveというライブラリを取り上げます。なお、reactiveを理解するにあたってLess Sugar/More Meat » Blog Archive » Intr…

やさしいFunctional reactive programming(概要編)

あと、やはりネットワーク周りなどI/Oの多いプログラムの書きにくさが課題になっている印象。関数的なI/OはFRPで解決できそうな気がするんだけど調べてない。そろそろFRPをちゃんと理解したいなー。 Parsec 3活用事例: Keepalived構文チェッカ - maoeのブロ…

Haskell忘年会

火曜日にHaskell 2009年末の集いに参加してきました。前哨戦で参加者全員が発表するということで、新しいGHCで改善された並列プログラム用ランタイムシステムの性能改善の話を少しだけしました。スライドはこちら。GHC 6.12.1 マルチコア対応ランタイムシス…

ghc-6.12.1

リリースされたらしい。Unicode I/Oとか並列プログラムの速度改善とかThreadScopeとかに期待。 こんにちは世界 とってもいい感じ。 maoe@maoe tmp $ cat Hello.hs main = putStrLn "こんにちは世界" maoe@maoe tmp $ runhaskell Hello.hs こんにちは世界

今日のトレタマ

冷やしたアルミニウムで油を取り除くやつ、ほしい! 油分カッター ファットフリーザー DOFE01出版社/メーカー: 大作商事メディア: ホーム&キッチン クリック: 7回この商品を含むブログ (4件) を見る固まった油を削ると、スタジオから「おー」と歓声が上がっ…

keepalived.conf構文チェッカの名前がkcに変わりました

スタティックリンクな実行ファイルにしたかったとか、APIを綺麗にする準備とか諸々の理由があるのですが、keepalived.confチェッカのhaskell-keepalivedは、kcへと改名することになりました。この変更でgithubのリポジトリ名も変更になっています。旧haskell…

Parsec 3活用事例: Keepalived構文チェッカ

お台場のTOKYO CULTURE CULTUREで開かれたHaskellナイトというイベントで、ライトニングトーク「Haskellゴング」に出てでしゃべってきた。Parsec 3活用事例: Keepalived構文チェッカ (Haskell Gong 2009)View more documents from ma0e.ソースコードはgithub…

遅延I/Oとメモリリークのつづき

id:maoe:20091108:1257701870の件をhaskell-ja(chaton)で相談してみたところ、nwnさんとnobsunさんに教えていただきました。ありがとうございました。せっかくなので、こちらにもまとめを書いておきます。 先のエントリで意図していた例 元々意図していた…

Enumerable#each_chunk

Enumerableなオブジェクトを条件に従ってチャンクに切り分ける。メモ。 module Enumerable def each_chunk(chunker) chunk = [] self.each {|item| if chunker.call(item) yield chunk.push(item) chunk = [] else chunk.push(item) end } yield chunk end e…

遅延I/Oとメモリリーク

先週の土曜日にReal World Haskell読書会に行ってきた。とても有意義な読書会だったのだけど、遅延I/Oとメモリリークに関して腑に落ちない点があったので書いてみる。 遅延I/Oの例 Real World Haskell 7.4.1節の注意マークのところ、邦訳版から引用すると、 …

Rubyのスレッドプールとenumerator

Rubyスクリプトでスレッドプールを使いたかったので調べてみた。 スレッドプールの実装 Rubyクックブックに載っているmutexを使ったコードより、d:id:gioext:20081218:1229617888にあるblocking queueの方がスマートに見えたので、これをベースにshutdownを…

[Haskell] 普通のtype classesとmulti-parameter type classesとfunctional dependenciesとtype families

multi-parameter type classes周辺の理解があやふやなままだったので、Type classes: exploring the design spaceとType Classes with Functional Dependencies* (PDF)とType Cheking with Open Type Functions (PDF)あたりをわかる範囲で読んでみた。1つめ…

haskell-keepalivedのRPM

keepalived.confのチェッカーであるところのhaskell-keepalivedのCentOS 5(x86_64)用のRPMをアップロードした。中身は/usr/bin/kcというバイナリが一つあるだけ。パッケージ名とプロジェクト名とコマンド名が全部違ったり、x86_64用しかないのはversion 0.…

Re: keepalived.confのシンタックスチェックツール「keepalived-check」「haskell-keepalived 」が凄い!

こんなのが出てビルドできませんでした。。。>< http://d.hatena.ne.jp/hirose31/20090929/1254154720 絶賛放置中ですみません。ビルドは大変なのでx86用のバイナリをgzipしたものを置いておきます。kc.gz ./kc verify /path/to/keepalived.conf # シンタ…

amd64なGentooでATOK X3が文字化け

CFLAGS="$CFLAGS -m32" LDFLAGS="$LDFLAGS -m32" ABI=x86 emerge B1 =sys-apps/tcp-wrappers-7.6-r8 -m32をつけないとビルドでこける tar xpvf /usr/portage/packages/sys-apps/tcp-wrappers-7.6-r8.tbz2 -C / ./lib32 ./usr/lib32 CD_ROOT=/path/to/ATOK em…

セカイカメラがすごい

iPhoneアプリのセカイカメラをインストールしてみた。セカイカメラはiPhoneのGPS情報とカメラを通して見られる現実の風景を組み合わせて、空間にメッセージを残せるサービス。メモは文字だけじゃなくて、写真や音声も使えそう。ちょこっと自宅で試しただけな…

再帰のパターン

Fun of Programming (Cornerstones of Computing)の3章「Origami programming」の冒頭にはこんな事が書かれている。 One style of functional programming is based purely on recursive equations. Such equations are easy to explain, and adequate for a…

同じ文字をまとめる

(pack '(a a a a b c c a a d e e e e)) ((A A A A) (B) (C C) (A A) (D) (E E E E))と結果が返ってくるような関数pack 同じ文字をまとめる - さかもっちゃんちゃんこ Haskellで書いてSchemeに書き直してみた。 (use util.match) (define (pack ls) (define …

random walk

より、 偏りのないコインを投げつづけよう。ここで、「偏りのない」とは、「表」と「裏」が等しく0.5の確率で出る事を意味している。投げるごとに、表がでたか裏が出たかを記録する。それぞれの回数はどのように増えていくのだろうか?たとえば、ある時点で…

2次元random walk

前のエントリを2次元に拡張したもの。1次元版ではコインの表裏を+1/-1に対応させていたが、今回は方角、つまり東西南北を縦軸と横軸に対応させる。実験では平面上に100万ステップ分をプロットしている。するとこんな図や、 こんな図になる。おもしろい。 以…

七夕の夜にStellariumで織姫と彦星を堪能する

今日は七夕。東京はあいにくの曇り。でも雲の切れ間からは綺麗な満月が見えてます。曇りでも織姫と彦星を見たい。そんなあなたにStellarium(日本語のWikiページ)。StellariumはOSSのプラネタリウムソフト。あなたのPC上で年に一度の素敵な出会いを見届けら…

ネストしたincludeに対応するlexer

Cの#includeとか設定ファイルのincludeディレクティブ的なincludeに対応するlexerメモ。「*」指定などのglob対応。Parsec 3で。 tIncluded :: Stream String IO Char => ParsecT String u IO TokenType tIncluded = lexeme $ do try $ symbol "include" glob …

quoteされた文字列用lexer

quoteされた文字列(文字列リテラル)用のlexerメモ。Parsec 3で。 tQuoted :: Stream s m Char => ParsecT s u m TokenType tQuoted = lexeme $ Quoted <$> between (char '"') (char '"') (many quotedChar) where quotedChar = try escapedQ <|> C.satisf…

豚肉ケーキ

豚肉とキャベツが残っていたので、ググって見つけたキャベツと豚肉の重ね蒸しを作った。途中、小麦粉と間違えてホットケーキの粉を入れるという、かわいらしいミスを犯したが、おいしかった。ちなみに、肉は膨らまなかった。何故だろう

inet_addrはネットワークバイトオーダーではない

manpageには The inet_addr() function converts the Internet host address cp from IPv4 numbers-and-dots notation into binary data in network byte order. と書いてあるのに、下記プログラムの出力はリトルエンディアンになっているのは何故だろう。 #…

keep going

PC

こけても継続。 sudo emerge -avuD --keep-going world

StateT

import Control.Monad.State tick :: State Int Int tick = modify (+1) >> get tickT :: StateT Int IO Int tickT = modify (+1) >> get >>= liftIO . print >> get main :: IO () main = do print $ runState (tick >> tick >> tick) 0 runStateT (tickT >…

自前の例外を扱う

所謂extensible exceptionsというやつ。すぐに忘れそうなのでメモ。 {-# LANGUAGE DeriveDataTypeable, ScopedTypeVariables #-} import Control.Exception import Data.Typeable import Prelude hiding (catch) data MyException = MyException deriving (S…

最近の出来事

協議の結果、アナキン・スカイウォーカーはダイゴとマツジュンを足して2で割ってちょっとずらしたもの、となった。

だーめだー

咽頭炎で発熱。つらーい。なおーれ。

性別

つい数年前まで、いくらちゃんは女の子だと思いこんでいた。人に指摘されてもしかしたら本当は男の子なのかと思い始め、最近のCMを見て微かな希望は完全に絶たれた。いくらちゃんは女の子の方がよいと思う。

風邪

この前の体調不良は風邪じゃなくてウイルス性胃腸炎だった。 今日の体調不良はたぶん風邪。 メモ。

午後になってから急に寒気を感じ始めたと思ったら、熱が出ていた。仕方ないのでバファリン飲んでひたすら寝る。寝付けなくなってきたので日記を検索してみると、たいてい秋か冬あたりに熱を出していることがわかって笑った。あーしんどい。今回は熱が出てい…

連休

夏休み

夕日

レモン取った

ちょっと遅くなったけどレモンを取り出した。来月キウイを取り出して完成。クンクンしてみたら刺激臭がした。飲めんのか?取り出したレモンの処置に困りそうなので、ここに書いてから取り出そうと思っていたけどもう手遅れ。 参考までにbefore画像