I may be curious to see how you intend to use such enum...<br>It is very C-wise, I&#39;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">&lt;<a href="mailto:abcz2.uprola@gmail.com">abcz2.uprola@gmail.com</a>&gt;</span><br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><font face="&#39;courier new&#39;, 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:&#39;Bitstream Vera Sans Mono&#39;,&#39;Courier New&#39;,monospace;margin-top:0px">   WORLDOBJECT</span><span style="line-height:16px;font-size:12px;white-space:pre-wrap;font-family:&#39;Bitstream Vera Sans Mono&#39;,&#39;Courier New&#39;,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:&#39;Bitstream Vera Sans Mono&#39;,&#39;Courier New&#39;,monospace;margin-top:0px">=</span><span style="line-height:16px;font-size:12px;white-space:pre-wrap;font-family:&#39;Bitstream Vera Sans Mono&#39;,&#39;Courier New&#39;,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:&#39;Bitstream Vera Sans Mono&#39;,&#39;Courier New&#39;,monospace;margin-top:0px">UNIT</span><span style="line-height:16px;font-size:12px;white-space:pre-wrap;font-family:&#39;Bitstream Vera Sans Mono&#39;,&#39;Courier New&#39;,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:&#39;Bitstream Vera Sans Mono&#39;,&#39;Courier New&#39;,monospace;margin-top:0px">|</span><span style="line-height:16px;font-size:12px;white-space:pre-wrap;font-family:&#39;Bitstream Vera Sans Mono&#39;,&#39;Courier New&#39;,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:&#39;Bitstream Vera Sans Mono&#39;,&#39;Courier New&#39;,monospace;margin-top:0px">PLAYER</span><span style="line-height:16px;font-size:12px;white-space:pre-wrap;font-family:&#39;Bitstream Vera Sans Mono&#39;,&#39;Courier New&#39;,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:&#39;Bitstream Vera Sans Mono&#39;,&#39;Courier New&#39;,monospace;margin-top:0px">|</span><span style="line-height:16px;font-size:12px;white-space:pre-wrap;font-family:&#39;Bitstream Vera Sans Mono&#39;,&#39;Courier New&#39;,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:&#39;Bitstream Vera Sans Mono&#39;,&#39;Courier New&#39;,monospace;margin-top:0px">GAMEOBJECT</span><span style="line-height:16px;font-size:12px;white-space:pre-wrap;font-family:&#39;Bitstream Vera Sans Mono&#39;,&#39;Courier New&#39;,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:&#39;Bitstream Vera Sans Mono&#39;,&#39;Courier New&#39;,monospace;margin-top:0px">|</span><span style="line-height:16px;font-size:12px;white-space:pre-wrap;font-family:&#39;Bitstream Vera Sans Mono&#39;,&#39;Courier New&#39;,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:&#39;Bitstream Vera Sans Mono&#39;,&#39;Courier New&#39;,monospace;margin-top:0px">DYNAMICOBJECT</span><span style="line-height:16px;font-size:12px;white-space:pre-wrap;font-family:&#39;Bitstream Vera Sans Mono&#39;,&#39;Courier New&#39;,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:&#39;Bitstream Vera Sans Mono&#39;,&#39;Courier New&#39;,monospace;margin-top:0px">|</span><span style="line-height:16px;font-size:12px;white-space:pre-wrap;font-family:&#39;Bitstream Vera Sans Mono&#39;,&#39;Courier New&#39;,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:&#39;Bitstream Vera Sans Mono&#39;,&#39;Courier New&#39;,monospace;margin-top:0px">CORPSE</span> </div>


<div><font face="&#39;courier new&#39;, monospace">   // ... even more enum combos ...</font></div><div><font face="&#39;courier new&#39;, 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>