Avatar
omochimetaru 3/12/2019 1:50 AM
Another way we could conceivably notate this is by putting the output parameters after the ->, as a number of people suggested:
makeFoo() -> <F: Foo> F ↑この記法は何が起きてるかわかりやすいと思った
(edited)
1:50 AM
In Swift, this would mean that:
func foo(x: some P) { /* ... */ }
would be sugar for:
func foo<T: P>(x: T) { /* ... */ }
(edited)
1:52 AM
some P ってのは結局、暗黙のジェネリックパラメータで、引数部分で使う場合は通常のジェネリクスと同じ事 返り値で使う場合だと、パラメータをcallerではなくcalleeが決定するという違いが出る
1:52 AM
その点で、 makeFoo() -> <F: Foo> F ←これは見た目的に直感的にそれが伝わる