This book teaches you to solve physics problems using the functional programming paradigm. Ideal for first-time programmers and science aficionados alike, it introduces the Haskell programming language and encourages the writing of beautiful code to match the elegant ideas of theoretical physics. Haskell's powerful system of types is capable of encoding important mathematical structures like vectors, derivatives, integrals, scalar fields, and differential equations.