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