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


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="tmbb" src="/assets/icons/user-9f439610.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  tmbb
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote group-Erlang-Core-Team" data-username="rvirding" data-post="102" data-topic="3693">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/rvirding/48/1409_2.png" class="avatar"> rvirding:</div>
<blockquote>
<p>Lisp is too powerful for most programmers, the “Curse of Lisp”.</p>
</blockquote>
</aside>
<p>I don’t think this is what the author identifies as the main cause of the curse. I think the problem (as the author identifies it!) is that it is too powerful a tool to weils responsibly. Most programmers will be happy and productive using lisp. But they will also use its power to isolate themselves from others <em>because the language allows it</em>.</p>
<aside class="quote group-Erlang-Core-Team" data-username="rvirding" data-post="102" data-topic="3693">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/rvirding/48/1409_2.png" class="avatar"> rvirding:</div>
<blockquote>
<p>Because of its power it is the “wrong” type of programmers who use it.</p>
</blockquote>
</aside>
<p>Exactly, this complements the above. Power corrupts and absolute power corrupts absolutely.</p>
<aside class="quote group-Erlang-Core-Team" data-username="rvirding" data-post="102" data-topic="3693">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/rvirding/48/1409_2.png" class="avatar"> rvirding:</div>
<blockquote>
<p>All I can say is once you’re hooked there is no going back. <img src="https://forum.elixirforum.com/images/emoji/apple/grinning.png?v=15" title=":grinning:" class="emoji" alt=":grinning:" loading="lazy" width="20" height="20"></p>
</blockquote>
</aside>
<p>My problem is that I’m hooked to mutually disjoint things:</p>
<ol>
<li>Lisp syntax and how easy it is to manipulate</li>
<li>Phoenix channels, which require the BEAM and Plug (and a a result, elixir). Also iolists and their amazing performance characteritics (and to be fair this doesn’t require Elixir)</li>
<li>Static typesystems like those of Haskell and ML (I’d scrap the IO monad and lazy evaluation from Haskell, though)</li>
</ol>
<p>These 3 are not very compatible…  I can combine 1 with 2 (it’s quite easy to write a lisp compiler that compiles to Elixir AST with trivial interop and better code generation)</p>
<p>Combining 2 with 3 is probably not very hard. Just ignore he typing of receive (accept you’ll have to check at runtime) and adapt this work from <span class="mention">@OverminDL1</span> to lift the restrictions of the Elixir syntax. Then, write an FFI to phoenix and plug and you’re part of the way there. I’m simplifying and I don’t know how I’d deal with macros, butthat’s the idea.</p>
<p>My main problem is combining 1 and 3. AFAIK, no one has been able to graft a HM typesystem into a Lisp, because you can’t have heterogenneous lists in a HM typesystem… You fake it with tagged unions, but then you langstops being homiconic.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="79109" 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/mlelixir-attempting-an-ml-traditional-syntax-entirely-within-the-elixir-ast/3693/103">Post #102</a>
	                </div>
	            </div>
              <div id="likers-container-79109" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="79109"
                     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 #102"></div>
  </section>
</div>
    <div class="postbit" id="79110" data-post-id="79110">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="tmbb" src="/assets/icons/user-9f439610.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  tmbb
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>WARNING: what follows is based on a paper from 2017 which I’m totally underqualified to read but did it anyway…</p>
<p>There are ways around the above with union and intersection typing (using untagged unions), but although typechecking is decidable withing this framework, it’s complex and probably slow (I couldn’t find a real implementation in code of the relevant algorithms). This typesystem seems to be a conservative extention of HM, so whatever you can do in HM you can do here, but now youcan have lispy lists and some delicious “dynamically typed” AST fragments for your macros to eat.</p>
<p>But the pain point here is that you lose the simplicity of the HM typesystem.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="79110" 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/mlelixir-attempting-an-ml-traditional-syntax-entirely-within-the-elixir-ast/3693/104">Post #103</a>
	                </div>
	            </div>
              <div id="likers-container-79110" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="79110"
                     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 #103"></div>
  </section>
