[過去ログ] 関数型プログラミング言語Haskell Part16 (978レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
787: 2011/12/22(木)21:36 AAS
QuickCheck を調べてて、ステキなリファクタリング テクニックに出会った
外部リンク:www.haskell.org
リファクタリング前は(インデントに全角スペースを入れた)、
getList = find 5 where
find 0 = return []
find n = do
ch <- getChar
if ch `elem` ['a'..'e'] then do
tl <- find (n-1)
return (ch : tl) else
find n
というコードなんだが、副作用がある処理と無い式とが混ざっててテストし難い
(また、全体の処理もぱっと見分かりにくい)
これがリファクタリングで次のようになる
getList :: IO [Char]
getList = fmap take5 getContents
take5 :: [Char] -> [Char]
take5 = take 5 . filter (`elem` ['a'..'e'])
ちょっと感動した
こういうことがサラっとできるようになりたいもんだ
上下前次1-新書関写板覧索設栞歴
あと 191 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ
ぬこの手 ぬこTOP 0.010s