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


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Hah! I’m aware of the short hand, but I’m not a big fan. I find that it makes code less readable, unless its very obvious.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="102578" 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/what-would-you-remove-from-elixir/5622/62">Post #61</a>
	                </div>
	            </div>
              <div id="likers-container-102578" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="102578"
                     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 #61"></div>
  </section>
</div>
    <div class="postbit" id="102776" data-post-id="102776">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="mmport80" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/mmport80/120/8995_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  mmport80
                    <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>Shouldn’t <code>for</code> just be <code>map</code>?</p>
<p>As for <code>|&gt;</code> perhaps being able to define infix operaters would avoid the need for that macro..</p>
<p>e.g. something like <code>(|&gt;) x f =  f  x</code></p>
<p>Which uses a far, far less powerful language construct to achieve the same thing..</p>
<p>Structs should probably just be a first class part of Elixir. I don’t seem why they need to be a macro.</p>
<p>The problem with compile time DSL’s is that most of the time they seem more of a hindrance than a feature.</p>
<p>I like Ecto for example, but my colleagues complain about it or avoid using it completely - mainly I reckon, because of the macro interface.</p>
<p>Functional programming is about simplicity.</p>
<p>Macros seem to obfuscate mostly when obfuscation isn’t perhaps necessary.</p>
<p>Sure functional composition can be overly verbose now and then, but at least it’s explicit..</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="102776" 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-would-you-remove-from-elixir/5622/63">Post #62</a>
	                </div>
	            </div>
              <div id="likers-container-102776" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="102776"
                     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 #62"></div>
  </section>
</div>
    <div class="postbit" id="102780" data-post-id="102780">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="mmport80" data-post="63" data-topic="5622">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/mmport80/48/8995_2.png" class="avatar"> mmport80:</div>
<blockquote>
<p>Shouldn’t <code>for</code> just be <code>map</code> ?</p>
</blockquote>
</aside>
<p><code>for</code> is much more than <code>Enum.map</code>. It is list comprehension so you can filter there, do multiple iterations at once, etc. For example this is example with map:</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">Enum.flat_map(1..10, fn a -&gt;
  Enum.map(1..10, fn b -&gt;
    {a, b, a * b}
  end)
end)
</code></pre>
<p>And this is example with <code>for</code>:</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">for a &lt;- 1..10,
    b &lt;- 1..10,
    do: {a, b, a * b}
</code></pre>
<aside class="quote no-group quote-modified" data-username="mmport80" data-post="63" data-topic="5622">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/mmport80/48/8995_2.png" class="avatar"> mmport80:</div>
<blockquote>
<p>As for <code>|&gt;</code> perhaps being able to define infix operaters would avoid the need for that macro…</p>
<p>e.g. something like <code>(|&gt;) x f = f x</code></p>
</blockquote>
</aside>
<p>Elixir has bound set of possible infix operators. Maybe that could be lifted, but I think it would greatly complicate the parser.</p>
<aside class="quote no-group" data-username="mmport80" data-post="63" data-topic="5622">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/mmport80/48/8995_2.png" class="avatar"> mmport80:</div>
<blockquote>
<p>Structs should probably just be a first class part of Elixir. I don’t seem why they need to be a macro.</p>
</blockquote>
</aside>
<p>Because BEAM do not have structs at all, only maps (since OTP 18). All structures are in fact just special examples of maps, and macros are needed to handle all Elixir’s magic around them.</p>
<aside class="quote no-group quote-modified" data-username="mmport80" data-post="63" data-topic="5622">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/mmport80/48/8995_2.png" class="avatar"> mmport80:</div>
<blockquote>
<p>Functional programming is about simplicity.</p>
<p>Macros seem to obfuscate mostly when obfuscation isn’t perhaps necessary.</p>
<p>Sure functional composition can be overly verbose now and then, but at least it’s explicit…</p>
</blockquote>
</aside>
<p>Unfortunately there are things you cannot do without macros, or things that looks ugly when macros aren’t available. As impossible things let’s see at the Ecto example: within “pure” Elixir <code>fragment</code> is impossible in current form, you would need to pass an list as a second argument. While we can argue that it could simplify some things it would make one thing impossible - compile time errors for missing arguments.</p>
<p>About ugly things. Do you remember using nested <code>case</code> when there were no <code>with</code> available? It was super ugly. Or how about our nice friend <code>in</code>? <code>def foo(a) when a in 1..10</code> is quite simple, but how about <code>def bar(a) when a in ~w[a b c d e f]a</code>? You would need to write <code>def bar(a) when a == :a or a == :b or a == :c or a == :d or a == :e or a == :f</code>. Super nice. Also remember that Elixir is built on macros, <code>if</code> is a macro, <code>in</code> is a macro, <code>use</code> is a macro, <code>alias</code> is a macro, <code>def</code> is a macro, <code>defmodule</code> is a macro… almost everything is a macro, so writing code without macros would be terrible experience.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="102780" 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-would-you-remove-from-elixir/5622/64">Post #63</a>
	                </div>
	            </div>
              <div id="likers-container-102780" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="102780"
                     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 #63"></div>
  </section>
