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


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<blockquote>
<p>This reminds me of an article by Joe Armstrong that I read long time ago. He mentioned about how Elixir gets closures right and a few other syntax observations he did (on trying out Elixir for the first time).</p>
<p><a href="https://joearms.github.io/published/2013-05-31-a-week-with-elixir.html" rel="noopener nofollow ugc">This is the link </a>. Since we are reading chapter 2 I think this could be a nice supplement since he talked about syntax and his opinions of it (some historic artifact too like the ← operator)</p>
</blockquote>
<p>Very cool.  I’ll check it out, thanks!</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="327354" 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-in-action-book-club/63088/42">Post #41</a>
	                </div>
	            </div>
              <div id="likers-container-327354" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="327354"
                     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="327517" data-post-id="327517">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="sasajuric" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/sasajuric/120/991_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  sasajuric
                  </h3>
		          </div>
						
			          <div class="user-title">
									<span>Author of Elixir In Action</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="chuggingCoffee" data-post="40" data-topic="63088">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/chuggingcoffee/48/34518_2.png" class="avatar"> chuggingCoffee:</div>
<blockquote>
<p>Whew. This chapter for me felt extremely long.</p>
</blockquote>
</aside>
<p>Fun fact: in my original plan, chapter 2 was supposed to cover the material from the current chapters 2, 3, and 4 <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>
<p>I agree it is a very long chapter. It’s also fairly unexciting, mostly a bunch of declarative facts. I spent considerable amount of time thinking how to restructure it, and, but didn’t come up with anything good. In the end, I decided to leave it as is. I could have done a chapter split, but it would still be the same amount of material. So I think it works better as a single chapter, because it communicates the general strategy of establishing the basic vocabulary in a single iteration, and then moving on to more interesting things.</p>
<p>To some extent I feel the same about chapter 3. For the next edition I’m considering splitting that one into two parts: conditionals and loops, with the loops part getting some more detailed treatment.</p>
<aside class="quote group-Erlang-Core-Team" data-username="bjorng" data-post="39" data-topic="63088">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/bjorng/48/13187_2.png" class="avatar"> bjorng:</div>
<blockquote>
<p>I found a few minor inaccuracies, and I have a few suggestions for improvements.</p>
</blockquote>
</aside>
<p>All great points &amp; catches! Note to self: invite Björn to be the reviewer of the next edtition <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>
<aside class="quote no-group" data-username="juhalehtonen" data-post="33" data-topic="63088">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/juhalehtonen/48/21791_2.png" class="avatar"> juhalehtonen:</div>
<blockquote>
<p>When I saw the title of Macros, I was slightly surprised they were being introduced at this stage as well. However, I feel Saša took the absolute right approach here by simply pointing out their general idea and value proposition without trying to teach how to use them.</p>
</blockquote>
</aside>
<p>Original plan was to have the full chapter on macros, but I couldn’t find a good place to fit them in. So I decided to completely ditch them, which was a somewhat unusal choice. However, since later in the book we end up using a bit of macros (from the <code>plug</code> library), I decided to add a super short intro to chapter 2, so people aren’t completely confused by it.</p>
<aside class="quote no-group" data-username="juhalehtonen" data-post="33" data-topic="63088">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/juhalehtonen/48/21791_2.png" class="avatar"> juhalehtonen:</div>
<blockquote>
<p>It’s wonderful to know macros exist and what they can do, but as Saša points out, learning them thoroughly takes a whole book</p>
</blockquote>
</aside>
<p>And luckilly there is one! <a href="https://pragprog.com/titles/cmelixir/metaprogramming-elixir/" class="inline-onebox" rel="noopener nofollow ugc">Metaprogramming Elixir: Write Less Code, Get More Done (and Have Fun!) by Chris McCord</a></p>
<aside class="quote no-group" data-username="TimButterfield" data-post="34" data-topic="63088">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/timbutterfield/48/2089_2.png" class="avatar"> TimButterfield:</div>
<blockquote>
<p>I like how it often linked to the docs for certain parts in case you wanted a bit deeper dive into something specific.</p>
</blockquote>
</aside>
<p>Thanks for noticing! The book isn’t meant to be a complete reference, but I also don’t want to leave readers stranded, so I opted for the generous linking to the official docs (which are a great resource).</p>
<aside class="quote no-group" data-username="TimButterfield" data-post="34" data-topic="63088">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/timbutterfield/48/2089_2.png" class="avatar"> TimButterfield:</div>
<blockquote>
<p>:“an atom with spaces”</p>
<p>I don’t recall seeing this usage actually being used. Is there a practical reason why this is useful in some scenarios?</p>
</blockquote>
</aside>
<p>Yeah, the example is contrived. Some frequent practical examples of this syntax are referencing nodes (<code>:"foo@bar.baz"</code>) and special process dict keys (<code>:"$ancestors"</code>, <code>:"$callers"</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="327517" 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/elixir-in-action-book-club/63088/43">Post #42</a>
	                </div>
	            </div>
              <div id="likers-container-327517" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="327517"
                     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="327683" data-post-id="327683">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="sasajuric" data-post="43" data-topic="63088">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/sasajuric/48/991_2.png" class="avatar"> sasajuric:</div>
<blockquote>
<p>Fun fact: in my original plan, chapter 2 was supposed to cover the material from the current chapters 2, 3, and 4 <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>
</blockquote>
</aside>
<p>Haha.  Well, from a completely selfish perspective, I appreciate the split.  I usually try to finish a whole chapter per “session”.  So the longer they are, the more my brain melts. <img src="https://forum.elixirforum.com/images/emoji/apple/rofl.png?v=15" title=":rofl:" class="emoji" alt=":rofl:" loading="lazy" width="20" height="20"></p>
<aside class="quote no-group" data-username="sasajuric" data-post="43" data-topic="63088">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/sasajuric/48/991_2.png" class="avatar"> sasajuric:</div>
<blockquote>
<p>I agree it is a very long chapter. It’s also fairly unexciting, mostly a bunch of declarative facts. I spent considerable amount of time thinking how to restructure it, and, but didn’t come up with anything good. In the end, I decided to leave it as is. I could have done a chapter split, but it would still be the same amount of material. So I think it works better as a single chapter, because it communicates the general strategy of establishing the basic vocabulary in a single iteration, and then moving on to more interesting things.</p>
</blockquote>
</aside>
<p>100%.  Even while I was mentioning that Chapter 2 felt a little long to me, I also completely agree with you that the content itself works together as one chapter.  The chapter is long, and the chapter is also done well.</p>
<hr>
<p>EDIT:  I almost forgot.  There was one line in <strong>3.1.7 Matching bitstrings and binaries</strong> which read a little odd to me.</p>
<blockquote>
<p>“rest::binary states that you expect an arbitrarily sized.”</p>
</blockquote>
<p>An arbitrarily sized <strong>what</strong>?</p>
<p>I think it’s either missing a word or I’m potentially reading it completely wrong.  Just a heads up.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="327683" 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/elixir-in-action-book-club/63088/44">Post #43</a>
	                </div>
	            </div>
              <div id="likers-container-327683" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="327683"
                     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="327757" data-post-id="327757">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Just finished Chapter 2. I found it a good, fast paced chapter that covers a lot of ground, and strikes a good balance between getting through the concepts while still giving enough detail.</p>
<p>There is so much to like in Elixir/Erlang; this chapter touches on a couple of things that are perhaps not recognised very often but quietly hold things together behind the scenes…</p>
<ul>
<li>
<p>Immutability is such an important concept that make large programs easier to reason about. In the past while working on OOP systems I’ve spent many hours trying to figure out where a particular field of an object was changed, but now using Elixir with small functions and immutable data that class of problem simply disappears. Not to mention concurrency etc.</p>
</li>
<li>
<p>IO Lists is like this magic way of concatenating strings efficiently and it’s what helps to make Phoenix templates so fast <img src="https://forum.elixirforum.com/images/emoji/apple/rocket.png?v=15" title=":rocket:" class="emoji" alt=":rocket:" loading="lazy" width="20" height="20"></p>
</li>
</ul>
<p>Section 2.4.4 mentions <code>Kernel.length/1</code>, the Elixir docs mention the naming convention that <code>length</code> runs in O(n) whereas <code>size</code> runs in O(1). Here is the reference …<br>
<a href="https://hexdocs.pm/elixir/1.16.2/naming-conventions.html#length-and-size" rel="noopener nofollow ugc">https://hexdocs.pm/elixir/1.16.2/naming-conventions.html#length-and-size</a><br>
I only recently came across this and the trick to remember it is that <code>length</code> has the letter <code>n</code> <img src="https://forum.elixirforum.com/images/emoji/apple/smile.png?v=15" title=":smile:" class="emoji" alt=":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="327757" 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/elixir-in-action-book-club/63088/45">Post #44</a>
	                </div>
	            </div>
              <div id="likers-container-327757" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="327757"
                     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="327762" data-post-id="327762">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I also finished chapter 2 and everything just confirmed the impressions I had before: the book is very well structured and the reading flow is good. I have not much else to say 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="327762" 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/elixir-in-action-book-club/63088/46">Post #45</a>
	                </div>
	            </div>
              <div id="likers-container-327762" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="327762"
                     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="328093" data-post-id="328093">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p><strong>Chapter 3</strong></p>
<p>The two biggest things I’m taking from this chapter:</p>
<ul>
<li>
<p>A new understanding of pattern matching in general, and seeing plenty of examples here was really helpful.  It’s clear how this can be powerful/helpful.  I really enjoy the ease of this syntax:</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">defmodule TestList do
  def empty?([]), do: true
  def empty?([_|_]), do: false
end
</code></pre>
</li>
<li>
<p><code>Stream</code>.  Loved learning more about this module.  I had seen <code>Stream.something</code> in passing while looking at Elixir code which was processing a CSV, but knew nothing about it and didn’t have a need to find out more at the time.  Now that I’m diving into Elixir, it’s neat learning about this module and some use cases early on.  I like to play around with file processing/manipulation when learning a new language, so this will be fun to explore further.</p>
</li>
</ul>
<p>Another really informative chapter.  On to the next!</p>
<p>Have a good week, everyone.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="328093" 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-in-action-book-club/63088/47">Post #46</a>
	                </div>
	            </div>
              <div id="likers-container-328093" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="328093"
                     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="328168" data-post-id="328168">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Just got your book - starting to read it while pairing it with my Exercism Elixir track.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="328168" 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-in-action-book-club/63088/48">Post #47</a>
	                </div>
	            </div>
              <div id="likers-container-328168" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="328168"
                     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="328301" data-post-id="328301">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<h2><a name="p-328301-chapter-2-1" class="anchor" href="#p-328301-chapter-2-1" aria-label="Heading link" rel="nofollow"></a>Chapter 2</h2>
<p>This is the long due chapter 2 review.</p>
<p>Unsurprisingly, this is a long chapter, and the naming of the chapter couldn’t be better.</p>
<p>The chapter nicely separates structure (modules, blocks), action (function, closure), and data (map, list) in a very nice way, as a person who is re-reading this book, versed with Elixir, and coming back to it professionally after some hiatus (apart from AoC), I certainly found it not boring (I was suspecting I would). The order those three blocks were introduced and the way knowledge transitions were made, makes up the core strength of this chapter, which I wish to see followed in other languages.</p>
<p>When I introduced folks to Elixir, my order ot familiarizing folks used to be data, function, structure. Fire up the REPL - create some lists, some maps, show how to transform through pipes, and making the introduction to function (keep macros hidden and let them believe it’s function for a bit), then write functions within modules (without reasoning what modules are, like “public static void main” is just assumed to be there when seeing Java), and then make the transition to module. It’s a ride with some leaps of faith and a few hiccups, but those three building blocks can be introduced to a new comer in any order.</p>
<p>This chapter has a much seamless way of presenting. Starting with blocks, then function, and then data. There is no (We will come to it later), and all this information that might as well by three chapters, feels like rightfully and naturally, one chapter. This I feel like, and felt like when I read previous edition, one of the best ones of this book, one I would adopt if I ever write one.</p>
<p>In gist, this is an introduction to Elixir language, and all you expect from a language is present here. No surprises. As usual, each paragraph crafted with care, flow well thought up.</p>
<p>Now for a funny bit, I was reading this book on my tab and didn’t realize it was 2nd edition (well the colour isn’t as different as 1st vs 2nd was). So I ended up reading the wrong “Chapter 2”. And Elixir being a more or less stable as a language didn’t help either, I mean, if it were JavaScript, I would have caught it on the second sentence.</p>
<p>So, I read the correct edition, and out of curiosity opened the chapter side by side and did a quick scanning for diffs. Here are a few that caught my eye:</p>
<ul>
<li>Addition of <code>#iex:break</code> – I have seen so many folks having “Aha” moments when I introduced them to this when I was working in Elixir teams. This        is a valuable tip and an addition to this chapter.</li>
<li>A nice sidebar on multiline structure</li>
<li><code>System.stop</code> is the winner (as it should be) of the who’s more polite contest!</li>
<li>Has (thankfully) so, outputs of <code>Code.fetch_docs</code> printed out, this gives readers an initial idea of the structure.</li>
</ul>
<p>Well that’s about it, not many other big changes that caught my eye, apart from a few formatting goodies.</p>
<p>This will be it, my experience with chapter 2-s <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="328301" data-batch-url="/posts/batch_likers">
                        6
                      </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-in-action-book-club/63088/49">Post #48</a>
	                </div>
	            </div>
              <div id="likers-container-328301" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="328301"
                     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="328406" data-post-id="328406">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I’ve finished reading chapter 3.  I started a bit late this week and didn’t have time for all of the practice exercises.  Here are a few comments collected as I went along.</p>
<p>3.1.7 Matching bitstrings and binaries</p>
<p>One possible use mentioned for the first part of this section was for handling network data.  It reminded me of cross-network messaging using XDR (XML Data Reduced - no tags) where each field is a different size based on the data type and had to be translated in the specific order of the message definitions.  It made me wonder how I might define similar messages using these patterns.  I’m curious now how that thinking may get refined as I continue working through the book.</p>
<p>The binary string example had me thinking of if/how regular expressions might be used in similar cases, for example, where there is more than one space between ‘ping’ and the url.  ~r/ping\s+/ &lt;&gt; url = command<br>
Of course, this isn’t quite the same as using String.match.  But, it would be interesting if this type of extended Regex matching + assignment would be possible.</p>
<p>3.3.2 Classical branching expressions</p>
<p>The cond expression description reminded me of how I sometimes handled state machines, though usually with quite a bit more code in other languages.</p>
<p>3.4.4 Comprehensions</p>
<p>The nested iteration example reminded me a bit of compacted perl code where I needed to study it some to figure out what it was doing.</p>
<p>3.4.5 Streams</p>
<p>The Stream.filter example code was described as being dense, which is what I had thought of earlier with my comprehensions comment above.  In this case, the piping made it easily readable and a bit elegant.  When I used to write perl code, I always tried to keep it readable even if at the expense of not always being as compact as it could have been.  When you return to something a year or more later, it is not always obvious what you may have been thinking at the time you wrote it.  So, I prefer the ability to have code that is both concise and readable as in this example.</p>
<p>Overall, chapter 3 was an enjoyable read about a powerful set of constructs.  It was really interesting thinking of these in light of the more imperative languages I usually work with.  I’m starting to get jealous of those who get to work with this on a regular basis.  <img src="https://forum.elixirforum.com/images/emoji/apple/stuck_out_tongue.png?v=15" title=":stuck_out_tongue:" class="emoji" alt=":stuck_out_tongue:" 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="328406" 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/elixir-in-action-book-club/63088/50">Post #49</a>
	                </div>
	            </div>
              <div id="likers-container-328406" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="328406"
                     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="328422" data-post-id="328422">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Chapter 3, done!</p>
<p>I think it was a great idea from Saša to highlight the elephant in the room for most newcomers: no loops, no <code>while</code>, and multiclause functions replacing conditional constructs! Further still, starting from pattern matching was definitely the right call here. So much of how one writes Elixir is underpinned by pattern matching that diving into it first feels very necessary.</p>
<p>Reading about guards is fun to me because of how they might have a special role in utilizing the set-theoretic type system in the future! Of course that’s still a very unknown and uncertain future, and it wouldn’t make sense for the book to speculate on their potential effect, but I find it intriguing to think how the 4th edition might indeed say a word or two about the type system here.</p>
<p>I found it interesting that the book chooses not to showcase the <code>else</code> branch of a <code>with</code> in this introduction. I wonder if this is done to avoid accidentally nudging readers down the path of <a href="https://hexdocs.pm/elixir/code-anti-patterns.html#complex-else-clauses-in-with" rel="noopener nofollow ugc">complex else clauses in with -anti-pattern</a>? I bet that would’ve undoubtedly required more space and more words to explain sufficiently, and the section clearly isn’t meant to throw everything at the reader at once <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>
<p>I really enjoyed reading this chapter, as it reminded me of just how joyful I felt when learning Elixir for the first time. The language just <em>clicked</em> with my brain in a way no other language had before, and much of that is thanks to excellent authors like Saša.</p>
<p>How did our other book club members find the chapter? <img src="https://forum.elixirforum.com/images/emoji/apple/eyes.png?v=15" title=":eyes:" class="emoji" alt=":eyes:" 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="328422" 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-in-action-book-club/63088/51">Post #50</a>
	                </div>
	            </div>
              <div id="likers-container-328422" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="328422"
                     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/63088/load_more?page=6">Load more posts (46 remaining)</a>
</div></template></turbo-stream>