Haskellのコードでしばしば見かける幽霊型について。 Phantom type(幽霊型)の特徴 左辺で定義した型変数が右辺に全く現れない型 具体的な値に興味はなく、型の情報さえあれば十分な時などに使われる 型の情報だけでやりたいことを実現するため、型レベルプログラミングの一種と捉えられる Pantaom type(幽霊型)の例 例として、次のようなものを考えます。 時刻の「分」と「時間」を区別できる型を作りたい ただし、「分」・「時間」を表す値の型は同一の型としたい 時刻に関する計算の処理も同一のものとしたい 時刻を保持する型を定義 まず、時刻を保持する型を定義します。 -- 型変数unitは右辺に現れないので幽霊型と呼ぶ newtype Time unit = Time Int deriving (Num, Show) ここで注目すべきは、型変数の'unit'が右辺で使用されていない