</div>
    <div class="postbit" id="102789" data-post-id="102789">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="mmport80" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/mmport80/120/8995_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  mmport80
                    <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 suppose I would argue that there’s a bunch of macro stuff which is great for language designers but prob not good for library designers.</p>
<p>I and many ppl using Elixir have 2 responses when using macro based <strong>libraries</strong>:</p>
<p>At first → cool, this looks appealing</p>
<p>Sometime later → <br>
this API isn’t v clear to me<br>
this error message is pretty cryptic</p>
<p>I love <code>with</code> etc.</p>
<p>But agree strongly with the beginner’s guide caution about macros: i.e. “use with caution”.</p>
<p>So much so, that they should be seen as bad practice unless you are Mr. Valim (a little extreme, but not far from it… ; ))</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="102789" 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-would-you-remove-from-elixir/5622/65">Post #64</a>
	                </div>
	            </div>
              <div id="likers-container-102789" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="102789"
                     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 #64"></div>
  </section>
</div>
    <div class="postbit" id="102796" data-post-id="102796">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>That is different thing. In general I would also advise to not use macros unless you know what you are doing and that you know you can handle that. I have written some libraries that heavily utilise macros (<code>ecto_function</code>) but also I have removed a lot of macros from libraries that didn’t needed that (<code>prometheus_ex</code>). So macros are great, but you shouldn’t write one yourself.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="102796" 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-would-you-remove-from-elixir/5622/66">Post #65</a>
	                </div>
	            </div>
              <div id="likers-container-102796" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="102796"
                     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 #65"></div>
  </section>
</div>
    <div class="postbit" id="102798" data-post-id="102798">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="mmport80" data-post="65" data-topic="5622">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/mmport80/48/8995_2.png" class="avatar"> mmport80:</div>
<blockquote>
<p>But agree strongly with the beginner’s guide caution about macros: i.e. “<strong>use with caution</strong>”.</p>
</blockquote>
</aside>
<p><a href="https://elixir-lang.org/getting-started/meta/macros.html#foreword" rel="nofollow"><em>So write macros responsibly.</em></a></p>
<p><a href="https://youtu.be/Bo48sQDb-hk?list=PLqj39LCvnOWZMVugtyKlHMF1o2zPNntFL" rel="noopener nofollow ugc"><strong>Don’t Write Macros</strong> <em>But Do Learn How They Work</em></a> Jesse Anderson, ElixirConf 2017</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="102798" 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/what-would-you-remove-from-elixir/5622/67">Post #66</a>
	                </div>
	            </div>
              <div id="likers-container-102798" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="102798"
                     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 #66"></div>
  </section>
</div>
    <div class="postbit" id="102865" data-post-id="102865">
  <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="mmport80" data-post="63" data-topic="5622">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/mmport80/48/8995_2.png" class="avatar"> mmport80:</div>
