cross-product

Producto cruzado en Scala

Quiero tener un operador binario cross (producto cruzado / producto cartesiano) que opere con traversables en Scala: val x ... lo'), (2, 'world'), (2, 'bye')) ¿Cuál es la mejor manera de hacer esto solo en Scala (es decir, no usar algo como scalaz)?