<turbo-stream action="append" target="posts_list"><template>    <div class="postbit" id="32042" data-post-id="32042">
  <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">
								<p>More function tests and capabilities:</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">    def testering_func24 = testering_func9 1, _
    def testering_func25 = testering_func9 _, 2
    def testering_func26a(a, b, c, d, e) = {a, b, c, d, e}
    def testering_func26b(b) = testering_func26a 1, b
    def testering_func26c(c) = testering_func26b 2, c
    def testering_func26d(d) = testering_func26c 3, d
    def testering_func26(e) = testering_func26d 4, e
    def testering_func27(e) = testering_func26a _, _, _, _, e
    def testering_func28(e) = testering_func26b _, _, _, e
    def testering_func29(e) = testering_func26a _3, _2, _1, _0, e
</code></pre>
<p>Used from Elixir like:</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">    assert MLModuleTest_Specific.testering_func24().(2, 3) === {1, 2, 3}
    assert MLModuleTest_Specific.testering_func25().(1, 3) === {1, 2, 3}
    assert MLModuleTest_Specific.testering_func26(5) === {1, 2, 3, 4, 5}
    assert MLModuleTest_Specific.testering_func27(5).(1, 2, 3, 4) === {1, 2, 3, 4, 5}
    assert MLModuleTest_Specific.testering_func28(5).(2, 3, 4) === {1, 2, 3, 4, 5}
    assert MLModuleTest_Specific.testering_func29(5).(4, 3, 2, 1) === {1, 2, 3, 4, 5}
</code></pre>
<p>Generates:</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">  def(testering_func24()) do
    fn ($var_0_22, $var_1_23) when is_integer($var_1_23) and is_integer($var_0_22) -&gt; testering_func9(1).($var_0_22, $var_1_23) end
  end
  def(testering_func25()) do
    fn ($var_0_24, $var_0_25) when is_integer($var_0_25) and is_integer($var_0_24) -&gt; testering_func9($var_0_24).(2, $var_0_25) end
  end
  def(testering_func26a(a, b, c, d, e)) do
    {a, b, c, d, e}
  end
  def(testering_func26b(b)) do
    fn $var_0_26, $var_1_27, $var_2_28 -&gt; testering_func26a(1, b, $var_0_26, $var_1_27, $var_2_28) end
  end
  def(testering_func26c(c)) do
    fn $var_0_29, $var_1_30 -&gt; testering_func26b(2).(c, $var_0_29, $var_1_30) end
  end
  def(testering_func26d(d)) do
    fn $var_0_31 -&gt; testering_func26c(3).(d, $var_0_31) end
  end
  def(testering_func26(e)) do
    testering_func26d(4).(e)
  end
  def(testering_func27(e)) do
    fn $var_0_32, $var_1_33, $var_2_34, $var_3_35 -&gt; testering_func26a($var_0_32, $var_1_33, $var_2_34, $var_3_35, e) end
  end
  def(testering_func28(e)) do
    fn $var_0_36, $var_0_37, $var_1_38 -&gt; testering_func26b($var_0_36).($var_0_37, $var_1_38, e) end
  end
  def(testering_func29(e)) do
    fn $var_0_42, $var_1_41, $var_2_40, $var_3_39 -&gt; testering_func26a($var_3_39, $var_2_40, $var_1_41, $var_0_42, e) end
  end
</code></pre>
<p>And most importantly, as always, if you pass in a wrong type it yells at you properly.  ^.^</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="32042" 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/mlelixir-attempting-an-ml-traditional-syntax-entirely-within-the-elixir-ast/3693/42">Post #41</a>
	                </div>
	            </div>
              <div id="likers-container-32042" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="32042"
                     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="32045" data-post-id="32045">
  <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">
								<p>Added the ability to call bindings, so you can pass functions around first-class now.  Example</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">    def testering_func30(f) = f(2)
    def testering_func31(value, f) = f(value)
</code></pre>
<p>Used in Elixir itself like:</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">    assert MLModuleTest_Specific.testering_func30(fn x -&gt; x + 1 end) === 3
    assert MLModuleTest_Specific.testering_func31(21, fn x -&gt; x * 2 end) === 42
