When you write Scala code like this:
val x = List.range(1, 10) val evens = x.filter((i: Int) => i % 2 == 0)
the following portion of the code is a function literal (also known as an anonymous function):
(i: Int) => i % 2 == 0
When reading this code, it helps to think of this symbol:
=>
as a transformer. In this example, it transforms the parameter list on the left side of the symbol (an Int
named i
) into a new result using the algorithm on the right side of the symbol (in this case, an expression that results in a Boolean
).
A calculus “function as a transformer” image
Last night I was reading a fun calculus book, The Cartoon Guide to Calculus , and found that the author, Larry Gonick, used an image that I had in mind about how Scala functions and the =>
symbol work as transformers:
While some people might not like that image, it shows exactly what a pure function does: It takes some input, does something to it, and produces an output. It transforms the input into the output.
If you’re having any problems with functional programming at all, I highly recommend reading the first 15-20 pages from this book. The images Mr. Gonick uses really help to explain calculus, and in the process, explains how functions transform inputs into outputs.