<turbo-stream action="append" target="posts_list"><template>    <div class="postbit" id="36511" data-post-id="36511">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="bglusman" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/bglusman/120/9459_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  bglusman
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Oh, interesting, I implemented a zipper in Elixir and came across gap buffers as a result while reading afterwards, but never implemented one/didn’t realize the normal implementation involved mutation… I was actually considering making a zipper protocol/library or something that abstracted the differences between (in my mind) a zipper-tree, a zipper-array or gap buffer, and maybe a zipper-map (which I’m a little fuzzier on utility/implementation of, but I guess for ordered/each traveral of k/v pairs with pausable/passable state etc).</p>
<p>I’d imagined the functional version of gap buffer as just a pair of lists each with the head of the list at the gap, and moving the gap just being an O(1) add/remove mutation on each list, but maybe I’m missing/forgetting something?</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="36511" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/elixir-needs-a-fifo-type/5701/23">Post #22</a>
	                </div>
	            </div>
              <div id="likers-container-36511" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="36511"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #22"></div>
  </section>
</div>
    <div class="postbit" id="36537" data-post-id="36537">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="OvermindDL1" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/OvermindDL1/120/2677_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  OvermindDL1
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="bglusman" data-post="23" data-topic="5701">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/bglusman/48/9459_2.png" class="avatar"> bglusman:</div>
<blockquote>
<p>I’d imagined the functional version of gap buffer as just a pair of lists each with the head of the list at the gap, and moving the gap just being an O(1) add/remove mutation on each list, but maybe I’m missing/forgetting something?</p>
</blockquote>
</aside>
<p>That is still a zipper.  <img src="https://forum.elixirforum.com/images/emoji/apple/slight_smile.png?v=15" title=":slight_smile:" class="emoji" alt=":slight_smile:" loading="lazy" width="20" height="20"></p>
<p>A cursor style zipper is one that is used like:</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">iex(1)&gt; new = fn -&gt; {[],[]} end
#Function&lt;20.52032458/0 in :erl_eval.expr/5&gt;
iex(2)&gt; move_left = fn {[l|x],r} -&gt; {x,[l|r]} end
#Function&lt;6.52032458/1 in :erl_eval.expr/5&gt;
iex(3)&gt; move_right = fn {l,[r|x]} -&gt; {[r|l],x} end
#Function&lt;6.52032458/1 in :erl_eval.expr/5&gt;
iex(4)&gt; get = fn {[l|_],_} -&gt; l end
#Function&lt;6.52032458/1 in :erl_eval.expr/5&gt;
iex(5)&gt; drop = fn {[_|l],r} -&gt; {l,r} end
#Function&lt;6.52032458/1 in :erl_eval.expr/5&gt;
iex(6)&gt; insert = fn({l,r},v) -&gt; {[v|l],r} end
#Function&lt;12.52032458/2 in :erl_eval.expr/5&gt;
iex(7)&gt; from_list = fn lst -&gt; {[],lst} end
#Function&lt;6.52032458/1 in :erl_eval.expr/5&gt;
iex(8)&gt; z = new.()
{[], []}
iex(9)&gt; z |&gt; insert.(1)
{[1], []}
iex(10)&gt; z = z |&gt; insert.(1)
{[1], []}
iex(11)&gt; z = z |&gt; insert.(2)
{[2, 1], []}
iex(12)&gt; z |&gt; get.()
2
iex(13)&gt; z = z |&gt; move_left.()
{[1], [2]}
iex(14)&gt; z |&gt; get.()
1
iex(15)&gt; z = z |&gt; drop.() |&gt; move_right.()
{[2], []}
iex(16)&gt; z |&gt; get.()
2
iex(17)&gt; z = from_list.([1,2,3,4,5,6])
{[], [1, 2, 3, 4, 5, 6]}
iex(18)&gt; z |&gt; move_right.() |&gt; move_right.() |&gt; drop.() |&gt; move_right.() |&gt; insert.(42) |&gt; move_left.() |&gt; move_left.() |&gt; move_left.()
{[], [1, 3, 42, 4, 5, 6]}
</code></pre>
<p>And there are tons and tons and tons of more styles that zipper’s are useful for including not just lists but as you hinted at also maps and other things.  A zipper can easily walk along every node in a deep map for example.  <img src="https://forum.elixirforum.com/images/emoji/apple/slight_smile.png?v=15" title=":slight_smile:" class="emoji" alt=":slight_smile:" loading="lazy" width="20" height="20"></p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="36537" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/elixir-needs-a-fifo-type/5701/24">Post #23</a>
	                </div>
	            </div>
              <div id="likers-container-36537" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="36537"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #23"></div>
  </section>
