20,067 research outputs found
How functional programming mattered
In 1989 when functional programming was still considered a niche topic, Hughes wrote a visionary paper arguing convincingly ‘why functional programming matters’. More than two decades have passed. Has functional programming really mattered? Our answer is a resounding ‘Yes!’. Functional programming is now at the forefront of a new generation of programming technologies, and enjoying increasing popularity and influence. In this paper, we review the impact of functional programming, focusing on how it has changed the way we may construct programs, the way we may verify programs, and fundamentally the way we may think about programs
Functional programming framework for GRworkbench
The software tool GRworkbench is an ongoing project in visual, numerical
General Relativity at The Australian National University. Recently, the
numerical differential geometric engine of GRworkbench has been rewritten using
functional programming techniques. By allowing functions to be directly
represented as program variables in C++ code, the functional framework enables
the mathematical formalism of Differential Geometry to be more closely
reflected in GRworkbench . The powerful technique of `automatic
differentiation' has replaced numerical differentiation of the metric
components, resulting in more accurate derivatives and an order-of-magnitude
performance increase for operations relying on differentiation
A Purely Functional Computer Algebra System Embedded in Haskell
We demonstrate how methods in Functional Programming can be used to implement
a computer algebra system. As a proof-of-concept, we present the
computational-algebra package. It is a computer algebra system implemented as
an embedded domain-specific language in Haskell, a purely functional
programming language. Utilising methods in functional programming and prominent
features of Haskell, this library achieves safety, composability, and
correctness at the same time. To demonstrate the advantages of our approach, we
have implemented advanced Gr\"{o}bner basis algorithms, such as Faug\`{e}re's
and , in a composable way.Comment: 16 pages, Accepted to CASC 201
Structural Induction Principles for Functional Programmers
User defined recursive types are a fundamental feature of modern functional
programming languages like Haskell, Clean, and the ML family of languages.
Properties of programs defined by recursion on the structure of recursive types
are generally proved by structural induction on the type. It is well known in
the theorem proving community how to generate structural induction principles
from data type declarations. These methods deserve to be better know in the
functional programming community. Existing functional programming textbooks
gloss over this material. And yet, if functional programmers do not know how to
write down the structural induction principle for a new type - how are they
supposed to reason about it? In this paper we describe an algorithm to generate
structural induction principles from data type declarations. We also discuss
how these methods are taught in the functional programming course at the
University of Wyoming. A Haskell implementation of the algorithm is included in
an appendix.Comment: In Proceedings TFPIE 2013, arXiv:1312.221
Bricklayer: An Authentic Introduction to the Functional Programming Language SML
Functional programming languages are seen by many as instrumental to
effectively utilizing the computational power of multi-core platforms. As a
result, there is growing interest to introduce functional programming and
functional thinking as early as possible within the computer science
curriculum. Bricklayer is an API, written in SML, that provides a set of
abstractions for creating LEGO artifacts which can be viewed using LEGO Digital
Designer. The goal of Bricklayer is to create a problem space (i.e., a set of
LEGO artifacts) that is accessible and engaging to programmers (especially
novice programmers) while providing an authentic introduction to the functional
programming language SML.Comment: In Proceedings TFPIE 2014, arXiv:1412.473
Functional programming with bananas, lenses, envelopes and barbed wire
We develop a calculus for lazy functional programming based on recursion operators associated with data type definitions. For these operators we derive various algebraic laws that are useful in deriving and manipulating programs. We shall show that all example functions in Bird and Wadler's Introduction to Functional Programming can be expressed using these operators
What Does Aspect-Oriented Programming Mean for Functional Programmers?
Aspect-Oriented Programming (AOP) aims at modularising crosscutting concerns that show up in software. The success of AOP has been almost viral and nearly all areas in Software Engineering and Programming Languages have become "infected" by the AOP bug in one way or another. Interestingly the functional programming community (and, in particular, the pure functional programming community) seems to be resistant to the pandemic. The goal of this paper is to debate the possible causes of the functional programming community's resistance and to raise awareness and interest by showcasing the benefits that could be gained from having a functional AOP language. At the same time, we identify the main challenges and explore the possible design-space
- …