2012-01-01から1ヶ月間の記事一覧

Scrap Your Boilerplate ことはじめ2

昨日のやつのモナド版を作ってみます。 recMapM :: forall a b m. (Data a, Data b, Monad m) => (b -> m b) -> a -> m a recMapM f x = do let recurse = gmapM (recMapM f) x case cast x of Nothing -> recurse Just bx -> do z <- f bx case cast z of N…

Scrap Your Boilerplate ことはじめ

折角ですから、Haskellで新年の挨拶をしてみましょう。以下のコードをMain.hsといったファイル名で保存し、ghciから読み込んでみてください。 {-# LANGUAGE DeriveDataTypeable, RankNTypes#-} {-# OPTIONS -Wall #-} import Data.Data import Data.Maybe(ma…