【发布时间】:2021-04-03 20:57:29
【问题描述】:
我正在尝试为这个 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 次(Lists 大小),并将其“修复”为输入。
【问题讨论】:
-
@LuisMiguelMejíaSuárez 见here。 (另外,它们的功能并不完全相同,每个都会产生不同的
B) -
是的,对不起。我仍然认为值得解释一下你想做什么
-
为什么不使用元组列表呢?还是地图?类似的东西:
def explode[A, B](f: A => List[B])(a: A): List[(A, B)] = { f(a).map(b => a -> b) }?
标签: scala function types functional-programming function-composition