pemrograman fungsional - Bagaimana cara saya menulis sebuah komposer fungsi generik dan menerapkan fungsi ekstraksi tuple generik (pertama, kedua) di TypeScript
Saya tidak yakin apa yang saya lakukan salah di sini:
const first = <A>([a]: [A, unknown]) => a
const second = <B>([,b]: [unknown, B]) => b
const tuple = <A>(a: A) => <B>(b: B): [A, B] => [a, b]
type F<A, B> = (a: A) => B
const compose = <B, C>(f: F<B, C>) => <A>(g: F<A, B>) => (a: A) =>
f(g(a));
const t = tuple(tuple(1)(true))("x")
const x = second(first(t))
const composeSecond = compose(second) // fails
const secondAfterFirst = composeSecond(first)
const y = secondAfterFirst(t)
Ini gagal compose(second) dengan:
const second: ([, b]: [unknown, B]) => B Argumen dari tipe '([, b]: [unknown, B]) => B' tidak dapat ditetapkan ke parameter dari tipe 'F'. Tipe-tipe parameter '__0' dan 'a' tidak kompatibel. Tipe 'unknown' tidak dapat ditetapkan ke tipe '[unknown, unknown]'.