Abstractions are the lifeblood of computer science. Separating higher level concepts from lower level implementation details allows code to be more composable and reusable, and code using appropriate abstractions is simpler to understand and maintain. Polymorphism in programming languages enables code reuse. Here, the authors show that polymorphism has broad applicability far beyond computations for technical computing: parallelism in distributed computing, presentation of visualizations of runtime dataflow, and proofs for formal verification of correctness. The ability to reuse a single codebase for all these purposes provides new ways to understand and verify parallel programs.