protocol Point { associatedtype T }

プロトコルを受け取ることは出来ても
func f<P>(_ p:P) where P:Point, P.T == Int { }

プロトコルで返せないし保持も出来ない
func f() -> Point<Float> { ... }

なのでSequenceでは
suffix(...) -> AnySequence<Element> のように
オーバーライド出来るようType Eraseのstructで実装を隠すか

lazy: LazySequence<Self> のように開き直って
ラップされてる型すら丸出しで返している
AnyLazySequence<Element>ですらない

今後もこれで行くのだろう