This page contains notes about a possible improvement to Scala for defining and working with type classes. It is mostly just notes at this point, not a proposal to be taken seriously.
Consider the following:
type class Functor[F[_]] {
def map[A, B](fa: F[A], f: A => B): F[B]
def replace[A, B](fa: F[A], replacement: => B): F[B] = map(fa, _ => replacement)
def lift[A, B](f: A => B): F[A] => F[B] = fa => map(fa, f)
}