</div>
    <div class="postbit" id="36538" data-post-id="36538">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="Qqwy" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/Qqwy/120/1349_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  Qqwy
                  </h3>
		          </div>
						
			          <div class="user-title">
									<span>TypeCheck Core Team</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Isn’t a zipper sort of the opposite to a functional queue (giving you O(1) access to somewhere in the middle of a collection, whereas a queue gives you O(1) access to the front and back of the collection)?</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="36538" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/elixir-needs-a-fifo-type/5701/25">Post #24</a>
	                </div>
	            </div>
              <div id="likers-container-36538" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="36538"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #24"></div>
  </section>
</div>
    <div class="postbit" id="36546" data-post-id="36546">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="OvermindDL1" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/OvermindDL1/120/2677_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  OvermindDL1
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="Qqwy" data-post="25" data-topic="5701" data-full="true">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/qqwy/48/1349_2.png" class="avatar"> Qqwy:</div>
<blockquote>
<p>Isn’t a zipper sort of the opposite to a functional queue (giving you O(1) access to somewhere in the middle of a collection, whereas a queue gives you O(1) access to the front and back of the collection)?</p>
</blockquote>
</aside>
<p>It is yep.  Though you can finagle a queue into it by ‘inverting’ the queue so that the zipper point represent the beginning/end of the queue on each of its left/right sides like in my much earlier post.  <img src="https://forum.elixirforum.com/images/emoji/apple/slight_smile.png?v=15" title=":slight_smile:" class="emoji" alt=":slight_smile:" loading="lazy" width="20" height="20"></p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="36546" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/elixir-needs-a-fifo-type/5701/26">Post #25</a>
	                </div>
	            </div>
              <div id="likers-container-36546" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="36546"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #25"></div>
  </section>
</div>
    <div class="postbit" id="36547" data-post-id="36547">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="bglusman" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/bglusman/120/9459_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  bglusman
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Right!  Hence my idea of a zipper protocol that could compose any number of zipper-variant data structures and unify interface etc..  but I don’t have a practical use case so haven’t been substantially motivated to make it <img src="https://forum.elixirforum.com/images/emoji/apple/slight_smile.png?v=15" title=":slight_smile:" class="emoji" alt=":slight_smile:" loading="lazy" width="20" height="20"> I forget if I knew they were already all zippers or just that they could all be thought of as zippers, but I didn’t know of them before doing the exercism problem for it in elixir…  reminded me of lenses and <a href="https://github.com/nathanmarz/specter" rel="noopener nofollow ugc">nathan marz’ specter library</a> though IIRC those separate the zipper from the data it’s zipping so the same zipper can access any data in the same shape… Last i checked there were no lenses in Elixir, just a small <a href="https://groups.google.com/forum/#!topic/elixir-lang-core/HuxWcxeR7yQ" rel="noopener nofollow ugc">discussion with Jose</a> but that was a while ago and now it seems there are two! <a href="https://github.com/tpoulsen/focus" rel="noopener nofollow ugc">focus</a> and <a href="https://github.com/tycho01/elins" rel="noopener nofollow ugc">elins</a>, though I imagine that lenses are not as efficient as zippers, without looking at the implementation of either…</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="36547" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/elixir-needs-a-fifo-type/5701/27">Post #26</a>
	                </div>
	            </div>
              <div id="likers-container-36547" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="36547"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #26"></div>
  </section>
</div>
    <div class="postbit" id="36883" data-post-id="36883">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="Qqwy" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/Qqwy/120/1349_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  Qqwy
                  </h3>
		          </div>
						
			          <div class="user-title">
									<span>TypeCheck Core Team</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I’m in the process of building my own implementation of Queues and Deques in the (very much work-in-progress) library <a href="https://github.com/Qqwy/elixir_okasaki" rel="noopener nofollow ugc">okasaki</a>.</p>
