> What's wrong with a separate interface for each variant? In ML, you > have a separate type for each variant, and interfaces have a lot in > common with types. I'm confused by this comment. In ML or Haskell, I write something like data Foo = Bar Int | Baz String | Quux Char Each of these expressions Bar 42 Baz "42" Quux 'Q' has type Foo. -- Paul