2007-07-01から1日間の記事一覧

関数内のコマンドに引数をそのまま渡す

単に "$*" でよかった。以下の実験により理解。 function中で代入される引数の""を外さないようにしたかった。 $ echo "aaa bbb" ccc aaa bbb ccc $ function a() { echo $*; }; a "aaa bbb" ccc aaa bbb ccc $ function a() { echo "$*"; }; a "aaa bbb" cc…

haskellに惚れた一瞬

haskellによるFizzBuzz別解。zipWith3とcycleで気持ちよく組めました。 putStr$concat$zipWith3 (\x y z->(if x++y=="" then show z else x++y)++"\n") (cycle ["","","Fizz"] )(cycle ["","","","","Buzz"])[1..100] 嫌なんだけど mapM_の方が短くなるな。…

runghc -eを直したので以下でいける。 $ runghc -e 'import System;main=getArgs>>=mapM_ catFile;catFile a=do{c<-readFile a;mapM_ putStrLn $ zipWith (\x y->(reverse$take 4$reverse(" "++(show x)))++" "++y) [1..] (lines c)}' a.txt 1 aaa 2 bbb 3 …

後ろから取ってくるtake

やっぱreverse$take$reverseの方が短いしわかりやすい。 しかし、なんてださいんだ>if ガードかパターンマッチで書くべきなんだろうが一行でかけない。 Prelude> let takelst n s=if n==0 then [] else (if n==1 then [] else takelst(n-1)$init s)++[last …