</code></pre>
<p>And it compiled as:</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">  def(testering_func30(f) when is_function(f, 1)) do
    f.(2)
  end
  def(testering_func31(value, f) when is_function(f, 1)) do
    f.(value)
  end
</code></pre>
<p>I may have also added support for operator overloading (only the elixir set since I am working within Elixir’s AST after all), so this works:</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">    def value |&gt; fun = fun(value)
    # let value |&gt; fun = fun(value) # Both work as always
    def testering_op_pipe0 = 42 |&gt; testering_tuple5
    def identity(i) = i
    def testering_op_pipe1(i) =
      42
      |&gt; identity
      |&gt; testering_func1(1, _, i)
</code></pre>
<p>Which can be used from Elixir like:</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">      import Kernel, except: [|&gt;: 2]
      import MLModuleTest_Specific, only: [|&gt;: 2]
      assert (21 |&gt; (&amp;(&amp;1*2))) === 42
      assert MLModuleTest_Specific.testering_op_pipe0() === {42}
      assert MLModuleTest_Specific.testering_op_pipe1(3) === {1, 42, 3}
</code></pre>
<p>Which generates this code:</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">  def(value |&gt; fun when is_function(fun, 1)) do
    fun.(value)
  end
  def(testering_op_pipe0()) do
    42 |&gt; fn $var_44 -&gt; (fn $var_0_43 when is_integer($var_0_43) -&gt; testering_tuple5($var_0_43) end).($var_44) end
  end
  def(identity(i)) do
    i
  end
  def(testering_op_pipe1(i) when is_integer(i)) do
    42 |&gt; fn $var_46 -&gt; (fn $var_0_45 -&gt; identity($var_0_45) end).($var_46) end |&gt; fn $var_48 -&gt; (fn $var_0_47 when is_integer($var_0_47) -&gt; testering_func1(1, $var_0_47, i) end).($var_48) end
  end
</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="32045" 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/43">Post #42</a>
	                </div>
	            </div>
              <div id="likers-container-32045" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="32045"
                     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="32451" data-post-id="32451">
  <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">
								<p>Enhanced bindings to become full matches, thus you can now destructure things, like this:</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">    def testering_binding0(i) = i
    def testering_binding1(i | integer) = i
    def testering_binding2(42) = 42
    def testering_binding3(42 | integer) = 42
    def testering_binding4(42 = i) = i
    def testering_binding5(i = 42) = i
    def testering_binding6({i}) = i
    def testering_binding7({42}) = 42
    def testering_binding8({i | integer}) = i
    def testering_binding9({i | integer} | {integer}) = i
    def testering_binding10({i} | {integer}) = i
    def testering_binding11({i}=t) = {i, t}
    def testering_binding12(%{a: i | integer}) = i
    def testering_binding13(%{a: i | integer}=r) = %{b: r}
</code></pre>
<p>Which can be used from Elixir itself like this:</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">    assert MLModuleTest_Specific.testering_binding0(42) == 42
    assert MLModuleTest_Specific.testering_binding1(42) == 42
    assert MLModuleTest_Specific.testering_binding2(42) == 42
    assert MLModuleTest_Specific.testering_binding3(42) == 42
    assert MLModuleTest_Specific.testering_binding4(42) == 42
    assert MLModuleTest_Specific.testering_binding5(42) == 42
    assert MLModuleTest_Specific.testering_binding6({42}) == 42
    assert MLModuleTest_Specific.testering_binding7({42}) == 42
    assert MLModuleTest_Specific.testering_binding8({42}) == 42
    assert MLModuleTest_Specific.testering_binding9({42}) == 42
    assert MLModuleTest_Specific.testering_binding10({42}) == 42
    assert MLModuleTest_Specific.testering_binding11({42}) == {42, {42}}
    assert MLModuleTest_Specific.testering_binding12(%{a: 42}) == 42
    assert MLModuleTest_Specific.testering_binding13(%{a: 42}) == %{b: %{a: 42}}