<p>I now both have an amortized (with list reversing) and hard constant-time implementations of a single-ended queue and a double-ended queue, as well as implementations of Enumerable, Collectable and Inspect for them.</p>
<p>However, there are many functions of Enum that you cannot really use well with the queues, as your whole queue will be flattened to a single list. I’ll probably ending up re-writing 2/3 of the <code>Enum</code>-functions but then in a way that the part of the queue that is not consumed remains a queue. (Things like <code>map</code>, <code>take</code>, <code>take_while</code>, <code>drop</code>, <code>drop_while</code> etc).</p>
<p>It would be great if someone can review the implementations. I also think that benchmarking the two different approaches is (amortized, hard constant-time) for different sizes of queues is a good idea.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="36883" data-batch-url="/posts/batch_likers">
                        2
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/elixir-needs-a-fifo-type/5701/28">Post #27</a>
	                </div>
	            </div>
              <div id="likers-container-36883" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="36883"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #27"></div>
  </section>
</div>
    <div class="postbit" id="36894" data-post-id="36894">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="OvermindDL1" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/OvermindDL1/120/2677_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  OvermindDL1
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Cool, though I’m curious what a version of the queue and deque using a map would be like?  Basically have the keys be integers and also store a start and end value to look up the start and end of the queue/deque (either storing the start/end in the map or perhaps have a top-level tuple/record store that storage map and the start/end indexes).  I wonder how that would perform…</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="36894" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/elixir-needs-a-fifo-type/5701/29">Post #28</a>
	                </div>
	            </div>
              <div id="likers-container-36894" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="36894"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #28"></div>
  </section>
</div>
    <div class="postbit" id="36901" data-post-id="36901">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="sribe" src="/assets/icons/user-9f439610.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  sribe
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I’d had the same thought (tuple, hadn’t thought of storing the end values in the map). A hashmap has O(1) for all access, insert, delete. So the questions are: What’s the constant factor like compared to the amortized cost of the 2-list implementation, and how does garbage generation compare?</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="36901" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/elixir-needs-a-fifo-type/5701/30">Post #29</a>
	                </div>
	            </div>
              <div id="likers-container-36901" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="36901"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #29"></div>
  </section>
</div>
    <div class="postbit" id="36902" data-post-id="36902">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="Qqwy" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/Qqwy/120/1349_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  Qqwy
                  </h3>
		          </div>
						
			          <div class="user-title">
									<span>TypeCheck Core Team</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="OvermindDL1" data-post="29" data-topic="5701" data-full="true">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/overminddl1/48/2677_2.png" class="avatar"> OvermindDL1:</div>
<blockquote>
<p>Cool, though I’m curious what a version of the queue and deque using a map would be like?  Basically have the keys be integers and also store a start and end value to look up the start and end of the queue/deque (either storing the start/end in the map or perhaps have a top-level tuple/record store that storage map and the start/end indexes).  I wonder how that would perform…</p>
</blockquote>
</aside>
<p>In that case you are doing the  ‘map as pointers’-approach to get a data structure supporting fast random access of any elements inside. This is the approach that I took for the <a href="https://github.com/qqwy/tensor#vector" rel="noopener nofollow ugc">Vectors in the Tensor library</a>. Obviously the main drawback of this is that the data structure is bigger, and looking up elements in a map sequentially is still significantly slower than iterating over a list.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="36902" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/elixir-needs-a-fifo-type/5701/31">Post #30</a>
	                </div>
	            </div>
              <div id="likers-container-36902" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="36902"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #30"></div>
  </section>
</div>
    <div class="postbit" id="36903" data-post-id="36903">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="sergio" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/sergio/120/26966_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  sergio
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I’ve just been using Erlang’s <code>:queue</code> module. Works like a charm, and built in.</p>
<p><a href="https://github.com/sergiotapia/magnetissimo/pull/72/files#diff-c0b040e6dc65b53a4928373ee6442ff5R34" class="onebox" target="_blank" rel="noopener nofollow ugc">https://github.com/sergiotapia/magnetissimo/pull/72/files#diff-c0b040e6dc65b53a4928373ee6442ff5R34</a></p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="36903" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/elixir-needs-a-fifo-type/5701/32">Post #31</a>
	                </div>
	            </div>
              <div id="likers-container-36903" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="36903"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #31"></div>
  </section>
</div>
</template></turbo-stream><turbo-stream action="replace" target="load-more-container"><template><div id="load-more-container" class="load-more-container">
    <a class="load-more-button" data-turbo-stream="true" href="/topics/5701/load_more?page=4">Load more posts (7 remaining)</a>
</div></template></turbo-stream>