Workshop/MiracleHaskell/021

日時

2012/11/16

内容

次回は Applicative functors から再開します。

みんなの宿題

Recursive data structures ではList aという型でリスト型を作りました。

infixr 5 :-:  
data List a = Empty | a :-: (List a) deriving (Show, Read, Eq, Ord)  

Functorを継承することで、このList a型にfmapを使えるようにしてみてください。 実行例は以下になります。

ghci> fmap (+1) (3 :-: 4 :-: 5 :-: Empty)
4 :-: (5 :-: (6 :-: Empty))

ヒント

通常のリストは以下のようにfmapの実装はmap関数そのままです。 List a型にmap関数を作れば、それをfmapとして使えそうですね!

instance Functor [] where
    fmap = map

岡部の宿題

020 回では電卓にメモリ機能を追加しました。 しかし、メモリ機能とスタックが一つのfoldlの中でまざってしまっていました。 この2つの機能を分離して部品化する方法がないか調べてください。