2011-12-29 7 views
1

無効は単位のためにカリー化関数内で部分的に代替引数をするための最良の方法は何単位

ためにカリー化関数の引数を代入しますカレーに右からFunction0へ。

以下の作品が、かなり厄介になります。

def flatten[A](e: Expr[A], r: TypedReactor[A]): FlatReactor =() => { 
    val unc = r(e); val eval = e.apply;() => unc(eval) 
} 

EDIT

申し訳ありませんが、間違いがありました。 flatten関数は実際には次のようになります。

def flatten[A](e: Expr[A], r: Reaction[A]): FlatReactor =() => { 
    val eval = e.apply;() => r(eval) 
} 

だから、これ以上単純化することはできません。

答えて

1

ただ、単一の式に直接あなたの様々なヴァルスに置き換えては与える:私には正常に見える

def flatten[A](e: Expr[A], r: TypedReactor[A]): FlatReactor = 
() =>() => r(e)(e.apply) 

を?

+0

申し訳ありませんが、私はもっと明確にすべきです: 'e.apply'を最初のアプリケーションで呼び出さなければなりません。これを「キャッシュ」して複数のリアクタ間で一貫性を持たせ、2番目のアプリケーションでは任意のデータフロー変数に自由に応答できます。問題の定式化に間違いもあった:-( –

関連する問題