1
(无效)代咖喱函数的args作为单位
什么是最好的方式,在单位咖喱功能部分替代参数:
trait Expr[A] { def apply : A }
type Reaction[A] = A => Unit
type TypedReactor[A] = Expr[A] => Reaction[A] // aka Expr[A] => A => Unit
type FlatReactor =() =>() => Unit
def flatten[A](e: Expr[A], r: TypedReactor[A]): FlatReactor = ???
所以Function1
需要令行禁止要向左转变向右转至咖啡店Function0
。
下工作,但看起来很别扭:
def flatten[A](e: Expr[A], r: TypedReactor[A]): FlatReactor =() => {
val unc = r(e); val eval = e.apply;() => unc(eval)
}
编辑
对不起,这是错的。展平功能实际上看起来像这样:
def flatten[A](e: Expr[A], r: Reaction[A]): FlatReactor =() => {
val eval = e.apply;() => r(eval)
}
所以我不认为它可以比这更简单。
对不起,我应该说得更清楚一点:'e.apply'必须在第一个应用程序中调用;这是为了“缓存”它并使其在多个反应器中保持一致,而在第二个应用程序中,它们可以自由地回应任何数据流变量。问题表述中也存在一个错误:-( – 2011-12-30 09:53:23