title: Elixir keyword list in function's argument
body: <p>given a function:</p>
  
  <pre><code>def foo(a, opts \\ []), do: opts
  </code></pre>
  
  <p>I can call this function this way: </p>
  
  <pre><code>foo 1, b: 2
  </code></pre>
  
  <p>I know <code>b: 2</code> is the same as <code>[b: 2]</code>,
  but I can't do that in iex, such as:</p>
  
  <pre><code>iex(1) a: 2, b: 2
  ** (SyntaxError) iex:1: syntax error before: a
  </code></pre>
  
  <p>so I want to know, why the keyword list in function's argument is
  different?</p>