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


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Seems there are a fair number of people concerned about community splits between those that opt into the new type system and those that don’t.</p>
<p>If that is addressed, there might be some useful precedence in a different community/ecosystem that might provide an analogue for us here: PHP.</p>
<p>When PHP first got popular it was just an imperative language.  Eventually it got pretty substantial, but opt-in, object oriented development features which I believe are the now the norm in the majority of professional level PHP applications.  I think what happened during that expansion of features and the community response to those features becoming available may be instructive in at least imagining what might happen with the set-theoretic type system and Elixir.</p>
<p>I should caveat this with I didn’t really live this PHP transition as a developer at all.  Being an enterprise guy, PHP was always on the periphery of the work I was involved in, but rarely something that had my direct attention.  In other words I could be off base in my thinking here.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="297846" 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/what-are-your-concerns-about-a-future-type-system-for-elixir/57525/89">Post #88</a>
	                </div>
	            </div>
              <div id="likers-container-297846" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="297846"
                     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="297988" data-post-id="297988">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I wonder if the type system will be powerful enough to allow catching three of the most common errors I encounter:</p>
<ul>
<li>getting <code>nil</code> where there shouldn’t be one</li>
<li><code>map.key</code> where map do not have the key</li>
<li>(ecto) <code>post.author.name</code> where <code>author</code> is not preloaded - (i.e. specify that a function requires <code>%Post{author: %Author{}}</code> and somehow make Repo.preload smart on the return type)</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="297988" data-batch-url="/posts/batch_likers">
                        9
                      </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/what-are-your-concerns-about-a-future-type-system-for-elixir/57525/90">Post #89</a>
	                </div>
	            </div>
              <div id="likers-container-297988" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="297988"
                     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="297993" data-post-id="297993">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I think a dynamic-typed language + gradual type system is a perfect combination. And my concerns:</p>
<ol>
<li>Will the type system take TOO long to be done (and complete)?</li>
<li>Will the type system too complicated like TypeScript’s advanced usage? I wish the Elixir types like it’s language design - simple, precise, not too magic.</li>
<li>I hope the type syntax to be more like language syntax, the experimental syntax in the paper is a little strange to me. But with strong reason I can accept it.</li>
</ol> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="297993" 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/what-are-your-concerns-about-a-future-type-system-for-elixir/57525/91">Post #90</a>
	                </div>
	            </div>
              <div id="likers-container-297993" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="297993"
                     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="298031" data-post-id="298031">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p><strong>Colocation</strong><br>
I am unsure what the trade-off would be in colocating the types externally to the function and data structure definition. I do not mind that much <code>@spec</code>, although annoying having to type the name in the <code>@spec</code> and the function definition (things like that that encourage bikeshedding and are so predominant when daily coding).<br>
When it comes to <code>@type</code> and maps, I definitely prefer having something colocated. In an ideal scenario,  the type system could replace/enhance <code>defstruct</code>.</p>
<p><strong>Complexity</strong><br>
Hopefully, it will not be as complex as the TypeScript type system, where we end up coding rules inside of it. I lean more towards simple unions and data types and avoid anything to do with the content of the types.</p>
<p><strong>Scapegoat</strong><br>
When in trouble, <code>type: unknown</code> I do it myself should be enough <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"> so hopefully, it could incrementally add it to codebases.</p>
<p><strong>Type Casting</strong><br>
Respecting that <code>type Nickname string</code> is not the same as <code>string</code> is extremely valuable when you want to enforce a Factory Function to create a Value Object, if there is only one way to create the <code>Nickname</code> type then I guarantee that people are not bypassing the factories that enforce correctness.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="298031" 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/what-are-your-concerns-about-a-future-type-system-for-elixir/57525/92">Post #91</a>
	                </div>
	            </div>
              <div id="likers-container-298031" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="298031"
                     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="298080" data-post-id="298080">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>When are types enforced? If they blow up in dev and not prod that’s a win.</p>
<p>One of the initial goals of Erlang was hot reloading. afaik this is why types didn’t make the cut the first time. Hot reloading is still possible in Elixir even if it’s not the blessed path. I wouldn’t want to erode that further.</p>
<p>If hot reloading is no longer supported that’s a significant break from Erlang.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="298080" 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/what-are-your-concerns-about-a-future-type-system-for-elixir/57525/93">Post #92</a>
	                </div>
	            </div>
              <div id="likers-container-298080" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="298080"
                     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>
    <div class="postbit" id="298083" data-post-id="298083">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>My concerns, memified:</p>
