幽霊型
幽霊型。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