Avatar
func foo(x: some P) -> some P これはそもそも同じ型にできない。 (edited)
7:08 AM
func foo<T: P>(x: T) -> T が必要で、同じように考えると
7:09 AM
func foo<E: Error>(fn: () throws E -> Void) throws E が正しい書き方な気がする。