val ([a] T.(A) -> Unit).foo: P val ([a] T.(A) -> C).foo: P val [a] ([a] T.(A) -> R).foo: P val [a] (() -> Unit).foo: P [a] val [a] ((A, B) -> Unit).foo: P