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


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Clojure compile times ARE slow, and Clojure REPLs generally don’t use ahead of time compilation, so they recompile everything when they start. So starting a REPL on a big project can take minutes. This is definitely part of why REPL driven development is popular - only reload code that has changed - never stop your REPL unless dependencies need to be reloaded or something has gone very wrong. Having said that, however, it IS very useful to have your system constantly running as you are building it. This is very different from simply having a REPL up that you can try things out in (like Swift’s playgrounds).</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="42672" 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-do-you-all-think-of-clojures-repl-driven-development-method/7040/22">Post #21</a>
	                </div>
	            </div>
              <div id="likers-container-42672" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="42672"
                     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 #21"></div>
  </section>
</div>
    <div class="postbit" id="42773" data-post-id="42773">
  <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">
								<p>REPL-driven has its perks too, like take LISP, it has no real startup time at all but it still rules there too.  It is really more about the ‘state’ of the program being serializable and changeable.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="42773" 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-do-you-all-think-of-clojures-repl-driven-development-method/7040/23">Post #22</a>
	                </div>
	            </div>
              <div id="likers-container-42773" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="42773"
                     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 #22"></div>
  </section>
</div>
    <div class="postbit" id="175419" data-post-id="175419">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I know that this discussion is pretty old, but I’d like to chime in anyway. I’ve basically just started looking into Elixir and the biggest part of my programming background is tainted by Python. But I’m also familiar with the Clojure way of doing things. One thing that I was always a bit jealous of was the REPL driven development that you could do in Clojure. While you can do a lot of things on the REPL in Python, loading a whole project with state and many classes is not something that is really possible. In the end Python is not an FP language. Once too many moving parts are involved, it get cumbersome. So most of the people do what I call pdb driven development. You run the code up to the break point and do your explorations there. When I read the comments here I though “okay, it’s similar in Elixir”. But that’s actually not true and you don’t explicitly mention it here.<br>
So for all of the newcomers that are interested in REPL driven development: It’s working. Just not like in Clojure. In Clojure you send parts of the code from the editor the the REPL. That’s not what’s happening here. With an Elixir project you just edit your code, switch to the REPL and invoke <code>recompile()</code>. Now the whole code gets recompiled and you can proceed with your explorations. Also your previous state is still there. If you’ve loaded some JSON into a variable, then you can still use it. I’m really impressed by this and I think I like it even more than what Clojure is doing.</p>
<p>PS: Please correct me if I’m saying anything wrong. At least for my little test projects this worked so far.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="175419" 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/what-do-you-all-think-of-clojures-repl-driven-development-method/7040/24">Post #23</a>
	                </div>
	            </div>
              <div id="likers-container-175419" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="175419"
                     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 #23"></div>
  </section>
</div>
    <div class="postbit" id="199495" data-post-id="199495">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Seems to be a lot of inaccuracies about Clojure in this thread. Clojure compile times are really fast, and not slow at all. Applications written in Clojure may have slow startup times, and maybe this is the confusion people had here?</p>
<p>REPL-driven-development in Clojure does not mean working at the REPL, it means working at the editor, and synchronizing the code in your editor with a running REPL, often time with the state maintained if you want, or not if you don’t want or maintaining some of the state and not other parts of it.</p>
<p>This also means incremental compilation, where you can re-compile part of the code only and hot-swap it in the running REPL where existing dependent code automatically starts using the newly loaded one.</p>
<p>As interactive development goes, Elixir is pretty damn good compared to most other languages, sex gives you a lot of power, but I’d say it’s still not quite REPL-driven-development. There’s a bit more back/forth with iex, but you kind of end up adopting a different workflow which some people might prefer, which is closer to TDD I’d say, as opposed to RDD.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="199495" 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-do-you-all-think-of-clojures-repl-driven-development-method/7040/25">Post #24</a>
	                </div>
	            </div>
              <div id="likers-container-199495" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="199495"
                     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 #24"></div>
  </section>
