title: Why don't associated types for protocols use generic type syntax in Swift?
body: <p>I'm confused about the difference between the syntax used for associated types for protocols, on the one hand, and generic types on the other.</p>
  <p>In Swift, for example, one can define a generic type using something like</p>
  <pre><code>struct Stack&lt;T&gt; {
      var items = [T]()
      mutating func push(item: T) {
          items.append(item)
      }
      mutating func pop() -&gt; T {
          return items.removeLast()
      }
  }
  </code></pre>
  <p>while one defines a protocol with associated types using something like</p>
  <pre><code>protocol Container {
      associatedtype T
      mutating func append(item: T)
      var count: Int { get }
      subscript(i: Int) -&gt; T { get }
  }
  </code></pre>
  <p>Why isn't the latter just:</p>
  <pre><code>protocol Container&lt;T&gt; {
      mutating func append(item: T)
      var count: Int { get }
      subscript(i: Int) -&gt; T { get }
  }
  </code></pre>
  <p>Is there some deep (or perhaps just obvious and lost on me) reason that the language hasn't adopted the latter syntax?</p>