私は現在、Scalazノンブロッキング先物(別名)で遊んでいます。約束。次の関数を末尾再帰にするのに苦労しています。
@tailrec
private def repeat( res: Promise[I] ):Promise[I] =
res map p flatMap {
(b:Boolean) =>
if( b ) repeat( res flatMap f ) else res
}
ここp
で、はtypeの述語であり、I=>Boolean
はtypef
の並行関数I=>Promise[I]
です。
メソッドはアノテーションなしでコンパイルされます。
ヒントはありますか?ありがとう