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


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I think you are discussing about a feature that nowadays compilers have, full type inference. The idea is not far away from how dialyzer success typing works, but it is more constrained. I think an example is in order to make it more clear:</p>
<p>Example 1:</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">a = 30
b = add_three(a)

# This should display an error at compile-time, because the inferred type is number
List.first(b)

# This also should display an error at compile-time, because from operation number + 3 can be inferred that the parameter is a number
add_three("sad string")

fun add_three(number) do
  number + 3
end
</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="298741" 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/types-n-testing/57577/42">Post #41</a>
	                </div>
	            </div>
              <div id="likers-container-298741" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="298741"
                     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 #41"></div>
  </section>
</div>
    <div class="postbit" id="298742" data-post-id="298742">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="adw632" src="/assets/icons/user-9f439610.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  adw632
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>You asked for an <em>example</em> and I provided the closest <em>example</em> that exists for BEAM languages where <strong>type inferencing</strong> is strictly better than static type declarations.</p>
<p><a class="mention" href="/u/dimitarvp" rel="nofollow">@dimitarvp</a> You’re arguing on an unfair basis and <em>purposely</em> missing the point.</p>
<p>Gleam uses <em>type inferences</em> to obtain <strong>strong typing</strong> which <strong>is the point I am trying to make</strong> as something <em>similar</em> to but not <em>identical</em> to what I am describing (as I also want value constraint checking).</p>
<p>In Gleam, type annotations or declarations are <em>not</em> required, the types are not <em>static</em> in the sense they don’t have to be <em>statically</em> declared by the developer and even if used, they don’t actually influence the type inferencing whatsoever, the compiler knows despite what decorations you use. The code is therefore <em>amenable</em> to a change in types without refactoring because it’s not an echo chamber of repeat yourself  static type declarations on everything.</p>
<p>It is telling that you have expressed numerous times that you live in a land of refactoring hell and your reaction was one of incredulousness that refactoring was not of any consequence to me within my development.</p>
<p>Understand that brittleness actually <em>emerges</em> from static type declarations and it <em>begets</em> more code and a lot more code churn. Add <em>throws</em> onto things, <em>async</em> and all the type ceremony that inferior languages do and sure, life is a refactoring nightmare. I avoid these tarpits and I don’t want Elixir sliding down this slippery slope into the tar either.</p>
<p>I don’t think I have said it enough, as clearly it did not get through:</p>
<p><strong>I do not want to be reminding the compiler what the type or value constraint is all over my code, I want strong typing and value constraint <em>inferencing</em> without the developer overhead or <em>effort</em> of manually maintained static types.</strong></p>
<p>You disagree with the above it seems.</p>
<p>I simply want <em>more</em> checking than you, for much less effort and I do not want the Elixir language being ruined through well intentioned but brittle static type declarations which you seem to think is the <em>only way</em>.</p>
<p>Elixir <em>typespecs</em> and <em>specs</em> are already an eyesore and overhead that I cannot wait to be rid of with type inferencing.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="298742" 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/types-n-testing/57577/43">Post #42</a>
	                </div>
	            </div>
              <div id="likers-container-298742" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="298742"
                     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 #42"></div>
  </section>
</div>
    <div class="postbit" id="298743" data-post-id="298743">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="adw632" data-post="43" data-topic="57577">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/letter_avatar_proxy/v4/letter/a/9d8465/48.png" class="avatar"> adw632:</div>
