やっぱり面倒だ。 こないだ日記に書いた cvs/svn/svk 自動切り替えコマンドを書いてみた。 cvsc とか cvsdiffl みたいな独自コマンドも呼べることと、 svk ワーキングコピーの検出に適当感が蔓延しているのが特徴。
#!/bin/sh
# $Id: vs.sh,v 1.3 2006/01/01 17:52:06 aamine Exp $
guess_vs() {
if [ -d CVS ]
then
echo "cvs"
elif [ -d .svn ]
then
echo "svn"
elif grep -q "`pwd`:" $HOME/.svk/config
then
echo "svk"
else
echo "not under control of CVS/SVN/SVK" 1>&2
exit 1
fi
}
cmd_suffix() {
basename $1 | sed 's/^vs//'
}
`guess_vs``cmd_suffix $0` ${@+"$@"}
なんとなく不安ではあるが、いちおう使ってみよう。
……うーん、どうしても cvs と打ってしまうな。
(03:00)
ネットワークを切断してブラウザもメーラも IRC も落とした、 ゆぞさん言うところの「殺伐とした環境」だと作業効率がとてもいいことがわかった。 インターネットに発する煩悩の数は 108 どころではないのだ。
さ、もう一回ネットワーク切ろっと。
(09:51)
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)
http://www.vector.co.jp/magazine/softnews/060107/n0601076.html
プログラム名がナイスすぎる。
(13:36)
37 度後半まで下がり、歩けるようになったので復活してみる。 まさか 40 度スレスレが三日続くとは思わなかった。 あああ、週末がつぶれたおかげでスケジュールがさらにシビアに……
(11:22)
JARP より http://www.in-ulm.de/~mascheck/various/shebang/
「#!」とパスの間の空白は実は必要ではなかったらしい。 なんかあれ好きじゃなかったし、setup.rb でも空白を入れないようにするか。
(18:59)
http://www-ise2.ise.eng.osaka-u.ac.jp/~iwanaga/study/csharp/ap_ver3.html
モブデータが絶望先生かよ!
(21:18)
■ KM [つ http://jp.rubyist.net/?Logotype]