</div>
    <div class="postbit" id="79139" data-post-id="79139">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="gon782" src="/assets/icons/user-9f439610.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  gon782
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Someone could /should implement Shen (<a href="http://www.shenlanguage.org/learn-shen/index.html" rel="noopener nofollow ugc">http://www.shenlanguage.org/learn-shen/index.html</a>) on the BEAM. But the type system is not HM and the macros aren’t actually just normal macros. There is a source level prolog in it that you can use for much more.</p>
<p>It’s an incredibly odd beast.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="79139" 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/mlelixir-attempting-an-ml-traditional-syntax-entirely-within-the-elixir-ast/3693/105">Post #104</a>
	                </div>
	            </div>
              <div id="likers-container-79139" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="79139"
                     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 #104"></div>
  </section>
</div>
    <div class="postbit" id="79369" data-post-id="79369">
  <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
                    <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="gon782" data-post="105" data-topic="3693">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/letter_avatar_proxy/v4/letter/g/eada6e/48.png" class="avatar"> gon782:</div>
<blockquote>
<p>It’s an incredibly odd beast.</p>
</blockquote>
</aside>
<p>It really is, I’ve looked at it a couple of times but not sunk the time in to it yet to learn it, but it’s on my list…</p>
<p><em>/me can’t help but think of machin shin when reading about shen though…</em></p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="79369" 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/mlelixir-attempting-an-ml-traditional-syntax-entirely-within-the-elixir-ast/3693/106">Post #105</a>
	                </div>
	            </div>
              <div id="likers-container-79369" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="79369"
                     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 #105"></div>
  </section>
</div>
    <div class="postbit" id="103524" data-post-id="103524">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Hi.</p>
<p>So what is the status of this MLixir?</p>
<p>Having done some digging into ReasonML and PureScript I would love to have their type capabilities on top of BEAM. <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"> (PureScript and Elm seem to have more in common with elixir’s way of allowing one to write code than ReasonML does. PureScript’s libraries also seemed to be clearer and cleaner than ReasonML’s so I ended up switching. The biggest selling point of elixir to me are its top-notch libraries built on top-notch Erlang libraries.)</p>
<p>I personally have been extremely productive in elixir but many of my co-workers complain about the lack of typing which makes it harder to comprehend code you haven’t written yourself. While my elixir code (and the naming) tends to be crafted to convey its intention most of all, many people find it easier to reason about strongly typed code.</p>
<p>(And regarding the side discussion above: I just love Lisp. I guess I should check out <em>lfe</em> again. It looked pretty good last time I checked. <img src="https://forum.elixirforum.com/images/emoji/apple/slightly_smiling_face.png?v=15" title=":slightly_smiling_face:" class="emoji" alt=":slightly_smiling_face:" loading="lazy" width="20" height="20">)</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="103524" 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/mlelixir-attempting-an-ml-traditional-syntax-entirely-within-the-elixir-ast/3693/107">Post #106</a>
	                </div>
	            </div>
              <div id="likers-container-103524" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="103524"
                     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 #106"></div>
  </section>
</div>
    <div class="postbit" id="103693" data-post-id="103693">
  <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
                    <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="Oliver" data-post="107" data-topic="3693">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/oliver/48/1167_2.png" class="avatar"> Oliver:</div>
<blockquote>
<p>So what is the status of this MLixir?</p>
</blockquote>
</aside>
<p>Just a playground to see how much I can twist Elixir’s AST.  ^.^</p>
<p>No time lately (busy busy at work) for much development though, but as it was never intended for a useable ‘language’ that’s fine.  There are a few things I’d do different if it were to be an ‘enhanced’ elixir on elixir.</p>
<aside class="quote no-group" data-username="Oliver" data-post="107" data-topic="3693">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/oliver/48/1167_2.png" class="avatar"> Oliver:</div>
<blockquote>
<p>many people find it easier to reason about strongly typed code.</p>
</blockquote>
</aside>
<p>+1 !</p>
<aside class="quote no-group" data-username="Oliver" data-post="107" data-topic="3693">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/oliver/48/1167_2.png" class="avatar"> Oliver:</div>
<blockquote>
<p>(And regarding the side discussion above: I just love Lisp. I guess I should check out <em>lfe</em> again. It looked pretty good last time I checked. <img src="https://forum.elixirforum.com/images/emoji/apple/slightly_smiling_face.png?v=15" title=":slightly_smiling_face:" class="emoji" alt=":slightly_smiling_face:" loading="lazy" width="20" height="20">)</p>
</blockquote>
</aside>
<p>Oh it’s awesome, if it had read-macro’s then it would be essentially ‘complete’!  <em>*Hint*hint*<a class="mention" href="/u/rvirding" rel="nofollow">@rvirding</a>*hint*</em>  ^.^</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="103693" 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/mlelixir-attempting-an-ml-traditional-syntax-entirely-within-the-elixir-ast/3693/108">Post #107</a>
	                </div>
	            </div>
              <div id="likers-container-103693" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="103693"
                     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>