generated at
Representableのinstance例: (->) r
関数型 (->) r のinstanceはかなり単純なものになる


Representableのinstance例: Stream aと同様の型を指定して具体的な型を見てみる
つまり (->) Integer に対してinstanceを定義し、 (->) Integer Int を見てみる
hs
index :: (Integer -> Int) -> Integer -> Int tabulate :: (Integer -> Int) -> (Integer -> Int) positions :: Integer -> Integer
型から見てもわかるように、それぞれ以下の関数に対応する
hs
index = ($) tabulate = id positions = id
intex は、
与えられた関数 (Integer -> Int) に対して、
Integer を与えたもの
つまり、関数適用
tabulate は、
与えられた関数をそのまま返す
つまり、恒等関数
positions は、
与えられた値をそのまま返す
つまり、恒等関数
これはrepresentable則なども満たす


hs
instance Representable ((->) r) where type Rep ((->) r) = r index = ($) positions = id tabulate = id
index id で定義する例も見かけたが、同じ意味である
id :: a -> a
($) :: (a -> b) -> a -> b


ghci
> index (*10) 2 20 > tabulate (*10) 2 20 > positions (*10) 2 20