I find the rules about operators with leading :
confusing each and every time I hit them. They make various rules more complicated than required. Now that we can declare extension methods, so in effect declare infix operators, is this even required any more?
def (e: E)[E] +: (l: List[E]): List[E] = ...
def (l: List[E])[E] :+ (e: E): List[E] = ...
def (lhs: List[E])[E] ::: (rhs: List[E]) = ...