<blockquote>
<p>In Gleam, type annotations or declarations are <em>not</em> required, the types are not <em>static</em> in the sense they don’t have to be <em>statically</em> declared by the developer and even if used, they don’t actually influence the type inferencing whatsoever, the compiler knows despite what decorations you use.</p>
</blockquote>
</aside>
<p>I guess it’s a problem of differing terminology but I don’t see what Gleam has to do with strong typing as it compiles to Erlang (strong typing) and JavaScript (weak typing), at least in the traditional meaning of the terms. But the type inference in Gleam is not complete and the compiler asks you to add types if it can’t deduce what you are doing.</p>
<p>If we look at some real Gleam code I wrote: <a href="https://gitlab.com/Nicd/glemplate/-/blob/5fae861c8649506405e88c5b79214979a20c8b85/src/glemplate/renderer.gleam" class="inline-onebox" rel="noopener nofollow ugc">src/glemplate/renderer.gleam · 5fae861c8649506405e88c5b79214979a20c8b85 · Mikko Ahlroth / Glemplate · GitLab</a></p>
<p>We can see that mostly the types can be left out in two cases: variable assignment and return values. These can usually be inferred by the compiler, but it’s still very much static typing, since static typing is not an alternative to type inference (Gleam has <em>both</em>).</p>
<p>If you want type inference that can guarantee that the compiler knows what types your variables / arguments / return values are, then it sounds to me that you want static typing with type inference, like Gleam or TypeScript do. I’m not sure type inference can meaningfully be done without static typing – we have surely seen with Erlang and Elixir that Dialyzer is not enough, and misses very obvious error cases (as it just doesn’t have enough information).</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="298743" data-batch-url="/posts/batch_likers">
                        3
                      </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/types-n-testing/57577/44">Post #43</a>
	                </div>
	            </div>
              <div id="likers-container-298743" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="298743"
                     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 #43"></div>
  </section>
</div>
    <div class="postbit" id="298745" data-post-id="298745">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="adw632" data-post="43" data-topic="57577">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/letter_avatar_proxy/v4/letter/a/9d8465/48.png" class="avatar"> adw632:</div>
<blockquote>
<p>It is telling that you have expressed numerous times that you live in a land of refactoring hell and your reaction was one of incredulousness that refactoring was not of any consequence to me within my development.</p>
</blockquote>
</aside>
<p>I have never said that I “live in refactoring hell”. Why do you feel the need to invent stories to make a point?</p>
<aside class="quote no-group" data-username="adw632" data-post="43" data-topic="57577">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/letter_avatar_proxy/v4/letter/a/9d8465/48.png" class="avatar"> adw632:</div>
<blockquote>
<p><strong>I do not want to be reminding the compiler what the type or value constraint is all over my code, I want strong typing and value constraint <em>inferencing</em> without the developer overhead or <em>effort</em> of manually maintained static types.</strong></p>
</blockquote>
</aside>
<p>This is the case in Rust and OCaml at least and other newer languages are going the same route.</p>
<p>You seem to be saying “I don’t want languages without type inference” which is OK. Who is fighting you on this and why do you feel the need to emphasize it as much? <img src="https://forum.elixirforum.com/images/emoji/apple/thinking.png?v=15" title=":thinking:" class="emoji" alt=":thinking:" loading="lazy" width="20" height="20"></p>
<aside class="quote no-group" data-username="adw632" data-post="43" data-topic="57577">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/letter_avatar_proxy/v4/letter/a/9d8465/48.png" class="avatar"> adw632:</div>
<blockquote>
<p><a class="mention" href="/u/dimitarvp" rel="nofollow">@dimitarvp</a> You’re arguing on an unfair basis and <em>purposely</em> missing the point.</p>
</blockquote>
</aside>
<p>He we will have to agree to disagree. You have (1) repeatedly ignored an important discussion point that I made – namely that you are putting two techniques on an arena and are looking at which one is better, and I asked why not use both? – then (2) you go on lengthy diatribes claiming your opinions as fact, and finally (3) you say I argue in bad faith.</p>
<p>I mean OK, if it makes you feel better. ¯_(ツ)_/¯</p>
<p>I will disengage because this is not productive at all. You don’t seem to be responding to me, you are responding to things that bothered you long before you engaged in this thread. And you fixated on me as if I am everything wrong with programming these days. <img src="https://forum.elixirforum.com/images/emoji/apple/sweat_smile.png?v=15" title=":sweat_smile:" class="emoji" alt=":sweat_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="298745" 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/types-n-testing/57577/45">Post #44</a>
	                </div>
	            </div>
              <div id="likers-container-298745" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="298745"
                     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 #44"></div>
  </section>
</div>
    <div class="postbit" id="298746" data-post-id="298746">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Yep I know what type inferencing is, and I agree with <a class="mention" href="/u/nicd" rel="nofollow">@Nicd</a> that it’s difficult or impossible to achieve it without actual static typing.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="298746" 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/types-n-testing/57577/46">Post #45</a>
	                </div>
	            </div>
              <div id="likers-container-298746" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="298746"
                     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 #45"></div>
  </section>
