2009-06-01から1ヶ月間の記事一覧
extags を ctags に alias するといった、元々存在するコマンドに alias するということは、頻繁とはいかなくともぼちぼちある。vim と vi とか。こんなとき .bashrc をいくつかのマシンで共有していると、 "ctags がある状態で ctags を extags の alias に…
hGetContents に渡したハンドラを hClose すると、hGetContents の結果が空文字列になる。 import IO (openFile, IOMode(ReadMode), hGetContents, hClose, bracket) f1 = do h <- openFile "hoge.txt" ReadMode s <- hGetContents h return s f2 = bracket …
なんか書こうと思った (というか一回書いたんだけど) けど、よくまとまってる記事があった。2006-06-13 - syd_sydの日記 - haskell紹介されてるのは今でいう古い例外モジュールだけど、例外の型を明らかにしないといけないこと以外はあんまり変わってないん…
Java の Future みたいなものを Haskell で。 import Control.Concurrent (forkIO, newChan, writeChan, readChan) type Future a = IO a onBackground :: IO a -> IO (Future a) onBackground act = do ch <- newChan forkIO (act' ch) return (readChan ch…
Haskell のエラー処理と言うと、ErrorT だかなんだかで「たかがエラー処理で、なんでこんなにややこしいことを覚えねばならんのだ」と投げ出したくなるのだけど、IO エラーに限ればけっこう簡単。Either でラップして結果を受けとる try と、エラーハンドラ…
Haddock では non-ASCII な文字は全て ෝ 形式で出力するという仕様となっている。乱暴だとは思うが、とりあえずこうしておけばブラウザからはちゃんと見えるし、仕様については、まぁいいんでないかなと思う。しかし実際にやってみると、これすらも出…
Haskell 界のデファクトスタンダードなドキュメント生成ツール Haddock を使ってみる。とりあえず関数の説明とか、引数の説明とか、データ型の説明あたりの、当たり前のことができるようになれれば満足。Haddock User Guide を参照した。 module Main where …
UNIX Domain Socket に対して echo チックなことをやるアプリケーション。本家 echo と同様、引数をそのまま出力する。複数の引数がある場合には、これらを空白で区切る。 本家 echo と違うのは、ソケットファイルのパスを受け取らなければならないというこ…
Haskell で UNIX Domain Socket を使ってみる。クライアントによってソケットに書き込まれた情報を、そのまま標準出力に出力するというアプリケーションを作ってみる。とりあえずサーバ。 import IO (try, hPutStrLn, stdout, hFlush, stderr) import Contro…
main = putStrLn "hello"