2004年03月13日
_ dataとtypeとnewtype
今日はへんさんにhaskellのdataとtypeとnewtypeの違いについて教えてもらいました。
data D = D Int type MyInt = Int newtype N = N Int bot :: Int bot = bot zeroD :: D -> Int zeroD (D i) = 0 zeroMyInt :: MyInt -> Int zeroMyInt i = 0 zeroN :: N -> Int zeroN (N i) = 0 botD :: D botD = botD botMyInt :: MyInt botMyInt = botMyInt botN :: N botN = botN zeroD (D bot) -- (1) zeroMyInt bot -- (2) zeroN (N bot) -- (3) zeroD botD -- (4) zeroMyInt botMyInt -- (5) zeroN botN -- (6)
で、(1)-(3),(5),(6)は止まり、(4)だけ止まりません。