Swift 4 から導入される Protocol Oriented Integers の概要を整理してみた資料です。ここで紹介したもの以外にも詳細な機能があったりするので、それは不足するものの、プロトコル指向整数で何ができるのかを感じ取ってもらえる資料になってるかなって思います。2017/06/03 のカジュアル Swift 勉強会で発表しました。
Swift 4 から導入される Protocol Oriented Integers の概要を整理してみた資料です。ここで紹介したもの以外にも詳細な機能があったりするので、それは不足するものの、プロトコル指向整数で何ができるのかを感じ取ってもらえる資料になってるかなって思います。2017/06/03 のカジュアル Swift 勉強会で発表しました。
2. 前回のおさらい
データ型 型コンストラクタ
data Shape data Maybe a
data Car data Either a b
インスタンス 型クラス
instance Show TrafficLight class Show a
instance Eq (Maybe m) class (Eq a) => Num a
型シノニム
type String
type AssocList k v
3. Functor 型クラス
class Functor f where
fmap :: (a -> b) -> f a -> f b
意味: Functor のインスタンスは fmap に引数とし
て渡せる
cf. map :: (a -> b) -> [a] -> [b]
※ [a] は [] a と等価
5. Maybe も Functor
instance Functor Maybe where
fmap f (Just x) = Just (f x)
fmap f Nothing = Nothing
6. Either は Functor?
instance Functor (Either a) where
fmap f (Right x) = Right (f x)
fmap f (Left x) = Left x
Either は Functor になれないが、引数を部分適用
した Either a は Functor になれる