ฉันกำลังพยายามค้นหาการใช้งานสำหรับลายเซ็นฟังก์ชัน Scala นี้:
def explode[A, B](f: A => List[B]): List[A => B]
ทิศทางตรงกันข้ามเป็นไปได้:
def nest[A, B](fs: List[A => B]): A => List[B] = (a: A) => fs.map(_(a))
ถึงตอนนี้ฉันมีแนวโน้มที่จะเชื่อว่าอันแรก (explode
) นั้นใช้งานไม่ได้ แต่ฉันดีใจที่ได้รับการพิสูจน์แล้วว่าผิด หากไม่สามารถนำไปปฏิบัติได้จริง มีเหตุผลเชิงลึกเบื้องหลังหรือไม่?
ในมุมมองของฉัน ฉันขอให้คอมไพเลอร์ทำซ้ำอินพุตนั้น A
บาง n
ครั้ง (ขนาด List
s) และแก้ไขเป็นอินพุต
B
ที่แตกต่างกัน) - 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