- Sponsor:
- sigplan
This workshop was born out of the observation that the functional programming community has developed a great body of knowledge on how to develop software. Increasingly, industry is applying functional programming to great effect in large-scale projects. Unfortunately, very little is written up on how to do this in comprehensive form. Thus, adopters of functional programming in the large must rely on folklore and experience (or wading through decades of ICFP papers). This makes functional programming effectively inaccessible to many architects, developers, and projects. One goal of this workshop is to be part of a long-term effort to address this problem.
Furthermore, the software architecture community has developed a large body of useful knowledge, literature and pedagogy, largely untouched by functional programming. The two communities have much to learn from each other. Facilitating this cross-pollination is another goal of this workshop.
Proceeding Downloads
A Software Architecture Based on Coarse-Grained Self-Adjusting Computations
Ensuring that software applications present their users the most recent version of data is not trivial. Self-adjusting computations are a technique for automatically and efficiently recomputing output data whenever some input changes.
This article ...
Crème de la Crem: Composable Representable Executable Machines
In this paper we describe how to build software architectures as a composition of state machines, using ideas and principles from the field of Domain-Driven Design. By definition, our approach is modular, allowing one to compose independent subcomponents ...
Functional Shell and Reusable Components for Easy GUIs
Some object-oriented GUI toolkits tangle state management with rendering. Functional shells and observable toolkits like GUI Easy simplify and promote the creation of reusable views by analogy to functional programming. We have successfully used GUI Easy ...
Phases in Software Architecture
The large-scale structure of executing a computation can often be thought of as being separated into distinct phases. But the most natural form in which to specify that computation may well have a different and conflicting structure. For example, the ...
Stretching the Glasgow Haskell Compiler: Nourishing GHC with Domain-Driven Design
Over the last decade Haskell has been productized; transitioning from a research language to an industrial strength language ready for large-scale systems. However, the literature on architecting such systems with a pure functional language is scarce. In ...
Typed Design Patterns for the Functional Era
This paper explores how design patterns could be revisited in the era of mainstream functional programming languages. I discuss the kinds of knowledge that ought to be represented as functional design patterns: architectural concepts that are relatively ...
Types that Change: The Extensible Type Design Pattern
Compilers are often structured as chains of transformations, from source code to object code, through multiple intermediate representations. The existence of different representations of the same program presents challenges both for code maintenance and ...
Index Terms
- Proceedings of the 1st ACM SIGPLAN International Workshop on Functional Software Architecture