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


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I have a long background in OO programming, just started learning elixir.<br>
I think functional languages in general will “win”  from oo languages. Watch this video from Simon Peyton -Jones to hear arguments <a href="https://www.youtube.com/watch?v=hlyQjK1qjw8" rel="noopener nofollow ugc">https://www.youtube.com/watch?v=hlyQjK1qjw8</a>. Furthermore I don’t believe providing languages like C# and java with functional elements will save them. I don’t believe in hybrid languages. See <a href="http://queue.acm.org/detail.cfm?id=2611829" rel="noopener nofollow ugc">http://queue.acm.org/detail.cfm?id=2611829</a> (Erik Meijer).</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="4310" 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-vs-c/670/12">Post #11</a>
	                </div>
	            </div>
              <div id="likers-container-4310" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="4310"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #11"></div>
  </section>
</div>
    <div class="postbit" id="4320" data-post-id="4320">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="Ilyes512" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/Ilyes512/120/795_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  Ilyes512
                    <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="benwilson512" data-post="11" data-topic="670">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/benwilson512/48/1457_2.png" class="avatar"> benwilson512:</div>
<blockquote>
<p>There is no such thing as module state.</p>
</blockquote>
</aside>
<p>Well, I thought because he showed an example of “OO” with Elixir that it would somehow store state as it is a key factor of OO programming.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="4320" 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-vs-c/670/13">Post #12</a>
	                </div>
	            </div>
              <div id="likers-container-4320" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="4320"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #12"></div>
  </section>
</div>
    <div class="postbit" id="4327" data-post-id="4327">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Modules do not have state, but processes do. And the processes are often named for the module that manages them. That may sound like splitting hairs, but it is a truly important distinction. A process can call code from any module, and the “managing” module of a process can also have functions expected to be called from other processes – in fact that is actually what you get by following OTP recommendations.</p>
<p>Modules are a code organization feature. Processes are a runtime organization feature.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="4327" 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-vs-c/670/14">Post #13</a>
	                </div>
	            </div>
              <div id="likers-container-4327" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="4327"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #13"></div>
  </section>
</div>
    <div class="postbit" id="4339" data-post-id="4339">
  <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>Yes, you often write modules which contain functions that are intended to be called in different processes.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="4339" 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-vs-c/670/15">Post #14</a>
	                </div>
	            </div>
              <div id="likers-container-4339" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="4339"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #14"></div>
  </section>
</div>
    <div class="postbit" id="4364" data-post-id="4364">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>OK, I really haven’t read any replies from the page but I’m going to give you some pros about Elixir.</p>
<h1><a name="p-4364-about-the-oo-part-1" class="anchor" href="#p-4364-about-the-oo-part-1" aria-label="Heading link" rel="nofollow"></a>About the “OO” part</h1>
<p>Ask your colleague if he ever heard of Dr. Alan Kay. Kay was the computer scientist who <strong>coined</strong> the term “Object Oriented Programming”. He invented the paradigm.</p>
<p>The truth is, Elixir is <strong>object oriented</strong>. In the classical sense. I won’t get into it, but you can check out the rationale <a href="http://tech.noredink.com/post/142689001488/the-most-object-oriented-language" rel="noopener nofollow ugc">here</a> (seriously, go read that article!).<br>
Actually, is C# <strong>who can’t get it’s own object orientation **** together</strong>. That’s not C# nor Microsofts fault though.</p>
<h1><a name="p-4364-about-the-c-can-do-what-elixir-does-part-2" class="anchor" href="#p-4364-about-the-c-can-do-what-elixir-does-part-2" aria-label="Heading link" rel="nofollow"></a>About the “C# can do what Elixir does” part</h1>
<p>Well, that’s not actually true. Ask him about compile time macros. Ask him if, with C#, you can do this:</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">defmodule MimeTypes do
  HTTPotion.start
  HTTPotion.Response[body: body] = HTTPotion.get "http://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types"

  Enum.each String.split(body, %r/\n/), fn (line) -&gt;
    unless line == "" or line =~ %r/^#/ do
      [ mimetype | _exts ] = String.split(line)

      def is_valid?(unquote(mimetype)), do: true
    end
  end

  def is_valid?(_mimetype), do: false