</code></pre>
<p>And is compiled to this:</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">  def(testering_binding0(i)) do
    i
  end
  def(testering_binding1(i) when is_integer(i)) do
    i
  end
  def(testering_binding2(42)) do
    42
  end
  def(testering_binding3(42)) do
    42
  end
  def(testering_binding4(42 = i) when is_integer(i)) do
    i
  end
  def(testering_binding5(i = 42) when is_integer(i)) do
    i
  end
  def(testering_binding6({i})) do
    i
  end
  def(testering_binding7({42})) do
    42
  end
  def(testering_binding8({i}) when is_integer(i)) do
    i
  end
  def(testering_binding9({i}) when is_integer(i)) do
    i
  end
  def(testering_binding10({i}) when is_integer(i)) do
    i
  end
  def(testering_binding11({i} = t) when tuple_size(t) === 1 and is_tuple(t)) do
    {i, t}
  end
  def(testering_binding12(%{a: i}) when is_integer(i)) do
    i
  end
  def(testering_binding13(%{a: i} = r) when is_map(r) and is_integer(i)) do
    %{b: r}
  end
</code></pre>
<p>Sooo, I guess now real things could start being written…  ^.^</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="32451" 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/44">Post #43</a>
	                </div>
	            </div>
              <div id="likers-container-32451" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="32451"
                     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="32846" data-post-id="32846">
  <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">
								<p>Fixed typing bugs, I.E. types fully go ‘up’ to function arguments now too, was shown by and is fixed now in code like:</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">defmlmodule Testering do
  def identity_typed(i|integer) = i
  def pipe(value, f) = f(value)
  def tester(i) = pipe(i, identity_typed)
end
</code></pre>
<p>Which generates code like:</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">defmodule(Testering) do
  import(Kernel, only: [def: 2, is_integer: 1, is_function: 2])
  def(identity_typed(i) when is_integer(i)) do
    i
  end
  def(pipe(value, f) when is_function(f, 1)) do
    f.(value)
  end
  def(tester(i) when is_integer(i)) do
    pipe(i, fn $var_1 when is_integer($var_1) -&gt; (fn $var_0_0 when is_integer($var_0_0) -&gt; identity_typed($var_0_0) end).($var_1) end)
  end
end
</code></pre>
<p>I think I need to collapse some wrappers down when they are identical…  &gt;.&gt;<br>
Only an optimization though (and since they are internally private the EVM/BEAM should make them vanish anyway, so I don’t really care right now).</p>
<p>Either way, things like this are now fully type safe and properly error out if you try to do something like this:</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">defmlmodule Testering do
  def identity_typed(i|integer) = i
  def value |&gt; fun = fun(value)
  def tester1(i | float) = i |&gt; identity_typed
  def tester2() = 6.28 |&gt; identity_typed
end
</code></pre>
<p>Both <code>tester1/1</code> and <code>tester2/0</code> will error at compile-time with something like:</p>
<blockquote>
<p>No Type Resolutions between <code>float</code> and <code>integer</code></p>
</blockquote> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="32846" 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/45">Post #44</a>
	                </div>
	            </div>
              <div id="likers-container-32846" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="32846"
                     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="39932" data-post-id="39932">
  <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>This is very cool. Don’t you want to go full string to get rid of elixir’s AST? A strongly typed language with interfaces to elixir and using mix would be pretty cool.</p>
<p>Or even a strongly typed lisp with HM types</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="39932" 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/mlelixir-attempting-an-ml-traditional-syntax-entirely-within-the-elixir-ast/3693/46">Post #45</a>
	                </div>
	            </div>
              <div id="likers-container-39932" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="39932"
                     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="40005" data-post-id="40005">
  <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="tmbb" data-post="46" data-topic="3693" data-full="true">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/letter_avatar_proxy/v4/letter/t/77aa72/48.png" class="avatar"> tmbb:</div>
