I may be curious to see how you intend to use such enum...<br>It is very C-wise, I'm not sure it will be very handy, but I need some context.<br><br><div class="gmail_quote">2012/1/22 Данило Глинський <span dir="ltr"><<a href="mailto:abcz2.uprola@gmail.com">abcz2.uprola@gmail.com</a>></span><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><font face="'courier new', monospace">What is natural Haskell representation of such enum?<br><br>enum TypeMask<br>
{<br> UNIT,<br> GAMEOBJECT,<br><br> CREATURE_OR_GAMEOBJECT = UNIT | GAMEOBJECT<br>};<br><br>More sophisticated question is: and what data structures must be used when converting this naturally one to Haskell?<br>
<br>// 1-byte flaged enum<br>enum TypeMask<br>{<br> // ...<br> UNIT = 0x0004,<br> GAMEOBJECT = 0x0008,<br> // ...<br><br> CREATURE_OR_GAMEOBJECT = UNIT | GAMEOBJECT</font><div><span style="padding-right:0px;padding-left:0px;padding-top:0px;margin-bottom:0px;padding-bottom:0px;margin-right:0px;line-height:16px;font-size:12px;margin-left:0px;white-space:pre-wrap;font-family:'Bitstream Vera Sans Mono','Courier New',monospace;margin-top:0px"> WORLDOBJECT</span><span style="line-height:16px;font-size:12px;white-space:pre-wrap;font-family:'Bitstream Vera Sans Mono','Courier New',monospace"> </span><span style="padding-right:0px;padding-left:0px;padding-top:0px;margin-bottom:0px;font-weight:bold;padding-bottom:0px;margin-right:0px;line-height:16px;font-size:12px;white-space:pre-wrap;margin-left:0px;font-family:'Bitstream Vera Sans Mono','Courier New',monospace;margin-top:0px">=</span><span style="line-height:16px;font-size:12px;white-space:pre-wrap;font-family:'Bitstream Vera Sans Mono','Courier New',monospace"> </span><span style="padding-right:0px;padding-left:0px;padding-top:0px;margin-bottom:0px;padding-bottom:0px;margin-right:0px;line-height:16px;font-size:12px;margin-left:0px;white-space:pre-wrap;font-family:'Bitstream Vera Sans Mono','Courier New',monospace;margin-top:0px">UNIT</span><span style="line-height:16px;font-size:12px;white-space:pre-wrap;font-family:'Bitstream Vera Sans Mono','Courier New',monospace"> </span><span style="padding-right:0px;padding-left:0px;padding-top:0px;margin-bottom:0px;font-weight:bold;padding-bottom:0px;margin-right:0px;line-height:16px;font-size:12px;white-space:pre-wrap;margin-left:0px;font-family:'Bitstream Vera Sans Mono','Courier New',monospace;margin-top:0px">|</span><span style="line-height:16px;font-size:12px;white-space:pre-wrap;font-family:'Bitstream Vera Sans Mono','Courier New',monospace"> </span><span style="padding-right:0px;padding-left:0px;padding-top:0px;margin-bottom:0px;padding-bottom:0px;margin-right:0px;line-height:16px;font-size:12px;margin-left:0px;white-space:pre-wrap;font-family:'Bitstream Vera Sans Mono','Courier New',monospace;margin-top:0px">PLAYER</span><span style="line-height:16px;font-size:12px;white-space:pre-wrap;font-family:'Bitstream Vera Sans Mono','Courier New',monospace"> </span><span style="padding-right:0px;padding-left:0px;padding-top:0px;margin-bottom:0px;font-weight:bold;padding-bottom:0px;margin-right:0px;line-height:16px;font-size:12px;white-space:pre-wrap;margin-left:0px;font-family:'Bitstream Vera Sans Mono','Courier New',monospace;margin-top:0px">|</span><span style="line-height:16px;font-size:12px;white-space:pre-wrap;font-family:'Bitstream Vera Sans Mono','Courier New',monospace"> </span><span style="padding-right:0px;padding-left:0px;padding-top:0px;margin-bottom:0px;padding-bottom:0px;margin-right:0px;line-height:16px;font-size:12px;margin-left:0px;white-space:pre-wrap;font-family:'Bitstream Vera Sans Mono','Courier New',monospace;margin-top:0px">GAMEOBJECT</span><span style="line-height:16px;font-size:12px;white-space:pre-wrap;font-family:'Bitstream Vera Sans Mono','Courier New',monospace"> </span><span style="padding-right:0px;padding-left:0px;padding-top:0px;margin-bottom:0px;font-weight:bold;padding-bottom:0px;margin-right:0px;line-height:16px;font-size:12px;white-space:pre-wrap;margin-left:0px;font-family:'Bitstream Vera Sans Mono','Courier New',monospace;margin-top:0px">|</span><span style="line-height:16px;font-size:12px;white-space:pre-wrap;font-family:'Bitstream Vera Sans Mono','Courier New',monospace"> </span><span style="padding-right:0px;padding-left:0px;padding-top:0px;margin-bottom:0px;padding-bottom:0px;margin-right:0px;line-height:16px;font-size:12px;margin-left:0px;white-space:pre-wrap;font-family:'Bitstream Vera Sans Mono','Courier New',monospace;margin-top:0px">DYNAMICOBJECT</span><span style="line-height:16px;font-size:12px;white-space:pre-wrap;font-family:'Bitstream Vera Sans Mono','Courier New',monospace"> </span><span style="padding-right:0px;padding-left:0px;padding-top:0px;margin-bottom:0px;font-weight:bold;padding-bottom:0px;margin-right:0px;line-height:16px;font-size:12px;white-space:pre-wrap;margin-left:0px;font-family:'Bitstream Vera Sans Mono','Courier New',monospace;margin-top:0px">|</span><span style="line-height:16px;font-size:12px;white-space:pre-wrap;font-family:'Bitstream Vera Sans Mono','Courier New',monospace"> </span><span style="padding-right:0px;padding-left:0px;padding-top:0px;margin-bottom:0px;padding-bottom:0px;margin-right:0px;line-height:16px;font-size:12px;margin-left:0px;white-space:pre-wrap;font-family:'Bitstream Vera Sans Mono','Courier New',monospace;margin-top:0px">CORPSE</span> </div>
<div><font face="'courier new', monospace"> // ... even more enum combos ...</font></div><div><font face="'courier new', monospace">};</font></div>
<br>_______________________________________________<br>
Haskell-Cafe mailing list<br>
<a href="mailto:Haskell-Cafe@haskell.org">Haskell-Cafe@haskell.org</a><br>
<a href="http://www.haskell.org/mailman/listinfo/haskell-cafe" target="_blank">http://www.haskell.org/mailman/listinfo/haskell-cafe</a><br>
<br></blockquote></div><br>