title: Passing function on self without parameters to the function (like map/filter etc.) doesn't call the function but wraps as a block without args
body: <p>Given:</p>
  
  <pre><code>class Elem {
      func f() -&gt; AnotherElem {
          return AnotherElem(elem: self)
      } 
  }
  </code></pre>
  
  <p>I want to call the map function on array of <code>Elem</code>s passing the function f:</p>
  
  <p>Sample code:</p>
  
  <pre><code>collection.map { $0.f() }
  </code></pre>
  
  <p>However, I don't like this <code>{}</code> notation so I was thinking whether or not I can pass a function as an argument (which in my eyes increases readability), and indeed I can
  What I want is to do the following:</p>
  
  <pre><code>collection.map(Elem.f)
  </code></pre>
  
  <p>The last is valid syntax however the type of the array is the following: <code>[() -&gt; AnotherElem]</code> instead of expected <code>[AnotherElem]</code> type.</p>
  
  <p>Is a bug or a feature?</p>
  
  <p>Obviously, this could be solved by calling <code>map</code> again and calling the array of blocks, but this is not the problem I'm having.</p>
  
  <p>I'm struggling to understand why it is the way it is</p>