a plausable workaround in haskell 98 is to use a typeclass like so class EdgyNodelike a where node :: a -> Int edge0 :: a -> a edge1 :: a -> a
instance EdgyNodelike BFSM where node = bfsmnode edge0 = bfsmedge0 edge1 = bfsmedge1 instance EdgyNodelike BMC where node = bmcnode edge0 = bmcedge0 edge1 = bmcedge1 that will let you write code which works on anything with edges or nodes. John On Tue, Jan 07, 2003 at 10:01:38PM -0600, Kim-Ee Yeoh wrote: > Dear Haskellers, > > Why can't field labels have the same name in different types? > > Here's some actual code on finite state automata I'm working on: > > > data BMC > > = BMC { node :: !Int, > > threshold :: !Float, > > edge0 :: BMC, > > edge1 :: BMC } > > > data BFSM > > = BFSM { bfsmnode :: !Int, > > bfsmstate :: Maybe Bool, > > bfsmoutput :: [Bool], > > bfsmedge0 :: BFSM, > > bfsmedge1 :: BFSM } > > What I really want is to use the same field labels of node, edge0, and > edge1 in the BFSM type, but I can't because otherwise I get the following > in hugs: > > ERROR xxx - Repeated definition for selector "edge0" > > I'm not an expert on programming languages, but doesn't it seem > that Haskell, as a strongly-typed language, should not have any problem > distinguishing the field labels of different datatypes? > > > Kim-Ee > > > _______________________________________________ > Haskell mailing list > [EMAIL PROTECTED] > http://www.haskell.org/mailman/listinfo/haskell > -- --------------------------------------------------------------------------- John Meacham - California Institute of Technology, Alum. - [EMAIL PROTECTED] --------------------------------------------------------------------------- _______________________________________________ Haskell mailing list [EMAIL PROTECTED] http://www.haskell.org/mailman/listinfo/haskell