<blockquote>
<p>Shouldn’t <code>for</code> just be <code>map</code> ?</p>
</blockquote>
</aside>
<p>No, it’s closer to reduce but more succinct.</p>
<aside class="quote no-group quote-modified" data-username="mmport80" data-post="63" data-topic="5622">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/mmport80/48/8995_2.png" class="avatar"> mmport80:</div>
<blockquote>
<p>e.g. something like <code>(|&gt;) x f = f x</code></p>
<p>Which uses a far, far less powerful language construct to achieve the same thing…</p>
</blockquote>
</aside>
<p>I agree, but Elixir prepends arguments instead of post-pends and it doesn’t handle anonymous functions cleanly like that.</p>
<aside class="quote no-group" data-username="mmport80" data-post="63" data-topic="5622">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/mmport80/48/8995_2.png" class="avatar"> mmport80:</div>
<blockquote>
<p>Structs should probably just be a first class part of Elixir. I don’t seem why they need to be a macro.</p>
</blockquote>
</aside>
<p>I personally don’t know why they are maps, they should be tagged tuples on the beam, that is the usual ‘structural’ type after all…  &gt;.&gt;</p>
<p>They should instead be called row-typed records or ‘objects’ (not OOP objects).</p>
<aside class="quote no-group" data-username="mmport80" data-post="63" data-topic="5622">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/mmport80/48/8995_2.png" class="avatar"> mmport80:</div>
<blockquote>
<p>I like Ecto for example, but my colleagues complain about it or avoid using it completely - mainly I reckon, because of the macro interface.</p>
</blockquote>
</aside>
<p>They should really look closer at it, that interfaces gains you a lot of safety and features that is not otherwise possible via a lower level SQL interface.</p>
<aside class="quote no-group" data-username="mmport80" data-post="63" data-topic="5622">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/mmport80/48/8995_2.png" class="avatar"> mmport80:</div>
<blockquote>
<p>Macros seem to obfuscate mostly when obfuscation isn’t perhaps necessary.</p>
</blockquote>
</aside>
<p>Not always, macro’s allow you to add to the language that which it is not otherwise capable of as efficiently or at all.</p>
<aside class="quote no-group" data-username="hauleth" data-post="64" data-topic="5622">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/hauleth/48/18942_2.png" class="avatar"> hauleth:</div>
<blockquote>
<p>Maybe that could be lifted, but I think it would greatly complicate the parser.</p>
</blockquote>
</aside>
<p>No, it already can be that, the issue is that using it would then require doing <code>42 |&gt; &amp;someFunction(&amp;1, 1, 2)</code>.  <code>|&gt;</code> is a normal infix operator, you can implement it as a normal function or as an operator, it works fine either way, but by using a macro it allows a more ‘normal’ function call syntax, even though honestly I would rather kind of prefer the currying syntax, but you’d have to hope it gets optimized out, and honestly it probably wouldn’t (though a macro could fix that).</p>
<aside class="quote no-group" data-username="hauleth" data-post="64" data-topic="5622">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/hauleth/48/18942_2.png" class="avatar"> hauleth:</div>
<blockquote>
<p>Because BEAM do not have structs at all, only maps (since OTP 18). All structures are in fact just special examples of maps, and macros are needed to handle all Elixir’s magic around them.</p>
</blockquote>
</aside>
<p>Structs and Records should have just been the same thing, a set of tagged tuples with information compiled into a module for introspection about it.</p>
<aside class="quote no-group" data-username="hauleth" data-post="64" data-topic="5622">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/hauleth/48/18942_2.png" class="avatar"> hauleth:</div>
<blockquote>
<p>About ugly things. Do you remember using nested <code>case</code> when there were no <code>with</code> available? It was super ugly. Or how about our nice friend <code>in</code> ? <code>def foo(a) when a in 1..10</code> is quite simple, but how about <code>def bar(a) when a in ~w[a b c d e f]a</code> ? You would need to write <code>def bar(a) when a == :a or a == :b or a == :c or a == :d or a == :e or a == :f</code> . Super nice. Also remember that Elixir is built on macros, <code>if</code> is a macro, <code>in</code> is a macro, <code>use</code> is a macro, <code>alias</code> is a macro, <code>def</code> is a macro, <code>defmodule</code> is a macro… almost everything is a macro, so writing code without macros would be terrible experience.</p>
</blockquote>
</aside>
<p>Eh technically some of those are special forms, although <code>with</code> could have been implemented with a better syntax as a macro in my opinion…  &gt;.&gt;</p>
<aside class="quote no-group" data-username="mmport80" data-post="65" data-topic="5622">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/mmport80/48/8995_2.png" class="avatar"> mmport80:</div>
<blockquote>
<p>I love <code>with</code> etc.</p>
</blockquote>
</aside>
<p>I don’t, the comma-turds (erlang’ism) littering it’s expressions and the formatter making it look horrid are two big issues I have with it, both of which significantly harm readability for me (maybe not others, but for me, the formatter is just so bad on it…).  I only use it to not pull in other libraries (that do it better) to reduce the dependencies I use.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="102865" 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-would-you-remove-from-elixir/5622/68">Post #67</a>
	                </div>
	            </div>
              <div id="likers-container-102865" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="102865"
                     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 #67"></div>
  </section>
