history

青木日記 RSS

<前の日 | この月 | 次の日>

2006-01-08

殺伐と原稿書き

ネットワークを切断してブラウザもメーラも IRC も落とした、 ゆぞさん言うところの「殺伐とした環境」だと作業効率がとてもいいことがわかった。 インターネットに発する煩悩の数は 108 どころではないのだ。

さ、もう一回ネットワーク切ろっと。

(09:51)

ふつうの H

where を使えば部分適用なしでも fgrep が書けることに気付いたんだけど、 where で変数共有するのと部分適用じゃ どちらが理解しにくいかは微妙なところですな。 なんとなく、Java な人なら where のが簡単そうな気がするんだけど。

-- where を使う
import System
import List
 
main = do args <- getArgs
          cs <- getContents
          putStr $ fgrep (head args) cs
 
fgrep pattern cs = unlines $ filter match $ lines cs
  where
    match line = any prefixp $ tails line
 
    prefixp str = pattern `isPrefixOf` str
 
-- 部分適用を使う
import System
import List
 
main = do args <- getArgs
          cs <- getContents
          putStr $ fgrep (head args) cs
 
fgrep pattern cs = unlines $ filter (match pattern) $ lines cs
 
match pattern line = any (pattern `isPrefixOf`) $ tails line

うーん、部分適用があると関数合成も使いたくなってしまうな……。

ちなみに最終的にはこうなる。

-- 最終版
import System
import List
 
main :: IO ()
main = do args <- getArgs
          case args of
            [pattern] -> putStr . fgrep pattern =<< getContents
            _         -> error "wrong argument"
 
fgrep :: String -> String -> String
fgrep pattern = unlines . filter (match pattern) . lines
 
match :: String -> String -> Bool
match pattern = any (pattern `isPrefixOf`) . tails

(10:21)

俺がPC見ててやるからお前は安心して先へ行け

http://www.vector.co.jp/magazine/softnews/060107/n0601076.html

プログラム名がナイスすぎる。

(13:36)

名前
メールアドレス

<前の日 | この月 | 次の日>
2002|04|05|06|07|08|09|10|11|12|
2003|01|02|03|04|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|04|05|06|09|10|
2009|07|
2010|09|

Copyright (c) 2002-2007 青木峰郎 / Minero Aoki. All rights reserved. LIRS