<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Data.Binary.Put</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[ window.onload = function () {pageLoad();setSynopsis("mini_Data-Binary-Put.html");}; //]]> </script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">binary-0.5.1.0: Binary serialisation for Haskell values using lazy ByteStrings</p></div><div id="content"><div id="module-header"><table class="info"><tr><th>Portability</th><td>Portable to Hugs and GHC. Requires MPTCs</td></tr><tr><th>Stability</th><td>stable</td></tr><tr><th>Maintainer</th><td>Lennart Kolmodin <kolmodin@dtek.chalmers.se></td></tr><tr><th>Safe Haskell</th><td>Trustworthy</td></tr></table><p class="caption">Data.Binary.Put</p></div><div id="table-of-contents"><p class="caption">Contents</p><ul><li><a href="#g:1">The Put type </a></li><li><a href="#g:2">Flushing the implicit parse state </a></li><li><a href="#g:3">Primitives </a></li><li><a href="#g:4">Big-endian primitives </a></li><li><a href="#g:5">Little-endian primitives </a></li><li><a href="#g:6">Host-endian, unaligned writes </a></li></ul></div><div id="description"><p class="caption">Description</p><div class="doc"><p>The Put monad. A monad for efficiently constructing lazy bytestrings. </p></div></div><div id="synopsis"><p id="control.syn" class="caption expander" onclick="toggleSection('syn')">Synopsis</p><ul id="section.syn" class="hide" onclick="toggleSection('syn')"><li class="src short"><span class="keyword">type</span> <a href="#t:Put">Put</a> = <a href="Data-Binary-Put.html#t:PutM">PutM</a> ()</li><li class="src short"><span class="keyword">newtype</span> <a href="#t:PutM">PutM</a> a = <a href="#v:Put">Put</a> {<ul class="subs"><li><a href="#v:unPut">unPut</a> :: PairS a</li></ul>}</li><li class="src short"><a href="#v:runPut">runPut</a> :: <a href="Data-Binary-Put.html#t:Put">Put</a> -> <a href="../bytestring-0.9.2.1/Data-ByteString-Lazy.html#t:ByteString">ByteString</a></li><li class="src short"><a href="#v:runPutM">runPutM</a> :: <a href="Data-Binary-Put.html#t:PutM">PutM</a> a -> (a, <a href="../bytestring-0.9.2.1/Data-ByteString-Lazy.html#t:ByteString">ByteString</a>)</li><li class="src short"><a href="#v:putBuilder">putBuilder</a> :: <a href="Data-Binary-Builder.html#t:Builder">Builder</a> -> <a href="Data-Binary-Put.html#t:Put">Put</a></li><li class="src short"><a href="#v:execPut">execPut</a> :: <a href="Data-Binary-Put.html#t:PutM">PutM</a> a -> <a href="Data-Binary-Builder.html#t:Builder">Builder</a></li><li class="src short"><a href="#v:flush">flush</a> :: <a href="Data-Binary-Put.html#t:Put">Put</a></li><li class="src short"><a href="#v:putWord8">putWord8</a> :: <a href="../base-4.5.1.0/Data-Word.html#t:Word8">Word8</a> -> <a href="Data-Binary-Put.html#t:Put">Put</a></li><li class="src short"><a href="#v:putByteString">putByteString</a> :: <a href="../bytestring-0.9.2.1/Data-ByteString.html#t:ByteString">ByteString</a> -> <a href="Data-Binary-Put.html#t:Put">Put</a></li><li class="src short"><a href="#v:putLazyByteString">putLazyByteString</a> :: <a href="../bytestring-0.9.2.1/Data-ByteString-Lazy.html#t:ByteString">ByteString</a> -> <a href="Data-Binary-Put.html#t:Put">Put</a></li><li class="src short"><a href="#v:putWord16be">putWord16be</a> :: <a href="../base-4.5.1.0/Data-Word.html#t:Word16">Word16</a> -> <a href="Data-Binary-Put.html#t:Put">Put</a></li><li class="src short"><a href="#v:putWord32be">putWord32be</a> :: <a href="../base-4.5.1.0/Data-Word.html#t:Word32">Word32</a> -> <a href="Data-Binary-Put.html#t:Put">Put</a></li><li class="src short"><a href="#v:putWord64be">putWord64be</a> :: <a href="../base-4.5.1.0/Data-Word.html#t:Word64">Word64</a> -> <a href="Data-Binary-Put.html#t:Put">Put</a></li><li class="src short"><a href="#v:putWord16le">putWord16le</a> :: <a href="../base-4.5.1.0/Data-Word.html#t:Word16">Word16</a> -> <a href="Data-Binary-Put.html#t:Put">Put</a></li><li class="src short"><a href="#v:putWord32le">putWord32le</a> :: <a href="../base-4.5.1.0/Data-Word.html#t:Word32">Word32</a> -> <a href="Data-Binary-Put.html#t:Put">Put</a></li><li class="src short"><a href="#v:putWord64le">putWord64le</a> :: <a href="../base-4.5.1.0/Data-Word.html#t:Word64">Word64</a> -> <a href="Data-Binary-Put.html#t:Put">Put</a></li><li class="src short"><a href="#v:putWordhost">putWordhost</a> :: <a href="../base-4.5.1.0/Data-Word.html#t:Word">Word</a> -> <a href="Data-Binary-Put.html#t:Put">Put</a></li><li class="src short"><a href="#v:putWord16host">putWord16host</a> :: <a href="../base-4.5.1.0/Data-Word.html#t:Word16">Word16</a> -> <a href="Data-Binary-Put.html#t:Put">Put</a></li><li class="src short"><a href="#v:putWord32host">putWord32host</a> :: <a href="../base-4.5.1.0/Data-Word.html#t:Word32">Word32</a> -> <a href="Data-Binary-Put.html#t:Put">Put</a></li><li class="src short"><a href="#v:putWord64host">putWord64host</a> :: <a href="../base-4.5.1.0/Data-Word.html#t:Word64">Word64</a> -> <a href="Data-Binary-Put.html#t:Put">Put</a></li></ul></div><div id="interface"><h1 id="g:1">The Put type </h1><div class="top"><p class="src"><span class="keyword">type</span> <a name="t:Put" class="def">Put</a> = <a href="Data-Binary-Put.html#t:PutM">PutM</a> ()</p><div class="doc"><p>Put merely lifts Builder into a Writer monad, applied to (). </p></div></div><div class="top"><p class="src"><span class="keyword">newtype</span> <a name="t:PutM" class="def">PutM</a> a </p><div class="doc"><p>The PutM type. A Writer monad over the efficient Builder monoid. </p></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:Put" class="def">Put</a></td><td class="doc empty"> </td></tr><tr><td colspan="2"><div class="subs fields"><p class="caption">Fields</p><dl><dt class="src"><a name="v:unPut" class="def">unPut</a> :: PairS a</dt><dd class="doc empty"> </dd></dl><div class="clear"></div></div></td></tr></table></div><div class="subs instances"><p id="control.i:PutM" class="caption collapser" onclick="toggleSection('i:PutM')">Instances</p><div id="section.i:PutM" class="show"><table><tr><td class="src"><a href="../base-4.5.1.0/Control-Monad.html#t:Monad">Monad</a> <a href="Data-Binary-Put.html#t:PutM">PutM</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="../base-4.5.1.0/Control-Monad.html#t:Functor">Functor</a> <a href="Data-Binary-Put.html#t:PutM">PutM</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="../base-4.5.1.0/Control-Applicative.html#t:Applicative">Applicative</a> <a href="Data-Binary-Put.html#t:PutM">PutM</a></td><td class="doc empty"> </td></tr></table></div></div></div><div class="top"><p class="src"><a name="v:runPut" class="def">runPut</a> :: <a href="Data-Binary-Put.html#t:Put">Put</a> -> <a href="../bytestring-0.9.2.1/Data-ByteString-Lazy.html#t:ByteString">ByteString</a></p><div class="doc"><p>Run the <code><a href="Data-Binary-Put.html#t:Put">Put</a></code> monad with a serialiser </p></div></div><div class="top"><p class="src"><a name="v:runPutM" class="def">runPutM</a> :: <a href="Data-Binary-Put.html#t:PutM">PutM</a> a -> (a, <a href="../bytestring-0.9.2.1/Data-ByteString-Lazy.html#t:ByteString">ByteString</a>)</p><div class="doc"><p>Run the <code><a href="Data-Binary-Put.html#t:Put">Put</a></code> monad with a serialiser and get its result </p></div></div><div class="top"><p class="src"><a name="v:putBuilder" class="def">putBuilder</a> :: <a href="Data-Binary-Builder.html#t:Builder">Builder</a> -> <a href="Data-Binary-Put.html#t:Put">Put</a></p></div><div class="top"><p class="src"><a name="v:execPut" class="def">execPut</a> :: <a href="Data-Binary-Put.html#t:PutM">PutM</a> a -> <a href="Data-Binary-Builder.html#t:Builder">Builder</a></p><div class="doc"><p>Run the <code><a href="Data-Binary-Put.html#t:Put">Put</a></code> monad </p></div></div><h1 id="g:2">Flushing the implicit parse state </h1><div class="top"><p class="src"><a name="v:flush" class="def">flush</a> :: <a href="Data-Binary-Put.html#t:Put">Put</a></p><div class="doc"><p>Pop the ByteString we have constructed so far, if any, yielding a new chunk in the result ByteString. </p></div></div><h1 id="g:3">Primitives </h1><div class="top"><p class="src"><a name="v:putWord8" class="def">putWord8</a> :: <a href="../base-4.5.1.0/Data-Word.html#t:Word8">Word8</a> -> <a href="Data-Binary-Put.html#t:Put">Put</a></p><div class="doc"><p>Efficiently write a byte into the output buffer </p></div></div><div class="top"><p class="src"><a name="v:putByteString" class="def">putByteString</a> :: <a href="../bytestring-0.9.2.1/Data-ByteString.html#t:ByteString">ByteString</a> -> <a href="Data-Binary-Put.html#t:Put">Put</a></p><div class="doc"><p>An efficient primitive to write a strict ByteString into the output buffer. It flushes the current buffer, and writes the argument into a new chunk. </p></div></div><div class="top"><p class="src"><a name="v:putLazyByteString" class="def">putLazyByteString</a> :: <a href="../bytestring-0.9.2.1/Data-ByteString-Lazy.html#t:ByteString">ByteString</a> -> <a href="Data-Binary-Put.html#t:Put">Put</a></p><div class="doc"><p>Write a lazy ByteString efficiently, simply appending the lazy ByteString chunks to the output buffer </p></div></div><h1 id="g:4">Big-endian primitives </h1><div class="top"><p class="src"><a name="v:putWord16be" class="def">putWord16be</a> :: <a href="../base-4.5.1.0/Data-Word.html#t:Word16">Word16</a> -> <a href="Data-Binary-Put.html#t:Put">Put</a></p><div class="doc"><p>Write a Word16 in big endian format </p></div></div><div class="top"><p class="src"><a name="v:putWord32be" class="def">putWord32be</a> :: <a href="../base-4.5.1.0/Data-Word.html#t:Word32">Word32</a> -> <a href="Data-Binary-Put.html#t:Put">Put</a></p><div class="doc"><p>Write a Word32 in big endian format </p></div></div><div class="top"><p class="src"><a name="v:putWord64be" class="def">putWord64be</a> :: <a href="../base-4.5.1.0/Data-Word.html#t:Word64">Word64</a> -> <a href="Data-Binary-Put.html#t:Put">Put</a></p><div class="doc"><p>Write a Word64 in big endian format </p></div></div><h1 id="g:5">Little-endian primitives </h1><div class="top"><p class="src"><a name="v:putWord16le" class="def">putWord16le</a> :: <a href="../base-4.5.1.0/Data-Word.html#t:Word16">Word16</a> -> <a href="Data-Binary-Put.html#t:Put">Put</a></p><div class="doc"><p>Write a Word16 in little endian format </p></div></div><div class="top"><p class="src"><a name="v:putWord32le" class="def">putWord32le</a> :: <a href="../base-4.5.1.0/Data-Word.html#t:Word32">Word32</a> -> <a href="Data-Binary-Put.html#t:Put">Put</a></p><div class="doc"><p>Write a Word32 in little endian format </p></div></div><div class="top"><p class="src"><a name="v:putWord64le" class="def">putWord64le</a> :: <a href="../base-4.5.1.0/Data-Word.html#t:Word64">Word64</a> -> <a href="Data-Binary-Put.html#t:Put">Put</a></p><div class="doc"><p>Write a Word64 in little endian format </p></div></div><h1 id="g:6">Host-endian, unaligned writes </h1><div class="top"><p class="src"><a name="v:putWordhost" class="def">putWordhost</a> :: <a href="../base-4.5.1.0/Data-Word.html#t:Word">Word</a> -> <a href="Data-Binary-Put.html#t:Put">Put</a></p><div class="doc"><p><em>O(1).</em> Write a single native machine word. The word is written in host order, host endian form, for the machine you're on. On a 64 bit machine the Word is an 8 byte value, on a 32 bit machine, 4 bytes. Values written this way are not portable to different endian or word sized machines, without conversion. </p></div></div><div class="top"><p class="src"><a name="v:putWord16host" class="def">putWord16host</a> :: <a href="../base-4.5.1.0/Data-Word.html#t:Word16">Word16</a> -> <a href="Data-Binary-Put.html#t:Put">Put</a></p><div class="doc"><p><em>O(1).</em> Write a Word16 in native host order and host endianness. For portability issues see <code>putWordhost</code>. </p></div></div><div class="top"><p class="src"><a name="v:putWord32host" class="def">putWord32host</a> :: <a href="../base-4.5.1.0/Data-Word.html#t:Word32">Word32</a> -> <a href="Data-Binary-Put.html#t:Put">Put</a></p><div class="doc"><p><em>O(1).</em> Write a Word32 in native host order and host endianness. For portability issues see <code>putWordhost</code>. </p></div></div><div class="top"><p class="src"><a name="v:putWord64host" class="def">putWord64host</a> :: <a href="../base-4.5.1.0/Data-Word.html#t:Word64">Word64</a> -> <a href="Data-Binary-Put.html#t:Put">Put</a></p><div class="doc"><p><em>O(1).</em> Write a Word64 in native host order On a 32 bit machine we write two host order Word32s, in big endian form. For portability issues see <code>putWordhost</code>. </p></div></div></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.11.0</p></div></body></html>