第7章 型や型クラスを自分で作ろう(後編)「すごいHaskell」 pp. 151-157
前回のおさらいデータ型                         型コンストラクタdata Shape                   data Maybe adata Car                     data Eit...
Functor 型クラスclass Functor f where   fmap :: (a -> b) -> f a -> f b意味: Functor のインスタンスは fmap に引数として渡せるcf. map :: (a -> b) -...
リストは Functorinstance Functor [] where   fmap = mapリストに対する fmap と map の結果は一致する
Maybe も Functorinstance Functor Maybe where   fmap f (Just x) = Just (f x)   fmap f Nothing = Nothing
Either は Functor?instance Functor (Either a) where   fmap f (Right x) = Right (f x)   fmap f (Left x) = Left xEither は Fun...
Functor とは何か● Functor になれるのは箱のようなもの● 箱の中身を取り出して、関数を適用して、また箱  に戻す      a   fmap   b      f          f
種類 kind● 値を分類するラベル = 型● 型を分類するラベル = 種類種類 (:k)                  型 (:t)Bool :: *                True :: BoolMaybe :: * -> * ...
Upcoming SlideShare
Loading in …5
×

すごいHaskell 第7章 型や型クラスを自分で作ろう(後編)

1,145 views

Published on

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,145
On SlideShare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
9
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

すごいHaskell 第7章 型や型クラスを自分で作ろう(後編)

  1. 1. 第7章 型や型クラスを自分で作ろう(後編)「すごいHaskell」 pp. 151-157
  2. 2. 前回のおさらいデータ型 型コンストラクタdata Shape data Maybe adata Car data Either a bインスタンス 型クラスinstance Show TrafficLight class Show ainstance Eq (Maybe m) class (Eq a) => Num a 型シノニム type String type AssocList k v
  3. 3. Functor 型クラスclass Functor f where fmap :: (a -> b) -> f a -> f b意味: Functor のインスタンスは fmap に引数として渡せるcf. map :: (a -> b) -> [a] -> [b]※ [a] は [] a と等価
  4. 4. リストは Functorinstance Functor [] where fmap = mapリストに対する fmap と map の結果は一致する
  5. 5. Maybe も Functorinstance Functor Maybe where fmap f (Just x) = Just (f x) fmap f Nothing = Nothing
  6. 6. Either は Functor?instance Functor (Either a) where fmap f (Right x) = Right (f x) fmap f (Left x) = Left xEither は Functor になれないが、引数を部分適用した Either a は Functor になれる
  7. 7. Functor とは何か● Functor になれるのは箱のようなもの● 箱の中身を取り出して、関数を適用して、また箱 に戻す a fmap b f f
  8. 8. 種類 kind● 値を分類するラベル = 型● 型を分類するラベル = 種類種類 (:k) 型 (:t)Bool :: * True :: BoolMaybe :: * -> * Just 3 :: Num a => Maybe aMaybe Int:: *Either :: * -> * -> * Left "ok" :: Either [Char] bEither String Int :: *[] :: * -> * [] :: [a]

×