title: Why are basic functions in Elixir (i.e. length/1) under the default Kernel module?
body: <p>The Kernel module in Elixir provides a lot of functionality, and by default is imported anywhere without requiring the prefix <code>Kernel</code>. However, many of these functions act only on a particular data type.</p>
  
  <p>The ones that stand out to me are those that operate on lists, like <a href="https://hexdocs.pm/elixir/Kernel.html#length/1" rel="nofollow noreferrer"><code>length/1</code></a>, <code>hd/1</code>, and <code>tl/1</code>. Elixir already has a <a href="https://hexdocs.pm/elixir/List.html" rel="nofollow noreferrer"><code>List</code> module</a>, so why were these functions not included in the List module (i.e. <code>List.length/1</code>)?</p>
  
  <p>I understand for commonly used functions that it is shorter and more convenient, but would it then not have been to duplicate the functionality in a module like <code>List</code> using an alias? Are there language conventions or a technical limitations that would have made this difficult given that these functions are implemented as macros and inlined by the compiler.?</p>