<ol>
<li>Ignoring the Type system.<br>
<div class="lightbox-wrapper"><a class="lightbox" href="https://forum.elixirforum.com/uploads/default/original/3X/d/7/d768573c7c3acac6a7b28766f01f01407372b008.jpeg" data-download-href="https://forum.elixirforum.com/uploads/default/d768573c7c3acac6a7b28766f01f01407372b008" title="image" rel="nofollow"><img src="https://forum.elixirforum.com/uploads/default/original/3X/d/7/d768573c7c3acac6a7b28766f01f01407372b008.jpeg" alt="image" data-base62-sha1="uJAcIOQNGcJOPAGiygHZcXzxX7y" width="371" height="355"><div class="meta"><svg class="fa d-icon d-icon-far-image svg-icon" aria-hidden="true"><use href="#far-image"></use></svg><span class="filename">image</span><span class="informations">495×474 25.9 KB</span><svg class="fa d-icon d-icon-discourse-expand svg-icon" aria-hidden="true"><use href="#discourse-expand"></use></svg></div></a></div></li>
<li>Using any for datatype.<br>
<div class="lightbox-wrapper"><a class="lightbox" href="https://forum.elixirforum.com/uploads/default/original/3X/f/4/f4abbb7f9d2451df46024e6d5eeecbb3178363e0.jpeg" data-download-href="https://forum.elixirforum.com/uploads/default/f4abbb7f9d2451df46024e6d5eeecbb3178363e0" title="image" rel="nofollow"><img src="https://forum.elixirforum.com/uploads/default/original/3X/f/4/f4abbb7f9d2451df46024e6d5eeecbb3178363e0.jpeg" alt="image" data-base62-sha1="yUsr8SxXSFZpUvG0pVxOlRC3R0A" width="372" height="450"><div class="meta"><svg class="fa d-icon d-icon-far-image svg-icon" aria-hidden="true"><use href="#far-image"></use></svg><span class="filename">image</span><span class="informations">631×761 43.5 KB</span><svg class="fa d-icon d-icon-discourse-expand svg-icon" aria-hidden="true"><use href="#discourse-expand"></use></svg></div></a></div></li>
<li>Generics.<br>
<div class="lightbox-wrapper"><a class="lightbox" href="https://forum.elixirforum.com/uploads/default/original/3X/2/6/265f950c4cae97834e780a12b5c6ce5820cfa0c3.jpeg" data-download-href="https://forum.elixirforum.com/uploads/default/265f950c4cae97834e780a12b5c6ce5820cfa0c3" title="image" rel="nofollow"><img src="https://forum.elixirforum.com/uploads/default/original/3X/2/6/265f950c4cae97834e780a12b5c6ce5820cfa0c3.jpeg" alt="image" data-base62-sha1="5tsVwBseCzKWYQGLSoRjFrQG4qn" width="295" height="260"><div class="meta"><svg class="fa d-icon d-icon-far-image svg-icon" aria-hidden="true"><use href="#far-image"></use></svg><span class="filename">image</span><span class="informations">591×521 27.8 KB</span><svg class="fa d-icon d-icon-discourse-expand svg-icon" aria-hidden="true"><use href="#discourse-expand"></use></svg></div></a></div></li>
</ol>
<p>P.S. Please don’t remove the memes, they add color to the end of discussion. <img src="https://forum.elixirforum.com/images/emoji/apple/upside_down_face.png?v=15" title=":upside_down_face:" class="emoji" alt=":upside_down_face:" 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="298083" data-batch-url="/posts/batch_likers">
                        12
                      </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/what-are-your-concerns-about-a-future-type-system-for-elixir/57525/94">Post #93</a>
	                </div>
	            </div>
              <div id="likers-container-298083" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="298083"
                     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 #93"></div>
  </section>
</div>
    <div class="postbit" id="298090" data-post-id="298090">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="josevalim" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/josevalim/120/1787_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  josevalim
                    <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>Creator of Elixir</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Thank you everyone for sharing your concerns/worries. <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"> If folks want to continue the conversation in a new thread, you are more than welcome! Meanwhile this is more than enough to cover the most common concerns during my presentation, thank you! <img src="https://forum.elixirforum.com/images/emoji/apple/smiley.png?v=15" title=":smiley:" class="emoji" alt=":smiley:" 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="298090" data-batch-url="/posts/batch_likers">
                        24
                      </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/what-are-your-concerns-about-a-future-type-system-for-elixir/57525/96">Post #95</a>
	                </div>
	            </div>
              <div id="likers-container-298090" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="298090"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-last-post cat-last-post" title="Last post!"></div>
  </section>
</div>
</template></turbo-stream><turbo-stream action="replace" target="load-more-container"><template><div id="load-more-container" class="load-more-container">
    <span class="all-loaded">— All posts loaded —</span>
</div></template></turbo-stream>