Sorry took so long to get back... Thank you for the response.  Been really busy lately :-)<br><br><div class="gmail_quote">On Sat, May 16, 2009 at 3:46 AM, Khudyakov Alexey <span dir="ltr">&lt;<a href="mailto:alexey.skladnoy@gmail.com">alexey.skladnoy@gmail.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><div><div></div><div class="h5">On Friday 15 May 2009 06:52:29 David Leimbach wrote:<br>
&gt; I actually need little endian encoding... wondering if anyone else hit this<br>
&gt; with Data.Binary. (because I&#39;m working with Bell Lab&#39;s 9P protocol which<br>
&gt; does encode things on the network in little-endian order).<br>
&gt; Anyone got some &quot;tricks&quot; for this?<br>
&gt;<br>
&gt; Dave<br>
<br>
</div></div>You could just define data type and Binary instance for 9P messages. Something<br>
like this:<br>
<br>
P9Message = Tversion { tag :: Word16, msize :: Word32, version :: String }<br>
    | ...<br>
<br>
instance Binary P9Message where<br>
  put (Tverstion  t m v) =  putWord16le t &gt;&gt;  putWord32le m &gt;&gt; put v<br>
  -- and so on...<br>
<br>
  get = do<br>
    length &lt;- getWord32le<br>
    id &lt;- getWord16le<br>
    case is of<br>
      p9TMessage -&gt; do ...<br>
<br>
There are a lot of boilerplate code thought...</blockquote><div><br></div><div>Thank you, this still looks like a useful way to proceed, combined with the BinaryLE approach perhaps, to avoid a lot of boilerplate. </div><div>
<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><br>
<br>
<br>
BTW could you say what do you want to do with 9P? I tried to play with it<br>
using libixp library but without any success. It was mainly to understand how<br>
does it works and how can it be used.</blockquote><div><br></div><div>From a services point of view, 9P gives you a way to host them, and even devices, on a network share that can be &quot;mounted&quot; into the filesystem&#39;s namespace.  The net result is you&#39;ve plugged into the standard unix utilities that do open, read, write etc, and can do a lot of interesting things with mere shell scripts.</div>
<div><br></div><div>Operating systems that can be clients of a 9P service include Linux, Inferno, Plan 9, and anything else that runs FUSE 9P (several BSDs).</div><div><br></div><div>From a client perspective, having a 9P implementation gives you a more fine-grained programatic interface to accessing other 9P services.</div>
<div><br></div><div>There are also a lot of 9P implementations in many languages that you can interoperate with: </div><div><br></div><div><a href="http://9p.cat-v.org/implementations">http://9p.cat-v.org/implementations</a></div>
<div><br></div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><br>
<div><div></div><div class="h5"><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>
</div></div></blockquote></div><br>