Saya mencoba menemukan implementasi untuk tanda tangan fungsi Scala ini:
def explode[A, B](f: A => List[B]): List[A => B]
Arah sebaliknya mungkin terjadi:
def nest[A, B](fs: List[A => B]): A => List[B] = (a: A) => fs.map(_(a))
Saat ini saya cenderung percaya bahwa yang pertama (explode
) tidak dapat diterapkan, namun saya senang terbukti salah. Jika memang tidak memungkinkan untuk diterapkan, apakah ada alasan mendalam di baliknya?
Dalam pandangan saya, saya pada dasarnya meminta kompiler untuk menduplikasi input itu A
beberapa n
kali (ukuran List
s), dan memperbaikinya sebagai input.
B
yang berbeda) - person Eliav Lavi   schedule 27.12.2020def explode[A, B](f: A => List[B])(a: A): List[(A, B)] = { f(a).map(b => a -> b) }
? - person Tomer Shetah   schedule 27.12.2020