</div>
    <div class="postbit" id="298747" data-post-id="298747">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="Nicd" data-post="44" data-topic="57577">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/nicd/48/2357_2.png" class="avatar"> Nicd:</div>
<blockquote>
<p>I don’t see what Gleam has to do with strong typing as it compiles to Erlang (strong typing) and JavaScript (weak typing)</p>
</blockquote>
</aside>
<p>The thing that it compiles to doesn’t matter, the actual enforcement and type inference happens inside the gleam → erlang compilator, so the only question is how constrained the language is.</p>
<aside class="quote no-group" data-username="dimitarvp" data-post="46" data-topic="57577" 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/dimitarvp/48/38664_2.png" class="avatar"> dimitarvp:</div>
<blockquote>
<p>Yep I know what type inferencing is, and I agree with <a class="mention" href="/u/nicd" rel="nofollow">@Nicd</a> that it’s difficult or impossible to achieve it without actual static typing.</p>
</blockquote>
</aside>
<p>It’s impossible, the best you can get is what dialyzer currently offers. I think the argument shifted at some point from arguing about the usefulness of static typing, to the boilerplate the classical static typing implementation creates in function definitions.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="298747" 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/types-n-testing/57577/47">Post #46</a>
	                </div>
	            </div>
              <div id="likers-container-298747" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="298747"
                     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 #46"></div>
  </section>
</div>
    <div class="postbit" id="298750" data-post-id="298750">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group quote-modified" data-username="D4no0" data-post="47" data-topic="57577">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/d4no0/48/33624_2.png" class="avatar"> D4no0:</div>
<blockquote>
<aside class="quote no-group" data-username="Nicd" data-post="44" data-topic="57577">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/nicd/48/2357_2.png" class="avatar"> Nicd:</div>
<blockquote>
<p>I don’t see what Gleam has to do with strong typing as it compiles to Erlang (strong typing) and JavaScript (weak typing)</p>
</blockquote>
</aside>
<p>The thing that it compiles to doesn’t matter, the actual enforcement and type inference happens inside the gleam → erlang compilator, so the only question is how constrained the language is.</p>
</blockquote>
</aside>
<p>On further thinking you are of course correct here. <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="298750" 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/types-n-testing/57577/48">Post #47</a>
	                </div>
	            </div>
              <div id="likers-container-298750" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="298750"
                     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 #47"></div>
  </section>
</div>
    <div class="postbit" id="298751" data-post-id="298751">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="D4no0" data-post="47" data-topic="57577">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/d4no0/48/33624_2.png" class="avatar"> D4no0:</div>
<blockquote>
<p>boilerplate the classical static typing implementation creates in function definitions.</p>
</blockquote>
</aside>
<p>That boilerplate is very overrated at least in Rust and OCaml (can’t remember about Haskell). Gleam seems quite concise as well.</p>
<p>To call adding a single word to a function argument “boilerplate” is a bit unfair.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="298751" 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/types-n-testing/57577/49">Post #48</a>
	                </div>
	            </div>
              <div id="likers-container-298751" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="298751"
                     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 #48"></div>
  </section>
</div>
    <div class="postbit" id="298753" data-post-id="298753">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="benwilson512" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/benwilson512/120/1457_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  benwilson512
                  </h3>
		          </div>
						
			          <div class="user-title">
									<span>Author of Craft GraphQL APIs in Elixir with Absinthe</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>There is no need to employ personal attacks here. It’s frustrating when people don’t get your point, but please remain respectful.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="298753" 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/types-n-testing/57577/50">Post #49</a>
	                </div>
	            </div>
              <div id="likers-container-298753" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="298753"
                     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 #49"></div>
  </section>
</div>
    <div class="postbit" id="298754" data-post-id="298754">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>If the current compiler technology is capable of doing this without you having to write signatures to every function you do, then I would always go for inference over defining the type in the signature. You don’t lose any benefits of static typing and at the same time you don’t have the verbosity of redefining types that people hate.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="298754" 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/types-n-testing/57577/51">Post #50</a>
	                </div>
	            </div>
              <div id="likers-container-298754" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="298754"
                     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 #50"></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/57577/load_more?page=6">Load more posts (16 remaining)</a>
</div></template></turbo-stream>