end
</code></pre>
<p>The whole article can be found <a href="http://devintorr.es/blog/2013/06/11/elixir-its-not-about-syntax/" rel="noopener nofollow ugc">here</a>.<br>
Seriously. Take a good look at that code, because it <strong>breathes</strong> awesomeness. That code is <em>compile time</em> code that goes into the SVN of <strong>freakin’ Apache</strong>, takes out all the <strong>valid mime types</strong> FROM THE SOURCE, IN COMPILE TIME, and creates functions for all of them.</p>
<p>I’ve never seen C# code like that.</p>
<h1><a name="p-4364-about-the-part-that-elixir-is-awesome-3" class="anchor" href="#p-4364-about-the-part-that-elixir-is-awesome-3" aria-label="Heading link" rel="nofollow"></a>About the part that Elixir is awesome???</h1>
<p>No need to say anything about that. It is. Period.</p>
<h1><a name="p-4364-about-the-part-that-erlang-is-awesome-4" class="anchor" href="#p-4364-about-the-part-that-erlang-is-awesome-4" aria-label="Heading link" rel="nofollow"></a>About the part that Erlang is awesome</h1>
<p>Do you know of a project written in C# by a team of 30 people who can do 2 million concurrent connections in a single server, also backed by a large tech company? Well, I do know one in Erlang: <strong>Whatsapp</strong>.<br>
Which is the base for Elixir. I don’t think I need to say anything more.</p>
<h1><a name="p-4364-about-the-part-of-more-job-opportunities-5" class="anchor" href="#p-4364-about-the-part-of-more-job-opportunities-5" aria-label="Heading link" rel="nofollow"></a>About the part of “more job opportunities”</h1>
<p>As people from the software area, we all know the game changes too fast. There may not be jobs now, but I’m sure there were a group of people that dismissed Rails back in 2004 saying there would be no jobs for Ruby. And here we are, aren’t we?<br>
I missed the Rails bandwagon, but I won’t miss the Phoenix bandwagon.</p>
<h1><a name="p-4364-distributed-programming-is-easy-with-elixir-6" class="anchor" href="#p-4364-distributed-programming-is-easy-with-elixir-6" aria-label="Heading link" rel="nofollow"></a>Distributed programming is easy with Elixir</h1>
<p>C# though? Hell no. In my company we kinda use C# for everything, and I must say that distributed C# is <strong>painful</strong>. With Elixir, though? Hell, give me 3 machines so I can boost my app up!</p>
<p>Anyways, is great to have different opinions. Elixir isn’t great for everything, and the same can be said about C#. Right tool for the job, always. I hope I could shed some light on some of the many good points of Elixir.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="4364" data-batch-url="/posts/batch_likers">
                        8
                      </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-vs-c/670/16">Post #15</a>
	                </div>
	            </div>
              <div id="likers-container-4364" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="4364"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #15"></div>
  </section>
</div>
    <div class="postbit" id="4369" data-post-id="4369">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I code C# and Elixir in production for the same project. C# is really nice for mobile, I use it on Unity3D and Xamarin, I think C# is the nicest classic OO (excluding the new “modern” OO like Kotlin and Ceylon). I’ve also used C# on the server side. With all this I have to say that Elixir is much better on the server. The thing with C# is that:</p>
<ol>
<li>Its type system is not strong or flexible enough, types aren’t inferred, your code is very verbose.</li>
<li>Functional programming is not first class by any means. Linq is nice but that doesn’t mean you get pattern matching, persistent data types, etc.</li>
</ol>
<p>Personally, I would only use C# for what I use it: Mobile. ASP is by no means a top notch framework, they’ve been trying to make it modern, it had severe scalability constraints, vNext is looking nicer than ever specially since its open source. That said you will get farther on the server is Elixir and OTP.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="4369" 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-vs-c/670/17">Post #16</a>
	                </div>
	            </div>
              <div id="likers-container-4369" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="4369"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #16"></div>
  </section>
</div>
    <div class="postbit" id="4436" data-post-id="4436">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>With respect aren’t we comparing Apple to Orange. We should compare Elixir with F# and learn many things from it. Here is an equivalent code snippet in F#:</p>
<p><code>indent preformatted text by 4 spaces</code></p>
<pre><code>open System.Net
open System
open System.IO

module Mimtype =
    let url = "http://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types"

    let splitLines (s:string) = 
      List.ofSeq(s.Split([|'\n'|]))

    let unless (s:String) =
        match s with
        | str when str = String.Empty || str.StartsWith("#")  -&gt; false
        | _ -&gt; true

   let isValid mimetype = 
      let wc = new WebClient()
      wc.DownloadString(url) 
      |&gt; splitLines
      |&gt; List.filter unless
      |&gt; List.exists (fun x -&gt; x.StartsWith(mimetype))