</div>
    <div class="postbit" id="199500" data-post-id="199500">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I think clojure’s REPL needs a lot of development, it lacks basic functionality.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="199500" 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-do-you-all-think-of-clojures-repl-driven-development-method/7040/26">Post #25</a>
	                </div>
	            </div>
              <div id="likers-container-199500" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="199500"
                     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 #25"></div>
  </section>
</div>
    <div class="postbit" id="200265" data-post-id="200265">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Could you expand? There isn’t a single Clojure REPL, but many of them, some with way more features than others. What specific feature you found lacking, maybe I can point you to a REPL that has it, or maybe you’re right and it is still lacking, it’s definitely not like it couldn’t be further expanded on.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="200265" 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-do-you-all-think-of-clojures-repl-driven-development-method/7040/27">Post #26</a>
	                </div>
	            </div>
              <div id="likers-container-200265" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="200265"
                     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 #26"></div>
  </section>
</div>
    <div class="postbit" id="200621" data-post-id="200621">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Yeah, It can be expanded. I don’t know much about clojure’s repl as I am new to functional Programming and to LISP in general. I was talking about the REPL which comes with default installation on Linux. I have installed clojure by following the steps in official docs.<br>
Please suggest me some alternative REPLs.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="200621" 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-do-you-all-think-of-clojures-repl-driven-development-method/7040/28">Post #27</a>
	                </div>
	            </div>
              <div id="likers-container-200621" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="200621"
                     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 #27"></div>
  </section>
</div>
    <div class="postbit" id="220335" data-post-id="220335">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Ah yes, the default REPL is quite basic.</p>
<p>You would want to be using nRepl with the Cider Middleware and generally interact with it using either Calva (a VSCode plugin) or Cider (an Emacs plugin).</p>
<p>Though there are others that offer good features as well, but this is the most common setup for a powerful REPL development experience.</p>
<p>But for example, with those REPL you can have things like:</p>
<p>Code highlight, syntax formatting, inline evaluation, command history, documentation as you type, auto-complete, debugging with breakpoints, locals inspection, multiline support, jump to definitions, macroexpansion, source lookup, execution tracing, pretty printing, support for displaying images, advance text editing, refactorings, etc.</p>
<p>See:</p>
<ul>
<li>Calva - <a href="https://calva.io" rel="noopener nofollow ugc">https://calva.io</a></li>
<li>Cider - <a href="https://docs.cider.mx" rel="noopener nofollow ugc">https://docs.cider.mx</a></li>
</ul>
<p>If you’re curious, the <code>n</code> in <code>nRepl</code> is for network, its a REPL for Clojure that allows remote connections over the network and thus run as a server. This allows better text editors to connect to it, since with a terminal you’re quite limited in the text editing department. Thus with <code>nRepl</code> you can have both powerful REPL and good text editing in a real editor.</p>
<p>If you’re wanting something that is a powerful REPL but still meant to be used from a Terminal, you’d want to use rebel-readline:</p>
<ul>
<li>Rebel-readline - <a href="https://github.com/bhauman/rebel-readline" class="inline-onebox" rel="noopener nofollow ugc">GitHub - bhauman/rebel-readline: Terminal readline library for Clojure dialects · GitHub</a></li>
</ul>
<p>Which implements a much better Terminal readline than the default Linux one (gnu-readline). And thus it gives you colored highlights, multiline, inline documentation, auto-complete, history, and other things directly in the terminal.</p>
<p>See this for a demo of it: <a href="https://asciinema.org/a/160597" class="inline-onebox" rel="noopener nofollow ugc">Quick Demo of soon to be released readline library for Clojure/Script - asciinema.org</a></p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="220335" 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-do-you-all-think-of-clojures-repl-driven-development-method/7040/29">Post #28</a>
	                </div>
	            </div>
              <div id="likers-container-220335" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="220335"
                     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>