指定されたデータ型
data Foo = Foo { one :: Int, two :: String } deriving (Show)
不完全な式は型チェックをパスします -- 例えば
foo :: Foo
foo = Foo { one = 5 }
main = print foo
型チェック (不完全なレコードに関する警告を発する) の後、(明らかに) 式に遭遇するとクラッシュします。なぜそれが通過するのですか?レコード構文がなければ、そうではありません (つまりbar = Foo 5 :: Foo
)。