Scala underscore minimal function

Solution 1:

For the record, a.map(_) does not work because it stands for x => a.map(x), and not a.map(x => x). This happens because a single _ in place of a parameter stands for a partially applied function. In the case of 2*_, that stands for an anonymous function. These two uses are so close that is very common to get confused by them.

Solution 2:

Your first shorthand form can also be written point-free

a map (2*)

Thanks to multiplication being commutative.

As for (x) => x, you want the identity function. This is defined in Predef and is generic, so you can be sure that it's type-safe.

Solution 3:

You should use identity function for this use case.

a.map(identity)

identity is defined in scala.Predef as:

implicit def identity[A](x: A): A = x