<blockquote>
<p>This is very cool. Don’t you want to go full string to get rid of elixir’s AST? A strongly typed language with interfaces to elixir and using mix would be pretty cool.</p>
<p>Or even a strongly typed lisp with HM types</p>
</blockquote>
</aside>
<p>I actually have an <code>ElixirML</code> project (with <code>*.eml</code> files) for that, and yes you can embed strings in a macro by calling it directly as well.  This project (the whole ‘Typed Elixir’ project) is just for screwing around with and seeing how far I can push Elixir Macro’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>
<p><code>eml</code> is <em>not</em> ready for consumption and it is mostly a mish-mash of code (as is MLElixir really too, the git repo is the code that ‘works together’, it is not the main bulk of code, which I keep on bitbucket and gitlab (backups, gitlab is soooo sloooow)).  If I decide to take the code, clean it up a bit and make it in to a proper system then I’d put it on github, but right now it is ‘not’ pleasant to look at the code for it (though it works’ish).  ^.^</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">def doStuff(c) do
  eml [c: c], """
    let a = 21 in
    let b = a * c in
    b + SomeEmlModule.blah 42
  """
end
</code></pre>
<p>I have thought of making an <code>lfe</code> style project but to integrate with elixir (integration with elixir macro’s and all) with Types (I so love types, I could even handle the weird Elixir syntax fine if Elixir had Types) too, just never got around to it yet.  I’ve been moving houses the past month+ so my home programming time has vanished currently (should resume in the next week or two, whooo), but that has been an idea as well.  <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><em>/me implements too many languages, almost made as many in Elixir as has made in C++, even made a BEAM-style distributed async setup for C++ almost a decade ago…</em></p>
<p>I tend to lean to languages that are both typed as well as are as homoiconic as I can really make them for their problem domain.  <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="40005" 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/47">Post #46</a>
	                </div>
	            </div>
              <div id="likers-container-40005" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="40005"
                     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="40015" data-post-id="40015">
  <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>If you’re taking user feedback, I’d prefer LFE + types + elixir interop <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="40015" 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/mlelixir-attempting-an-ml-traditional-syntax-entirely-within-the-elixir-ast/3693/48">Post #47</a>
	                </div>
	            </div>
              <div id="likers-container-40015" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="40015"
                     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="40017" data-post-id="40017">
  <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="tmbb" data-post="48" 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/t/77aa72/48.png" class="avatar"> tmbb:</div>
<blockquote>
<p>If you’re taking user feedback, I’d prefer LFE + types + elixir interop <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>
</blockquote>
</aside>
<p>Lol, I always do, and as there is interest in that then my next playground project might be just that.  ^.^</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="40017" 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/49">Post #48</a>
	                </div>
	            </div>
              <div id="likers-container-40017" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="40017"
                     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="40237" data-post-id="40237">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="rvirding" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/rvirding/120/1409_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  rvirding
                  </h3>
		          </div>
						
			          <div class="user-title">
									<span>Creator of Erlang</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>What do you mean by “elixir interop”. There is no problem calling elixir&lt;-&gt;lfe of course and we even have binary utf-8 encoded string as well. #“detta är en binär sträng”</p>
<p>The latest version of LFE has a type and spec syntax which allows you to write Erlang compatible types. No checking yet. I will fix it to make dialyzer usable for LFE. Had it working a while back but that was a quick hack, which did actually work.</p>
<p>LFE doesn’t compile to erlang AST but straight to Core erlang.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="40237" 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/mlelixir-attempting-an-ml-traditional-syntax-entirely-within-the-elixir-ast/3693/50">Post #49</a>
	                </div>
	            </div>
              <div id="likers-container-40237" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="40237"
                     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="40244" data-post-id="40244">
  <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>It’s mostly types actually <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"> I’d like a statically typed lisp. I’ve never really looked at LFE and only know it is dynamically typed from one of your talks. I didn’t mean to imply that LFE didn’t support calling Elixir and vice versa. I just wanted to try a statically typed lisp running on the BEAM, whether it is LFE or something else.</p>
<p>But using dialyzer means you’re limited to success typing instead of something like the Hindley–Milner type system (or equivalent), right?</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="40244" 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/mlelixir-attempting-an-ml-traditional-syntax-entirely-within-the-elixir-ast/3693/51">Post #50</a>
	                </div>
	            </div>
              <div id="likers-container-40244" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="40244"
                     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/3693/load_more?page=6">Load more posts (56 remaining)</a>
</div></template></turbo-stream>