Hi again, The report says "The expression F {}, where F is a data constructor, is legal whether or not F was declared with record syntax, provided F has no strict fields: it denotes F _|_1 ... _|_n where n is the arity of F."
It unclear to me why there needs to be this provision for records with strict fields -- just let them be undefined -- but that notwithstanding, GHC seems to do the wrong thing: > module Foo where > data F = F !Int deriving (Show, Eq) > data G = G Int deriving (Show, Eq) If we then load it up in ghci, both "F {}" and "G {}" ellicit the same error: "Missing field in record construction". If we do: Foo> case (F {}) of { F x -> "1" } we get the exeption. If we use G instead of F, we correctly get "1". Hugs seems to obey the report. For "F {}" it give: "INTERNAL_ERROR: depConFlds" which is different from "G {}" which yields "G" followed by "Program error: {undefined}". For the case expressions, Hugs generates "INTERNAL ERROR: depConFlds" for F and "1" for G. Arguably, this is weirdness in the report, but I think it's clear that GHC isn't doing the right thing (where right thing is defined to be what the report says). - Hal -- Hal Daume III "Computer science is no more about computers | [EMAIL PROTECTED] than astronomy is about telescopes." -Dijkstra | www.isi.edu/~hdaume _______________________________________________ Haskell mailing list [EMAIL PROTECTED] http://www.haskell.org/mailman/listinfo/haskell