package operator object FunctionalPipeline { class PipedObject[T] private[Functional] (value:T) { def |>[R] (f : T => R) = f(this.value) } implicit def toPiped[T] (value:T) = new PipedObject[T](value) } // inspired by a blog post in mkaz.com using this operator in a Sieve of Eratosthenes implementation: (n: Int) => (2 to n) |> (r => r.foldLeft(r.toSet)((ps, x) => if (ps(x)) ps -- (x * x to n by x) else ps))