Journal of Functional Programming · 1992 · 19 citations · 12 references
Mathematical ProgrammingNumerical AnalysisComputational SciencePractical Functional ProgramEngineeringPure LispProgram AnalysisAdvanced ComputingFunctional Programming LanguageComputer AlgebraParallel ProgrammingComputer SciencePde SolverParallel ComputingCompilersFunctional ProgrammingFunctional SpecificationProgramming Languages
Abstract One can have all the advantages of functional programming – correctness, clarity, simplicity, and flexibility – without any sacrifice in performance, even for a scientifically significant computation on a supercomputer. Therefore, why use Fortran? We demonstrate parity – equality of speed and storage use – between a program generated automatically from a functional specification and a program written by hand in the procedural style. To our knowledge, this demonstration of parity is the first for a program that solves a scientifically significant problem – quasi-linear hyperbolic partial differential equations – on a scientifically interesting supercomputer – the CRAY X-MP. We use pure Lisp, including higher-order functions, to express the functional specification for the PDE solver. We designed this specification for maximal clarity and flexibility, rather than for efficiency. Nevertheless, we obtain a highly efficient program to solve the PDEs: automated program transformations put back the missing efficiency as they produce an executable Fortran program from the specification. The generated Fortran program vectorizes on the CRAY X-MP and runs about 4% faster than a handwritten Fortran program for the same problem. We describe the problem and the specification, and some of the problem-domain-specific and hardware-specific transformations that we use to obtain the high-efficiency program.
12
Theory and Applications of Cellular Automata
Stephen Wolfram · 1986 · 1.7K citations
Imperative functional programming
Simon Jones, Philip Wadler · 1993 · 1.2K citations · Full text