あどけない話

Internet technologies

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

フィボナッチ数列のまとめ

フィボナッチ数列は、自然界に現れる単純にして基本的な数列である。たとえば、ヒマワリの種の並びやミツバチの家系図はフィボナッチ数列を成す。 再帰 フィボナッチ数列の漸化式をそのまま Haskell で実装すると以下のようになる。 fib :: Int -> Integer f…

apの実装を読み解く

Applicativeスタイルの一般的な形は、以下のようになる。 f <$> m1 <*> m2 <*> m3 ... は liftM (あるいは fmap)の別名、ap は の別名だと思ってよい。ap の実装を見てみると、以下のように定義してある。 ap :: (Monad m) => m (a -> b) -> m a -> m b ap =…

禁断の不動点コンビネータ

フィボナッチ数列を汎関数で書く。 fib :: (Integer -> Integer) -> Integer -> Integer fib _ 0 = 0 fib _ 1 = 1 fib f n = f (n-1) + f (n-2) そして、不動点コンビネータを遅延評価を活かして以下のように定義する。(Control.Monad.Fix を import しても …

Applicativeのススメ

この記事の目的は、Applicative 信者による Applicative スタイルの布教です。簡潔に結論を述べると、 foo = do a <- m1 b <- m2 return (f a b) のようなコードを書きたくなったら foo = f <$> m1 <*> m2 と書きましょうということ。合い言葉は、「do と re…