This file is indexed.

/usr/share/doc/libghc-blaze-builder-doc/html/src/Blaze-ByteString-Builder-Internal-Types.html is in libghc-blaze-builder-doc 0.3.3.2-1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<!-- Generated by HsColour, http://code.haskell.org/~malcolm/hscolour/ -->
<title>Blaze/ByteString/Builder/Internal/Types.hs</title>
<link type='text/css' rel='stylesheet' href='hscolour.css' />
</head>
<body>
<pre><a name="line-1"></a><span class='hs-comment'>{-# LANGUAGE CPP, BangPatterns, Rank2Types #-}</span>
<a name="line-2"></a>
<a name="line-3"></a><span class='hs-cpp'>#ifdef USE_MONO_PAT_BINDS</span>
<a name="line-4"></a><span class='hs-comment'>{-# LANGUAGE MonoPatBinds #-}</span>
<a name="line-5"></a><span class='hs-cpp'>#endif</span>
<a name="line-6"></a>
<a name="line-7"></a><span class='hs-comment'>-- |</span>
<a name="line-8"></a><span class='hs-comment'>-- Module      : Blaze.ByteString.Builder.Internal.Types</span>
<a name="line-9"></a><span class='hs-comment'>-- Copyright   : (c) 2010 Simon Meier</span>
<a name="line-10"></a><span class='hs-comment'>-- License     : BSD3-style (see LICENSE)</span>
<a name="line-11"></a><span class='hs-comment'>--</span>
<a name="line-12"></a><span class='hs-comment'>-- Maintainer  : Simon Meier &lt;iridcode@gmail.com&gt;</span>
<a name="line-13"></a><span class='hs-comment'>-- Stability   : experimental</span>
<a name="line-14"></a><span class='hs-comment'>-- Portability : tested on GHC only</span>
<a name="line-15"></a><span class='hs-comment'>--</span>
<a name="line-16"></a><span class='hs-comment'>-- Core types and functions for the 'Builder' monoid and the 'Put' monad based</span>
<a name="line-17"></a><span class='hs-comment'>-- based on the 'blaze-builder' library by Jasper van der Jeugt and Simon</span>
<a name="line-18"></a><span class='hs-comment'>-- Meier.</span>
<a name="line-19"></a><span class='hs-comment'>--</span>
<a name="line-20"></a><span class='hs-keyword'>module</span> <span class='hs-conid'>Blaze</span><span class='hs-varop'>.</span><span class='hs-conid'>ByteString</span><span class='hs-varop'>.</span><span class='hs-conid'>Builder</span><span class='hs-varop'>.</span><span class='hs-conid'>Internal</span><span class='hs-varop'>.</span><span class='hs-conid'>Types</span> <span class='hs-keyword'>where</span>
<a name="line-21"></a>
<a name="line-22"></a><span class='hs-cpp'>#ifdef APPLICATIVE_IN_BASE</span>
<a name="line-23"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Control</span><span class='hs-varop'>.</span><span class='hs-conid'>Applicative</span>
<a name="line-24"></a><span class='hs-cpp'>#endif</span>
<a name="line-25"></a>
<a name="line-26"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Data</span><span class='hs-varop'>.</span><span class='hs-conid'>Monoid</span>
<a name="line-27"></a><span class='hs-keyword'>import</span> <span class='hs-keyword'>qualified</span> <span class='hs-conid'>Data</span><span class='hs-varop'>.</span><span class='hs-conid'>ByteString</span>      <span class='hs-keyword'>as</span> <span class='hs-conid'>S</span>
<a name="line-28"></a>
<a name="line-29"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Foreign</span>
<a name="line-30"></a>
<a name="line-31"></a><span class='hs-comment'>------------------------------------------------------------------------------</span>
<a name="line-32"></a><span class='hs-comment'>-- The core: BuildSteps</span>
<a name="line-33"></a><span class='hs-comment'>------------------------------------------------------------------------------</span>
<a name="line-34"></a>
<a name="line-35"></a><a name="BufRange"></a><span class='hs-keyword'>data</span> <span class='hs-conid'>BufRange</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>BufRange</span> <span class='hs-comment'>{-# UNPACK #-}</span> <span class='hs-varop'>!</span><span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>Word8</span><span class='hs-layout'>)</span> <span class='hs-comment'>{-# UNPACK #-}</span> <span class='hs-varop'>!</span><span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>Word8</span><span class='hs-layout'>)</span>
<a name="line-36"></a>
<a name="line-37"></a><a name="BuildSignal"></a><span class='hs-keyword'>data</span> <span class='hs-conid'>BuildSignal</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>=</span>
<a name="line-38"></a>    <span class='hs-conid'>Done</span> <span class='hs-comment'>{-# UNPACK #-}</span> <span class='hs-varop'>!</span><span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>Word8</span><span class='hs-layout'>)</span> <span class='hs-varid'>a</span>
<a name="line-39"></a>  <span class='hs-keyglyph'>|</span> <span class='hs-conid'>BufferFull</span>
<a name="line-40"></a>      <span class='hs-comment'>{-# UNPACK #-}</span> <span class='hs-varop'>!</span><span class='hs-conid'>Int</span>
<a name="line-41"></a>      <span class='hs-comment'>{-# UNPACK #-}</span> <span class='hs-varop'>!</span><span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>Word8</span><span class='hs-layout'>)</span>
<a name="line-42"></a>                     <span class='hs-varop'>!</span><span class='hs-layout'>(</span><span class='hs-conid'>BuildStep</span> <span class='hs-varid'>a</span><span class='hs-layout'>)</span>
<a name="line-43"></a>  <span class='hs-keyglyph'>|</span> <span class='hs-conid'>InsertByteString</span>
<a name="line-44"></a>      <span class='hs-comment'>{-# UNPACK #-}</span> <span class='hs-varop'>!</span><span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>Word8</span><span class='hs-layout'>)</span>
<a name="line-45"></a>                     <span class='hs-varop'>!</span><span class='hs-conid'>S</span><span class='hs-varop'>.</span><span class='hs-conid'>ByteString</span>
<a name="line-46"></a>                     <span class='hs-varop'>!</span><span class='hs-layout'>(</span><span class='hs-conid'>BuildStep</span> <span class='hs-varid'>a</span><span class='hs-layout'>)</span>
<a name="line-47"></a>
<a name="line-48"></a><a name="BuildStep"></a><span class='hs-keyword'>newtype</span> <span class='hs-conid'>BuildStep</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>=</span>
<a name="line-49"></a>    <span class='hs-conid'>BuildStep</span> <span class='hs-layout'>{</span> <span class='hs-varid'>runBuildStep</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>BufRange</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-layout'>(</span><span class='hs-conid'>BuildSignal</span> <span class='hs-varid'>a</span><span class='hs-layout'>)</span> <span class='hs-layout'>}</span>
<a name="line-50"></a>
<a name="line-51"></a><span class='hs-comment'>-- Hiding the implementation of 'BuildStep's</span>
<a name="line-52"></a>
<a name="line-53"></a><a name="done"></a><span class='hs-definition'>done</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Ptr</span> <span class='hs-conid'>Word8</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>BuildSignal</span> <span class='hs-varid'>a</span>
<a name="line-54"></a><span class='hs-definition'>done</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Done</span>
<a name="line-55"></a>
<a name="line-56"></a><a name="bufferFull"></a><span class='hs-definition'>bufferFull</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Int</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Ptr</span> <span class='hs-conid'>Word8</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>BufRange</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-layout'>(</span><span class='hs-conid'>BuildSignal</span> <span class='hs-varid'>a</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>BuildSignal</span> <span class='hs-varid'>a</span>
<a name="line-57"></a><span class='hs-definition'>bufferFull</span> <span class='hs-varid'>size</span> <span class='hs-varid'>op</span> <span class='hs-varid'>step</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>BufferFull</span> <span class='hs-varid'>size</span> <span class='hs-varid'>op</span> <span class='hs-layout'>(</span><span class='hs-varid'>buildStep</span> <span class='hs-varid'>step</span><span class='hs-layout'>)</span>
<a name="line-58"></a>
<a name="line-59"></a><a name="insertByteString"></a><span class='hs-definition'>insertByteString</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Ptr</span> <span class='hs-conid'>Word8</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>S</span><span class='hs-varop'>.</span><span class='hs-conid'>ByteString</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>BufRange</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-layout'>(</span><span class='hs-conid'>BuildSignal</span> <span class='hs-varid'>a</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>BuildSignal</span> <span class='hs-varid'>a</span>
<a name="line-60"></a><span class='hs-definition'>insertByteString</span> <span class='hs-varid'>op</span> <span class='hs-varid'>bs</span> <span class='hs-varid'>step</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>InsertByteString</span> <span class='hs-varid'>op</span> <span class='hs-varid'>bs</span> <span class='hs-layout'>(</span><span class='hs-varid'>buildStep</span> <span class='hs-varid'>step</span><span class='hs-layout'>)</span>
<a name="line-61"></a>
<a name="line-62"></a><a name="buildStep"></a><span class='hs-definition'>buildStep</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-conid'>BufRange</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-layout'>(</span><span class='hs-conid'>BuildSignal</span> <span class='hs-varid'>a</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>BuildStep</span> <span class='hs-varid'>a</span>
<a name="line-63"></a><span class='hs-definition'>buildStep</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>BuildStep</span>
<a name="line-64"></a>
<a name="line-65"></a><span class='hs-comment'>------------------------------------------------------------------------------</span>
<a name="line-66"></a><span class='hs-comment'>-- The 'Builder' Monoid and the 'Put' Monad</span>
<a name="line-67"></a><span class='hs-comment'>------------------------------------------------------------------------------</span>
<a name="line-68"></a>
<a name="line-69"></a><a name="Builder"></a><span class='hs-keyword'>newtype</span> <span class='hs-conid'>Builder</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Builder</span> <span class='hs-layout'>{</span>
<a name="line-70"></a>    <span class='hs-varid'>unBuilder</span> <span class='hs-keyglyph'>::</span> <span class='hs-keyword'>forall</span> <span class='hs-varid'>r</span><span class='hs-varop'>.</span> <span class='hs-conid'>BuildStep</span> <span class='hs-varid'>r</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>BuildStep</span> <span class='hs-varid'>r</span>
<a name="line-71"></a>  <span class='hs-layout'>}</span>
<a name="line-72"></a>
<a name="line-73"></a><a name="instance%20Monoid%20Builder"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>Monoid</span> <span class='hs-conid'>Builder</span> <span class='hs-keyword'>where</span>
<a name="line-74"></a>  <span class='hs-varid'>mempty</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Builder</span> <span class='hs-varid'>id</span>
<a name="line-75"></a>  <span class='hs-comment'>{-# INLINE mempty #-}</span>
<a name="line-76"></a>  <span class='hs-layout'>(</span><span class='hs-conid'>Builder</span> <span class='hs-varid'>b1</span><span class='hs-layout'>)</span> <span class='hs-varop'>`mappend`</span> <span class='hs-layout'>(</span><span class='hs-conid'>Builder</span> <span class='hs-varid'>b2</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Builder</span> <span class='hs-varop'>$</span> <span class='hs-varid'>b1</span> <span class='hs-varop'>.</span> <span class='hs-varid'>b2</span>
<a name="line-77"></a>  <span class='hs-comment'>{-# INLINE mappend #-}</span>
<a name="line-78"></a>  <span class='hs-varid'>mconcat</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>foldr</span> <span class='hs-varid'>mappend</span> <span class='hs-varid'>mempty</span>
<a name="line-79"></a>  <span class='hs-comment'>{-# INLINE mconcat #-}</span>
<a name="line-80"></a>
<a name="line-81"></a><a name="Put"></a><span class='hs-keyword'>newtype</span> <span class='hs-conid'>Put</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Put</span> <span class='hs-layout'>{</span>
<a name="line-82"></a>    <span class='hs-varid'>unPut</span> <span class='hs-keyglyph'>::</span> <span class='hs-keyword'>forall</span> <span class='hs-varid'>r</span><span class='hs-varop'>.</span> <span class='hs-layout'>(</span><span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>BuildStep</span> <span class='hs-varid'>r</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>BuildStep</span> <span class='hs-varid'>r</span>
<a name="line-83"></a>  <span class='hs-layout'>}</span>
<a name="line-84"></a>
<a name="line-85"></a><a name="instance%20Functor%20Put"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>Functor</span> <span class='hs-conid'>Put</span> <span class='hs-keyword'>where</span>
<a name="line-86"></a>  <span class='hs-varid'>fmap</span> <span class='hs-varid'>f</span> <span class='hs-layout'>(</span><span class='hs-conid'>Put</span> <span class='hs-varid'>put</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Put</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>k</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>put</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-varid'>x</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>k</span> <span class='hs-layout'>(</span><span class='hs-varid'>f</span> <span class='hs-varid'>x</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-87"></a>  <span class='hs-comment'>{-# INLINE fmap #-}</span>
<a name="line-88"></a>
<a name="line-89"></a><span class='hs-cpp'>#ifdef APPLICATIVE_IN_BASE</span>
<a name="line-90"></a><a name="instance%20Applicative%20Put"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>Applicative</span> <span class='hs-conid'>Put</span> <span class='hs-keyword'>where</span>
<a name="line-91"></a>  <span class='hs-varid'>pure</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Put</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>k</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>k</span> <span class='hs-varid'>x</span>
<a name="line-92"></a>  <span class='hs-comment'>{-# INLINE pure #-}</span>
<a name="line-93"></a>  <span class='hs-varid'>f</span> <span class='hs-varop'>&lt;*&gt;</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Put</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>k</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>unPut</span> <span class='hs-varid'>f</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-varid'>f'</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>unPut</span> <span class='hs-varid'>a</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-varid'>a'</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>k</span> <span class='hs-layout'>(</span><span class='hs-varid'>f'</span> <span class='hs-varid'>a'</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-94"></a>  <span class='hs-comment'>{-# INLINE (&lt;*&gt;) #-}</span>
<a name="line-95"></a>  <span class='hs-varid'>a</span> <span class='hs-varop'>&lt;*</span> <span class='hs-varid'>b</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Put</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>k</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>unPut</span> <span class='hs-varid'>a</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-varid'>a'</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>unPut</span> <span class='hs-varid'>b</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-keyword'>_</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>k</span> <span class='hs-varid'>a'</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-96"></a>  <span class='hs-comment'>{-# INLINE (&lt;*) #-}</span>
<a name="line-97"></a>  <span class='hs-varid'>a</span> <span class='hs-varop'>*&gt;</span> <span class='hs-varid'>b</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Put</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>k</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>unPut</span> <span class='hs-varid'>a</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-keyword'>_</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>unPut</span> <span class='hs-varid'>b</span> <span class='hs-varid'>k</span><span class='hs-layout'>)</span>
<a name="line-98"></a>  <span class='hs-comment'>{-# INLINE (*&gt;) #-}</span>
<a name="line-99"></a><span class='hs-cpp'>#endif</span>
<a name="line-100"></a>
<a name="line-101"></a><a name="instance%20Monad%20Put"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>Monad</span> <span class='hs-conid'>Put</span> <span class='hs-keyword'>where</span>
<a name="line-102"></a>  <span class='hs-varid'>return</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Put</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>k</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>k</span> <span class='hs-varid'>x</span>
<a name="line-103"></a>  <span class='hs-comment'>{-# INLINE return #-}</span>
<a name="line-104"></a>  <span class='hs-varid'>m</span> <span class='hs-varop'>&gt;&gt;=</span> <span class='hs-varid'>f</span>  <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Put</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>k</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>unPut</span> <span class='hs-varid'>m</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-varid'>m'</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>unPut</span> <span class='hs-layout'>(</span><span class='hs-varid'>f</span> <span class='hs-varid'>m'</span><span class='hs-layout'>)</span> <span class='hs-varid'>k</span><span class='hs-layout'>)</span>
<a name="line-105"></a>  <span class='hs-comment'>{-# INLINE (&gt;&gt;=) #-}</span>
<a name="line-106"></a>  <span class='hs-varid'>m</span> <span class='hs-varop'>&gt;&gt;</span>  <span class='hs-varid'>n</span>  <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Put</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>k</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>unPut</span> <span class='hs-varid'>m</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-keyword'>_</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>unPut</span> <span class='hs-varid'>n</span> <span class='hs-varid'>k</span><span class='hs-layout'>)</span>
<a name="line-107"></a>  <span class='hs-comment'>{-# INLINE (&gt;&gt;) #-}</span>
<a name="line-108"></a>
<a name="line-109"></a>
<a name="line-110"></a><span class='hs-comment'>-- Creation from concrete 'BuildStep's</span>
<a name="line-111"></a><span class='hs-comment'>------------------------------------------------------------------------------</span>
<a name="line-112"></a>
<a name="line-113"></a><a name="putBuildStepCont"></a><span class='hs-definition'>putBuildStepCont</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-keyword'>forall</span> <span class='hs-varid'>r</span><span class='hs-varop'>.</span> <span class='hs-layout'>(</span><span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>BufRange</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-layout'>(</span><span class='hs-conid'>BuildSignal</span> <span class='hs-varid'>r</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span>
<a name="line-114"></a>                               <span class='hs-layout'>(</span>     <span class='hs-conid'>BufRange</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-layout'>(</span><span class='hs-conid'>BuildSignal</span> <span class='hs-varid'>r</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-115"></a>                    <span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Put</span> <span class='hs-varid'>a</span>
<a name="line-116"></a><span class='hs-definition'>putBuildStepCont</span> <span class='hs-varid'>step</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Put</span> <span class='hs-varid'>step'</span>
<a name="line-117"></a>  <span class='hs-keyword'>where</span>
<a name="line-118"></a>    <span class='hs-varid'>step'</span> <span class='hs-varid'>k</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>BuildStep</span> <span class='hs-varop'>$</span> <span class='hs-varid'>step</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-varid'>x</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>runBuildStep</span> <span class='hs-layout'>(</span><span class='hs-varid'>k</span> <span class='hs-varid'>x</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-119"></a>
<a name="line-120"></a>
<a name="line-121"></a><a name="fromBuildStepCont"></a><span class='hs-definition'>fromBuildStepCont</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-keyword'>forall</span> <span class='hs-varid'>r</span><span class='hs-varop'>.</span> <span class='hs-layout'>(</span><span class='hs-conid'>BufRange</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-layout'>(</span><span class='hs-conid'>BuildSignal</span> <span class='hs-varid'>r</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span>
<a name="line-122"></a>                                <span class='hs-layout'>(</span><span class='hs-conid'>BufRange</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-layout'>(</span><span class='hs-conid'>BuildSignal</span> <span class='hs-varid'>r</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-123"></a>                     <span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Builder</span>
<a name="line-124"></a><span class='hs-definition'>fromBuildStepCont</span> <span class='hs-varid'>step</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Builder</span> <span class='hs-varid'>step'</span>
<a name="line-125"></a>  <span class='hs-keyword'>where</span>
<a name="line-126"></a>    <span class='hs-varid'>step'</span> <span class='hs-varid'>k</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>BuildStep</span> <span class='hs-varop'>$</span> <span class='hs-varid'>step</span> <span class='hs-layout'>(</span><span class='hs-varid'>runBuildStep</span> <span class='hs-varid'>k</span><span class='hs-layout'>)</span>
<a name="line-127"></a>
<a name="line-128"></a>
<a name="line-129"></a>
<a name="line-130"></a><span class='hs-comment'>-- Conversion between Put and Builder</span>
<a name="line-131"></a><span class='hs-comment'>------------------------------------------------------------------------------</span>
<a name="line-132"></a>
<a name="line-133"></a><a name="putBuilder"></a><span class='hs-comment'>-- | Put the given builder.</span>
<a name="line-134"></a><span class='hs-definition'>putBuilder</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Builder</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Put</span> <span class='hs-conid'>()</span>
<a name="line-135"></a><span class='hs-definition'>putBuilder</span> <span class='hs-layout'>(</span><span class='hs-conid'>Builder</span> <span class='hs-varid'>build</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Put</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>k</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>build</span> <span class='hs-layout'>(</span><span class='hs-varid'>k</span> <span class='hs-conid'>()</span><span class='hs-layout'>)</span>
<a name="line-136"></a>
<a name="line-137"></a>
<a name="line-138"></a><a name="fromPut"></a><span class='hs-comment'>-- | Ignore the value of a put and only exploit its output side effect.</span>
<a name="line-139"></a><span class='hs-definition'>fromPut</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Put</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Builder</span>
<a name="line-140"></a><span class='hs-definition'>fromPut</span> <span class='hs-layout'>(</span><span class='hs-conid'>Put</span> <span class='hs-varid'>put</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Builder</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>k</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>put</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-keyword'>_</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>k</span><span class='hs-layout'>)</span>
<a name="line-141"></a>
<a name="line-142"></a><span class='hs-comment'>-- Lifting IO actions</span>
<a name="line-143"></a><span class='hs-comment'>---------------------</span>
<a name="line-144"></a>
<a name="line-145"></a><a name="putLiftIO"></a><span class='hs-comment'>-- | Lift the given IO action.</span>
<a name="line-146"></a><span class='hs-comment'>{-# INLINE putLiftIO #-}</span>
<a name="line-147"></a><span class='hs-definition'>putLiftIO</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>IO</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Put</span> <span class='hs-varid'>a</span>
<a name="line-148"></a><span class='hs-definition'>putLiftIO</span> <span class='hs-varid'>io</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>putBuildStepCont</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>k</span> <span class='hs-varid'>br</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>io</span> <span class='hs-varop'>&gt;&gt;=</span> <span class='hs-layout'>(</span><span class='hs-varop'>`k`</span> <span class='hs-varid'>br</span><span class='hs-layout'>)</span>
</pre></body>
</html>