Данило Глинський wrote: > What is natural Haskell representation of such enum? > > enum TypeMask > { > UNIT, > GAMEOBJECT, > > CREATURE_OR_GAMEOBJECT = UNIT | GAMEOBJECT > };
data ObjectType = Unit | GameObject creatureOrGameObject :: ObjectType -> Bool creatureOrGameObject Unit = True creatureOrGameObject GameObject = True creatureOrGameObject _ = False > More sophisticated question is: and what data structures must be used when > converting this naturally one to Haskell? > > // 1-byte flaged enum > enum TypeMask > { > // ... > UNIT = 0x0004, > GAMEOBJECT = 0x0008, > // ... > > CREATURE_OR_GAMEOBJECT = UNIT | GAMEOBJECT > WORLDOBJECT = UNIT | PLAYER | GAMEOBJECT | DYNAMICOBJECT | CORPSE > // ... even more enum combos ... > }; Pretty much as above, add all the different single bit masks as constructors to ObjectType and define functions for the ones that are a combination of one ore more constructor. Erik -- ---------------------------------------------------------------------- Erik de Castro Lopo http://www.mega-nerd.com/ _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe