I have:
val having: Option[String] = ... val averageStream = having match { case Some(expr) => stream[TimeMovingAverage].filter("name = '#name'").where(expr) case None => stream[TimeMovingAverage].filter("name = '#name'") } Is there some scalaz magic that would eliminate the duplication?
I could do something like
val averageStream1 = stream[TimeMovingAverage].filter("name = '#name'") val averageStream2 = having.map(averageStream1.where(_)) But that seems a bit awkward. I guess I am looking for something like
val averageStream = stream[TimeMovingAverage].filter("name = '#name'") |?| having.cata(_.where(_), _) // Clearly some ambiguities with the _'s here