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


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>We never got around to it, but we could expand this out into a full ‘Glossary &amp; Gotchas’ section if you think there would be enough topics to warrant dedicated threads Jason.</p>
<p>Here’s the initial thoughts for what we had in mind for the Glossary section: <a href="https://forum.elixirforum.com/t/do-you-think-we-need-a-glossary-section/12988" rel="nofollow">https://forum.elixirforum.com/t/do-you-think-we-need-a-glossary-section/12988</a></p>
<p>The good thing about dedicated threads is that it’s easier for people to post responses/comments, easier to link to and of course more likely to be picked up and indexed by search engines. If this is something you’d like to do/take charge of, just let me know <img src="https://forum.elixirforum.com/uploads/default/original/2X/a/a1c41c89c299189a3f85edfeb4973563d8bac781.gif?v=15" title=":023:" class="emoji emoji-custom" alt=":023:" loading="lazy" width="20" height="20"> (A single thread like this is a good option too mind.)</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="217657" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/elixir-gotchas-and-common-issues-wiki/40261/12">Post #11</a>
	                </div>
	            </div>
              <div id="likers-container-217657" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="217657"
                     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 #11"></div>
  </section>
</div>
    <div class="postbit" id="217664" data-post-id="217664">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<blockquote>
<p>any.anything will fail if the key does not exists, while any[:anything] will not, but return nil</p>
</blockquote>
<p>Yes, this is true if <code>any</code> is a map, but <code>nil</code> is an <code>atom</code>.</p>
<p>In the <code>nil[:anything]</code> case, <code>nil</code> is a special <code>atom</code> because there is a special case in <code>Access.get</code> for <code>nil</code>:<br>
<a href="https://github.com/elixir-lang/elixir/blob/dd91ccd045e3c37545aabb69f8d2c6b529572f80/lib/elixir/lib/access.ex#L314-L316" class="onebox" target="_blank" rel="noopener nofollow ugc">https://github.com/elixir-lang/elixir/blob/dd91ccd045e3c37545aabb69f8d2c6b529572f80/lib/elixir/lib/access.ex#L314-L316</a><br>
I believe it was introduced in <a href="https://github.com/elixir-lang/elixir/commit/cc68813523db04d0ffc7a161874c481ee72cc874" class="inline-onebox" rel="noopener nofollow ugc">Allow the access protocol on nil, and always return nil · elixir-lang/elixir@cc68813 · GitHub</a> to allow nested <code>get_in(data, [...])</code> to return <code>nil</code> if any <code>intermediate</code> step to return <code>nil</code><br>
This special case is useful when it’s used in <code>get_in/3</code>,<br>
but when you expect something to be a <code>map</code>, and calls <code>map[:anything]</code>, it would return <code>nil</code> when <code>map</code> is <code>nil</code>.</p>
<p>It should be a rare case, but it did surprise me once before</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="217664" data-batch-url="/posts/batch_likers">
                        7
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/elixir-gotchas-and-common-issues-wiki/40261/13">Post #12</a>
	                </div>
	            </div>
              <div id="likers-container-217664" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="217664"
                     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 #12"></div>
  </section>
</div>
    <div class="postbit" id="218346" data-post-id="218346">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>One thing that was surprising for me when I was first introduced to the language was the shorcut syntax for creating anonymous functions.</p>
<p>I was like: What does <code>&amp;{:ok, &amp;1}</code> actually mean? It is the same as <code>fn argument -&gt; {:ok, argument} end</code></p>
<p>One of the places I first saw this syntax (way back in time) was in Phoenix source and it had something like <code>&amp;"Something went wrong because of #{inspect(&amp;1)}"</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="218346" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/elixir-gotchas-and-common-issues-wiki/40261/14">Post #13</a>
	                </div>
	            </div>
              <div id="likers-container-218346" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="218346"
                     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 #13"></div>
  </section>
</div>
    <div class="postbit" id="218358" data-post-id="218358">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<pre data-code-wrap="elixir"><code class="lang-elixir">iex&gt; !![] == !!%{} == !!0 == !!{} == true
true
</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="218358" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/elixir-gotchas-and-common-issues-wiki/40261/15">Post #14</a>
	                </div>
	            </div>
              <div id="likers-container-218358" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="218358"
                     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 #14"></div>
  </section>
</div>
    <div class="postbit" id="231457" data-post-id="231457">
  <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>Erlang default strings are charlists eg <code>'this string is a charlist'</code>. This is an Erlang style list aka a linked list not an array.</p>
<p>Elixir default strings are binary eg <code>"this string is a binary"</code>.</p>
<p>A binary is not an array of individual chars like a C string. It is a ‘UTF-8 encoded binary’ which describes exactly what it is but makes it no less confusing for those coming from other languages where a string is an array of chars.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="231457" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/elixir-gotchas-and-common-issues-wiki/40261/16">Post #15</a>
	                </div>
	            </div>
              <div id="likers-container-231457" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="231457"
                     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 #15"></div>
  </section>
