Equivale al metodo #tap di Ruby in Scala

Ruby ha un metodo che ci permette di osservare una pipeline di valori, senza modificare il valore sottostante:

# Ruby list.tap{|o| po}.map{|o| 2*o}.tap{|o| po} 

Esiste un tale metodo in Scala? Credo che questo sia chiamato Kestrel Combinator, ma non ne sono sicuro.

Ecco una implementazione su github: https://gist.github.com/akiellor/1308190

Riproduzione qui:

 import collection.mutable.MutableList import Tap._ class Tap[A](any: A) { def tap(f: (A) => Unit): A = { f(any) any } } object Tap { implicit def tap[A](toTap: A): Tap[A] = new Tap(toTap) } MutableList[String]().tap({m:MutableList[String] => m += "Blah" }) MutableList[String]().tap(_ += "Blah") MutableList[String]().tap({ l => l += "Blah" l += "Blah" })