</div>
    <div class="postbit" id="102916" data-post-id="102916">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="mmport80" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/mmport80/120/8995_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  mmport80
                    <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">
								<aside class="quote no-group" data-username="OvermindDL1" data-post="68" data-topic="5622">
<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>No, it’s closer to reduce but more succinct.</p>
</blockquote>
</aside>
<p>everything is just a reduce ; ) but i was messing around with maps with a colleague, and saw the map is a much closer analogy</p>
<aside class="quote no-group" data-username="OvermindDL1" data-post="68" data-topic="5622">
<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>They should really look closer at it, that interfaces gains you a lot of safety and features that is not otherwise possible via a lower level SQL interface.</p>
</blockquote>
</aside>
<p>agreed!</p>
<aside class="quote no-group" data-username="OvermindDL1" data-post="68" data-topic="5622">
<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>Not always, macro’s allow you to add to the language that which it is not otherwise capable of as efficiently or at all.</p>
</blockquote>
</aside>
<p>thing is, <em>random_library_authors</em> think they knew some new language feature that will solve our woes - mostly not the case : (</p>
<aside class="quote no-group" data-username="OvermindDL1" data-post="68" data-topic="5622">
<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>I don’t, the comma-turds (erlang’ism) littering it’s expressions and the formatter making it look horrid are two big issues I have with it, both of which significantly harm readability for me (maybe not others, but for me, the formatter is just so bad on it…). I only use it to not pull in other libraries (that do it better) to reduce the dependencies I use.</p>
</blockquote>
</aside>
<p>The semantics are good, the syntax is indeed in need of a spring clean : )</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="102916" 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-would-you-remove-from-elixir/5622/69">Post #68</a>
	                </div>
	            </div>
              <div id="likers-container-102916" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="102916"
                     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 #68"></div>
  </section>
</div>
    <div class="postbit" id="102921" data-post-id="102921">
  <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>Finally I thought of something!</p>
<p>I would remove the current <code>Enum.map</code> and similar functions, and replace them by ones that make more clear that we are destroying the structure and returning a list while mapping. And I would like to introduce a new built-in Protocol that allows you to iterate over things while keeping their structure. (So a <em>transforming</em> map rather than a <em>destructive</em> one)</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="102921" 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/what-would-you-remove-from-elixir/5622/70">Post #69</a>
	                </div>
	            </div>
              <div id="likers-container-102921" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="102921"
                     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 #69"></div>
  </section>
</div>
    <div class="postbit" id="102928" data-post-id="102928">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="LostKobrakai" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/LostKobrakai/120/3072_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  LostKobrakai
                  </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="70" data-topic="5622">
<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>replace them by ones that make more clear that we are destroying the structure and returning a list while mapping</p>
</blockquote>
</aside>
<p>This might not be the most obvious place, but the reasoning behind that behaviour by the <code>Enumberable</code> protocol is explained in the docs for the <code>Collectable</code> protocol. So using the <code>Enum</code> module does already imply you might loose shape as it’s working with a protocol build on that premise.</p>
<aside class="onebox allowlistedgeneric" data-onebox-src="https://elixir.hexdocs.pm/Collectable.html">
  <header class="source">

      <a href="https://elixir.hexdocs.pm/Collectable.html" target="_blank" rel="noopener nofollow">elixir.hexdocs.pm</a>
  </header>

  <article class="onebox-body">
    

<h3><a href="https://elixir.hexdocs.pm/Collectable.html" target="_blank" rel="noopener nofollow">Collectable — Elixir v1.20.2</a></h3>



  </article>

  <div class="onebox-metadata">
    
    
  </div>

  <div style="clear: both"></div>
</aside>
 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="102928" 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-would-you-remove-from-elixir/5622/71">Post #70</a>
	                </div>
	            </div>
              <div id="likers-container-102928" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="102928"
                     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 #70"></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/5622/load_more?page=8">Load more posts (13 remaining)</a>
</div></template></turbo-stream>