List a
は、リストに依って要素数が異なる Integer -> a
とは一対一対応できない List a
の場合 Void -> a
() -> a
Bool -> a
hsf0_0 :: Bool -> Int -- [0,0]と対応
f0_0 True = 0
f0_0 False = 0
f0_1 True = 0 -- [0,1]と対応
f0_1 False = 1
f99_100 True = 99 -- [99,100]と対応
f99_100 False = 100
Void
, ()
, Bool
, ...)を統一的に表すような型 Rep f :: *
が必要になるが、そんなものはない List a
b -> a
index
を定義しようとするとどうなるか