ファイルのストリーム処理にMonix を使用するコードがあります。Observable
このコードをテストするには、 で行う操作をObservable
型に依存しないようにして、 のような他のデータ構造でも実行できるようにしList
ます。そのため、基になるデータ構造を抽象化するために次のコードを記述しました。
def permutations[F[_] : Applicative : FunctorFilter : SemigroupK](chars: F[Char]): F[F[Char]] = {
Range.inclusive('a', 'z').map(_.toChar)
.map { c ⇒
FunctorFilter[F].filter(chars)(Character.toLowerCase _ andThen (_ != c))
}
.map(Applicative[F].pure)
.reduceLeft(SemigroupK[F].combineK)
}
私を悩ませているのは、このコードが多くの中間データ構造を作成することです。このプロセスをより効率的にするために使用できる型クラスはありますか? LiftIO
アイテムのコレクションのように、オーバーヘッドをあまりかけずに、あるデータ構造を別のデータ構造に持ち上げるものはありますか?