</code></pre>
<p>(Disclaimer: I am not a F# expert. I am currently learning Elixir and amazed by the beauty of the language)</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="4436" data-batch-url="/posts/batch_likers">
                        4
                      </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-vs-c/670/18">Post #17</a>
	                </div>
	            </div>
              <div id="likers-container-4436" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="4436"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #17"></div>
  </section>
</div>
    <div class="postbit" id="4439" data-post-id="4439">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>There are some practical problems with C#. It is very tied to the Visual Studio IDE. While many people like it, there are also many who don’t, reasons being bloatedness, slowness and frankly, compared to tools from IntelliJ also quite lacking in features. You could develop C# without the IDE, but I have not seen anyone to pull that one off.</p>
<p>To make the IDE function, VS uses code generation and wizards with lots of magic. These features hide unnecessary code complexity [in the generated code], complexity that I have not yet found in Elixir (or many other languages for that sake). What I mean here is that I would rather have some simple code that I write and understand myself, rather than a large chunk of generated (possibly two-way edit-generate) that is working, but not very easy to understand.</p>
<p>I would also argue that as a representative of moden software development, C# is a poor choice: As an example I was not able to create a library that was stores as source files. I needed to create a DLL file in order to link the library into my ‘solution’ and then depended on the commercial product TeamCenter in order to have debugging in source code. I actually spent quite some time om this problem that would have been trivial in mort other languages (I would also say recommended). C#/VS made it difficult for no reason other that, I presume, the cultural difference that source code should be protected and not shared.</p>
<p>Wrt to libraries, I have found many of C#'s to be poor copies of Ruby/Pyton/Clojure stuff, but lacking in refinement, depth and inspiration.</p>
<p>I would also argue that I personally find the documentation for C# core libraries difficult to navigate and quite poor in general. It is a testament to Jose Valim’s great abilities that Elixir is far superior <em>IMHO</em> even after just a few years with a few person’s effort, compared to the resources that are available to Microsoft…</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="4439" 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-vs-c/670/19">Post #18</a>
	                </div>
	            </div>
              <div id="likers-container-4439" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="4439"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #18"></div>
  </section>
</div>
    <div class="postbit" id="4442" data-post-id="4442">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I totally agree. C# is just better Java <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"> in Microsoft Ecosystem.</p>
<p>If you absolutely have to work in .NET CLR use F#.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="4442" 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-vs-c/670/20">Post #19</a>
	                </div>
	            </div>
              <div id="likers-container-4442" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="4442"
                     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 #19"></div>
  </section>
</div>
    <div class="postbit" id="4480" data-post-id="4480">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>You’re right, maybe we are comparing apples and oranges.<br>
But it depends on what perspective you are seeing. Is it paradigms? Totally apple vs orange.<br>
Is it server side programming? Totally not, we are evaluating two different tools and what they have to offer.</p>
<p>And thanks for the F# code! I’ve never looked into it (out of pure prejudice, I must admit) but it is pretty neat. Easy to read, easy to follow.<br>
But there is one key distinction there:</p>
<aside class="quote no-group" data-username="zahid" data-post="18" data-topic="670">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/zahid/48/403_2.png" class="avatar"> zahid:</div>
<blockquote>
<p>let isValid mimetype =<br>
let wc = new WebClient()<br>
wc.DownloadString(url)<br>
|&gt; splitLines<br>
|&gt; List.filter unless<br>
|&gt; List.exists (fun x -&gt; x.StartsWith(mimetype))</p>
</blockquote>
</aside>
<p>That piece of code opens up an HTTP client every time <code>isValid</code> is called. The code from Elixir is 100% different. The <code>is_valid?</code> from the code I’ve written doesn’t open any HTTP connections. All possible mimetypes are compiled as bytecode from the module source, which only fetches them once. In fact, this technique is used by Elixir authors to properly support UTF8.</p>
<p>Now, maybe F# is great and also has a macro system and homoiconicity. But there is also one thing you can’t beat: Erlang VM. The Erlang VM can give your programs some reliabilities (supervisors, workers, fault tolerance, automatic restarts, distributed goodness) that the CLR just can’t.<br>
And that’s ok! They were built for different problems, anyway. It all <strong>depends</strong> on what you want to achieve.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="4480" data-batch-url="/posts/batch_likers">
                        4
                      </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-vs-c/670/21">Post #20</a>
	                </div>
	            </div>
              <div id="likers-container-4480" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="4480"
                     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 #20"></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/670/load_more?page=3">Load more posts (35 remaining)</a>
</div></template></turbo-stream>