Wow, I didn't realize that record field names have to be unique in Haskell. The following:
data Human = Human {name :: String}
data Dog = Dog {name :: String}
is illegal, because they can't both have a field accessor called `name`.That's... crazy.