<turbo-stream action="append" target="posts_list"><template>    <div class="postbit" id="231806" data-post-id="231806">
  <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
                    <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 class="user-title">
									<span>TypeCheck Core Team</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p><a class="mention" href="/u/baldwindavid" rel="nofollow">@baldwindavid</a> 's explanation is nice and correct. (Thank you! <img src="https://forum.elixirforum.com/images/emoji/apple/green_heart.png?v=15" title=":green_heart:" class="emoji" alt=":green_heart:" loading="lazy" width="20" height="20"> )</p>
<p>TypeCheck cannot extract the types from already-compiled modules: types are stored in a completely different format inside the BEAM, are not always available, and are difficult to parse. Some libraries which are making steps in parsing them do exist (such as <a href="https://hex.pm/packages/mavis" rel="nofollow">Mavis</a>) although they are not very mature at this time and as such are not integrated with TypeCheck either.</p>
<p>For now, either add the types you’re using directly in your modules, or use the ‘remote type overrides’ as mentioned by <a class="mention" href="/u/baldwindavid" rel="nofollow">@baldwindavid</a>.<br>
My hope is that we will have integration with common libraries in the near future, but that will take some time/effort.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="231806" 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/typecheck-fast-and-flexible-runtime-type-checking-for-your-elixir-projects/32886/84">Post #83</a>
	                </div>
	            </div>
              <div id="likers-container-231806" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="231806"
                     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 #83"></div>
  </section>
</div>
    <div class="postbit" id="232602" data-post-id="232602">
  <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
                    <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 class="user-title">
									<span>TypeCheck Core Team</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Last time I announced a version was v0.10.1</p>
<p>Right now, we’re at <em>v0.10.4</em></p>
<p>As might be seen from the version numbers, there have not been any major changes, but there <em>have</em> been quite a few important bugfixes.</p>
<p>Please make sure you upgrade to the latest version <img src="https://forum.elixirforum.com/images/emoji/apple/blush.png?v=15" title=":blush:" class="emoji" alt=":blush:" loading="lazy" width="20" height="20">!</p>
<hr>
<p>More long-term plans right now are:</p>
<ul>
<li>to support <code>optional</code> and <code>required</code> in map-types (this is still in the conceptual phase, as it is quite the puzzle to figure out. Help is greatly appreciated!)</li>
<li>Optimize the current checks that are generated: To add type-check support for function-values, we had to modify the incoming value. For simple types the compiler is able to optimize all of that away if it is not used. However, for more complex types (like nested maps, lists or structs) the checks now reach a complexity where the compiler struggles. Instead, we could check whether a part of our current type might expect a function and if not, compile to a faster runtime typecheck that does not modify the incoming value, making the work of the compiler simpler and the resulting checks faster.</li>
<li>Once that is done, maybe some benchmarks? Main goals are to figure out other potential bottlenecks and to compare TypeCheck against other typing approaches in the current ecosystem.</li>
</ul> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="232602" data-batch-url="/posts/batch_likers">
                        4
                      </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/typecheck-fast-and-flexible-runtime-type-checking-for-your-elixir-projects/32886/85">Post #84</a>
	                </div>
	            </div>
              <div id="likers-container-232602" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="232602"
                     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 #84"></div>
  </section>
</div>
    <div class="postbit" id="232616" data-post-id="232616">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I’ve thought a <em>lot</em> about optional/required works, and I have to say, I don’t fully understand it.</p>
