■ dataとnewtypeのちがいのわかりやすい例 19:16 Haskell には、新しい型をつくる宣言が2つあり、 data 宣言と newtype 宣言というのがある(type宣言は型の別名をつけるものであり、新しい型はできない)。 data 宣言を知っていると、 newtype 宣言は 内部の型は1つだけ 型構成子は1つだけ という制約を持ったdata宣言と解釈できる。たとえば、 newtype T a b = T a b とはできない。一方、 newtype T a b = T { unT :: a } という書き方はできる。宣言の左辺には2つの型があるが、bは右辺には登場しないから問題ない。ちなみに、このように実体として登場しない型は無意味に思えるかもしれないがそれは誤りである。bの型の一致不一致は型全体の一致不一致に対応するから、うまい構成にすると、bを使って「適用してはい