Hatena::ブログ(Diary)

しんちゃんの日記

2012-11-12

Haskellで実行時間計測用のコマンドを作る

import Data.Time
import System.Process
import System.Environment
import System.IO

main = getCurrentTime >>=
\start -> getArgs >>=
\(c:cs) -> runInteractiveProcess c cs Nothing Nothing >>=
\(_,out,err,_) -> hGetContents out >>= putStrLn >>
hGetContents err >>= putStrLn >>
getCurrentTime >>= \end -> print $ diffUTCTime end start


何週間か前に、2chに投下したコード。
(自分は、diffUTCTime関数から名前をとって、difftimeコマンドと付けてます)
コマンドラインなら、ある程度関数型っぽい書き方が出来ますね。
と、言っても少しカリー化出来る程度だけど…。
(実は、runProcess関数を最初使ってて、思うように動かなくて嵌っていたのは内緒)

次回からは、このコマンドを使ってHaskellと他の言語で同じ動作のコマンドを作って、動作速度を比べてみようと思います。
・・・が、Haskell以外の言語は長らく使ってないか、勉強しながら書くため、Haskellも含め、もっとこう書いた方が良いよ!と言う意見もバンバン受け付けます。
Haskellもそんなに書ける訳でも無いですが…)

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/nshinchan01/20121112/1352726794