// no errors expected var combine: (f: (_: T) => S) => (g: (_: U) => T) => (x: U) => S = (f: (_: T) => S) => (g: (_: U) => T) => (x: U) => f(g(x)) var foo: (g: (x: K) => N) => (h: (_: (_: K) => (_: M) => M) => (_: M) => M) => (f: (_: N) => (_: R) => R) => (_: R) => R = (g: (x: K) => N) => (h: (_: (_: K) => (_: M) => M) => (_: M) => M) => (f: (_: N) => (_: R) => R) => h(combine(f)(g))