<p>There are a few gripes that I have:</p>
<ul>
<li>
<p>what does it mean to have a “required” key that is an aggregate type? (E.g. “required(atom)”). Does that mean there “must be at least one element of type atom?”. Required makes sense for literal types (e.g. numbers or literal atoms, empty set, empty map, maybe ranges but nothing else, imo.)</p>
</li>
<li>
<p>What happens when two optional types overlap (eg optional(integer), optional(1..10)? What if their targets are disjoint? Or what about an optional and a required literal? Like how structs have <code>required(:__struct__) =&gt; module</code> and <code>optional(atom) =&gt; any</code></p>
</li>
</ul>
<p>would love to hear what design decisions you make.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="232616" 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/typecheck-fast-and-flexible-runtime-type-checking-for-your-elixir-projects/32886/86">Post #85</a>
	                </div>
	            </div>
              <div id="likers-container-232616" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="232616"
                     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 #85"></div>
  </section>
</div>
    <div class="postbit" id="232619" data-post-id="232619">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p><a class="mention" href="/u/qqwy" rel="nofollow">@Qqwy</a> posted some ideas on this awhile back in an issue in the repo if you’re interested… <a href="https://github.com/Qqwy/elixir-type_check/issues/7#issuecomment-939363557" class="inline-onebox" rel="noopener nofollow ugc">Handle %{optional(type) =&gt; other_type} and other embellished map-syntaxes · Issue #7 · Qqwy/elixir-type_check · GitHub</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="232619" 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/typecheck-fast-and-flexible-runtime-type-checking-for-your-elixir-projects/32886/87">Post #86</a>
	                </div>
	            </div>
              <div id="likers-container-232619" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="232619"
                     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 #86"></div>
  </section>
</div>
    <div class="postbit" id="232620" data-post-id="232620">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>yeah the logic for this is really really hard.  I wound up treating it like a “function” in the mathematical set theory sense, and here is the code that I have, it’s full of math-ey terms in the comments and documentation:  <a href="https://github.com/ityonemo/mavis/blob/master/lib/type/map.ex" class="inline-onebox" rel="noopener nofollow ugc">mavis/lib/type/map.ex at master · ityonemo/mavis · GitHub</a>.  The union method is currently flawed, to do a proper union that solves for all possible union values you need a SAT solver.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="232620" 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/typecheck-fast-and-flexible-runtime-type-checking-for-your-elixir-projects/32886/88">Post #87</a>
	                </div>
	            </div>
              <div id="likers-container-232620" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="232620"
                     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 #87"></div>
  </section>
</div>
    <div class="postbit" id="232730" data-post-id="232730">
  <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
                    <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 class="user-title">
									<span>TypeCheck Core Team</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I’ve been thinking more about this.</p>
<p>Trying to support everything at once probably is a fool’s errand, for two reasons:</p>
<ol>
<li>It is very difficult to build this full implementation</li>
<li>The resulting runtime checks will by necessity be very slow.</li>
</ol>
<p>Instead, I think a better approach might be to add support for some common subpatterns (but not yet all of them).</p>
<p>Essentially:</p>
<ul>
<li><code>%{optional(k) =&gt; v}</code>: Could be supported right now as it is identical to TypeCheck’s nonstandard <code>map(k, v)</code>.</li>
<li><code>%{required(k) =&gt; v}</code>: Could be supported right now as it is identical to TypeCheck’s nonstandard <code>m :: map(k, v) when map_size(m) &gt;= 1</code>.</li>
<li><code>%{a: x, b: y, ..., optional(k) =&gt; v}</code>: Could be supported by:
<ul>
<li>Using the existing checks on all literal key-values</li>
<li>For all (if any) leftover key-values, check whether they match <code>k =&gt; v</code>.</li>
</ul>
</li>
<li>The approach in the previous bullet can also be used for any number of <code>required(  )</code> followed by a single <code>optional(  )</code> as long as all <code>required</code> types are literal types.</li>
</ul>
<p>We then explicitly do <strong>not</strong> (for now) support having multiple non-literal <code>required(  )</code> and/or multiple <code>optional(  )</code> in a single type. I think is OK because (a) such types are to my knowledge very rare and (b) again it is super difficult to implement checks for potentially-overlapping types efficiently; currently I know no better approach to match these than to check whether at least one solution exists in the cartesian product of (<code>keys × powerset(required_keytypes)</code>).</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="232730" 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/typecheck-fast-and-flexible-runtime-type-checking-for-your-elixir-projects/32886/89">Post #88</a>
	                </div>
	            </div>
              <div id="likers-container-232730" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="232730"
                     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 #88"></div>
  </section>
</div>
    <div class="postbit" id="232903" data-post-id="232903">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Essentially the problem is that dialyzer doesn’t support subtractive types (or even certain literal types).  I’d love to have a type that is like:</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">special_json :: %{
  required("foo") =&gt; integer,
  optional("bar") =&gt; number,
  optional(String.t / ("foo" | "bar")) =&gt; json
}
</code></pre> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="232903" 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/typecheck-fast-and-flexible-runtime-type-checking-for-your-elixir-projects/32886/90">Post #89</a>
	                </div>
	            </div>
              <div id="likers-container-232903" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="232903"
                     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 #89"></div>
  </section>
</div>
    <div class="postbit" id="241855" data-post-id="241855">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Hello,<br>
I try to add typeckeck to my project. Is there some kind of best practice when having to deal with deadlocks / circular dependencies?</p>
<p>Dealing with contexts in Phoenix is usual that top-level contexts communicate with each-other.<br>
In my case, I use lots of structs and end up with many deadlocks.</p>
<p>I know I could move the functions in one of the contexts, but I feel I’m ending up with a super context that deals with everything.</p>
<p>If we start then to add Ecto schemas under the top-level contexts and cross-reference them in between the contexts, results in even more deadlocks.</p>
<p>I know it is not a good design to cross-reference them but think of the classical Phoenix example with Author and Post. You may want to get the full list of posts in the Authors context, and the post author in the Posts context (simplistic example).</p>
<p>Can be considered an option to extract the type definition to their own file? Eg. <code>Autor.Type.t()</code> . I don’t really like it but just considering the options.</p>
<p>Thanks</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="241855" 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/typecheck-fast-and-flexible-runtime-type-checking-for-your-elixir-projects/32886/91">Post #90</a>
	                </div>
	            </div>
              <div id="likers-container-241855" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="241855"
                     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 #90"></div>
  </section>
</div>
    <div class="postbit" id="242251" data-post-id="242251">
  <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
                    <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 class="user-title">
									<span>TypeCheck Core Team</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>The main option to resolve the problem of cycles in types, is <a href="https://hexdocs.pm/type_check/TypeCheck.Builtin.html#lazy/1" rel="noopener nofollow ugc">lazy</a>. This has a slight performance overhead, but for most usage (and definitely for adding types to e.g. <code>has_one</code>/<code>has_many</code> fields in your Ecto schemas) it is good enough.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="242251" 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/typecheck-fast-and-flexible-runtime-type-checking-for-your-elixir-projects/32886/92">Post #91</a>
	                </div>
	            </div>
              <div id="likers-container-242251" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="242251"
                     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 #91"></div>
  </section>
</div>
    <div class="postbit" id="242265" data-post-id="242265">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Thanks. I was trying to avoid <code>lazy</code>, as I thought it is more of a design/concept issue on my side.<br>
For now, I managed to avoid it by extracting common top-level context types in a separate file. But maybe I will move them back to their modules and use <code>lazy</code> instead.</p>
<p>And I take this opportunity to thank you for this library!</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="242265" 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/typecheck-fast-and-flexible-runtime-type-checking-for-your-elixir-projects/32886/93">Post #92</a>
	                </div>
	            </div>
              <div id="likers-container-242265" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="242265"
                     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 #92"></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/32886/load_more?page=10">Load more posts (10 remaining)</a>
</div></template></turbo-stream>