2019Tweet[https://twitter.com/yyu:embed]protocolはassociatedtypeといった、いわゆる存在型しか扱うことができない。あるprotocolに対してextensionで機能を与えるとき、associatedtypeには必ずなんらかの具体的な型を入れることが求められる。protocol/extensionは型に基づいて関数を探すような動きをするため、どこかでは具体的な型が必要となるが、たとえば任意の型AについてList[A]を最終的に利用するようなextensionを書きたい時がある。このトークでは、カリー=ハワード同型対応を利用してassociatedtypeのような存在型からジェネリクスを無理やり生み出す方法について考察する。今日はちょっと、プロトコルとエクステンション、そのなかにどうGenericsを放り込むかについて軽く解説できれば今日の流れ変わった実装を紹介しつつメソッドを実行することでお伝えしたいProtocolExtensionについておさらいをして、最終的な解決方法を述べてまとめ。筑波大学で型システムやプログラミング言語をやっていましたScalaエンジニアです。