幽霊型

幽霊型。Money aなのに宣言部ではaを無視。id:syd_sydさんに教わる。詳しくはOCaml本見てねっ(笑)。

{-# OPTIONS -fglasgow-exts #-}
data Money a = Money Float deriving Show
data Naked
data Taxed

impose :: Money Naked -> Money Taxed
impose (Money x) = Money $ x * 1.05

plus :: Money a -> Money a -> Money a
plus (Money m1) (Money m2) = Money $ m1 + m2