</div>
    <div class="postbit" id="231458" data-post-id="231458">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>By the way, Erlang’s <code>'foo bar'</code> is Elixir’s <code>:"foo bar"</code>. They are atoms.</p>
<p>BTW, you can call Elixir functions in Erlang. For example, the way of calling Elixir function <code>String.split("a, b, c", ", ")</code> in Erlang is</p>
<pre data-code-wrap="erlang"><code class="lang-erlang">'Elixir.String':split(&lt;&lt;"a, b, c"&gt;&gt;, &lt;&lt;", "&gt;&gt;)
</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="231458" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/elixir-gotchas-and-common-issues-wiki/40261/17">Post #16</a>
	                </div>
	            </div>
              <div id="likers-container-231458" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="231458"
                     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 #16"></div>
  </section>
</div>
    <div class="postbit" id="231459" data-post-id="231459">
  <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">
								<blockquote>
<p>By the way, Erlang’s <code>'foo bar'</code> is Elixir’s <code>:"foo bar"</code>. They are atoms.</p>
</blockquote>
<p>No. Your second example is an atom but the first is not.</p>
<p>An atom in Erlang is just <code>atom</code>. This translates to <code>:atom</code> in Elixir which is also equivalent to <code>:"atom"</code>.</p>
<p>If strings were atoms you would run out of memory really quickly as they are not garbage collected and are a bit like a global enum (like an enum in C style languages. Enum in Elixir is a slightly different thing).</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="231459" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/elixir-gotchas-and-common-issues-wiki/40261/18">Post #17</a>
	                </div>
	            </div>
              <div id="likers-container-231459" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="231459"
                     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 #17"></div>
  </section>
</div>
    <div class="postbit" id="231460" data-post-id="231460">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Erlang also supports atom literals that can’t be written in the format of <code>[a-z]\w*</code>. Just put whatever you want inside <code>' '</code>, and you have an atom.</p>
<div class="md-table">
<table>
<thead>
<tr>
<th style="text-align:left">Erlang</th>
<th style="text-align:left">Elixir</th>
<th style="text-align:left">Type</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:left"><code>foo_bar</code></td>
<td style="text-align:left"><code>:foo_bar</code></td>
<td style="text-align:left">atom</td>
</tr>
<tr>
<td style="text-align:left"><code>'foo bar'</code></td>
<td style="text-align:left"><code>:"foo bar"</code></td>
<td style="text-align:left">atom</td>
</tr>
<tr>
<td style="text-align:left"><code>"foo bar"</code></td>
<td style="text-align:left"><code>'foo bar'</code></td>
<td style="text-align:left">charlist (list of Unicode code points)</td>
</tr>
<tr>
<td style="text-align:left"><code>&lt;&lt;"foo bar"&gt;&gt;</code></td>
<td style="text-align:left"><code>"foo bar"</code></td>
<td style="text-align:left">binary</td>
</tr>
<tr>
<td style="text-align:left"><code>'Elixir.Foo.Bar'</code></td>
<td style="text-align:left"><code>Foo.Bar</code> <br> <code>Elixir.Foo.Bar</code> <br> <code>:"Elixir.Foo.Bar"</code></td>
<td style="text-align:left">atom (usually used as an Elixir module name)</td>
</tr>
<tr>
<td style="text-align:left"><code>$x</code></td>
<td style="text-align:left"><code>?x</code></td>
<td style="text-align:left">integer (Unicode code point)</td>
</tr>
</tbody>
</table>
</div> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="231460" data-batch-url="/posts/batch_likers">
                        5
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/elixir-gotchas-and-common-issues-wiki/40261/19">Post #18</a>
	                </div>
	            </div>
              <div id="likers-container-231460" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="231460"
                     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 #18"></div>
  </section>
</div>
    <div class="postbit" id="231463" data-post-id="231463">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="GenericJam" data-post="18" data-topic="40261">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/genericjam/48/15495_2.png" class="avatar"> GenericJam:</div>
<blockquote>
<p>No. Your second example is an atom but the first is not.</p>
</blockquote>
</aside>
<p>The first <em>is</em> an atom in Erlang. See my previous reply.</p>
<aside class="quote no-group quote-modified" data-username="GenericJam" data-post="18" data-topic="40261">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/genericjam/48/15495_2.png" class="avatar"> GenericJam:</div>
<blockquote>
<p>If strings were atoms …</p>
</blockquote>
</aside>
<p>I agree that strings created at run-time should not be converted to atoms, but Erlang’s <code>'foo bar'</code> is a compile-time literal, so even if it was a charlist or a binary (it’s neither), it would be no danger at all keeping it away from garbage collection.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="231463" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/elixir-gotchas-and-common-issues-wiki/40261/20">Post #19</a>
	                </div>
	            </div>
              <div id="likers-container-231463" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="231463"
                     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>