TL;DR: The design and motivation for Servant, an extensible, type-level DSL for describing Web APIs, is described, where most generic programming libraries are interested in automatically deriving programs for a large class of datatypes from many different domains, the techniques used are reminiscent of general-purpose generic programming.
Abstract: We describe the design and motivation for Servant, an extensible, type-level DSL for describing Web APIs. Servant APIs are Haskell types. An API type can be interpreted in several different ways: as a server that processes requests, interprets them and dispatches them to appropriate handlers; as a client that can correctly query the endpoints of the API; as systematic documentation for the API; and more. Servant is fully extensible: the API language can be augmented with new constructs, and new interpretations can be defined. The key Haskell features making all this possible are data kinds, (open) type families and (open) type classes. The techniques we use are reminiscent of general-purpose generic programming. However, where most generic programming libraries are interested in automatically deriving programs for a large class of datatypes from many different domains, we are only interested in a small class of datatypes that is used in the DSL for describing APIs.
TL;DR: The UniForM WorkBench as discussed by the authors is an integration framework with Haskell features in support of data, control and presentation integration, which is used to implement the entire Software Development Environment for Haskell using Haskell itself.
Abstract: The UniForM WorkBench is an integration framework with Haskell features in support of data, control and presentation integration. Using the WorkBench, it is possible to implement the entire Software Development Environment for Haskell — using Haskell itself. The paper presents the higher order approach to event handling used within the WorkBench, as well as the persistent repository with version management support. It is then demonstrated how views over this repository are kept consistent, on the fly, in a multi-user environment using the Model-View-Controller paradigm. Interactors are set up to maintain consistency between a view and its underlying repository by coordinating database change notifications and user interactions. These events are represented as first class, composable event values.
TL;DR: The paper presents the higher order approach to event handling used within the WorkBench, as well as the persistent repository with version management support, and demonstrates how views over this repository are kept consistent, on the fly, in a multi-user environment using the Model-View-Controller paradigm.
Abstract: The UniForM WorkBench is an integration framework with Haskell features in support of data, control and presentation integration. Using the WorkBench, it is possible to implement the entire Software Development Environment for Haskell - using Haskell itself. The paper presents the higher order approach to event handling used within the WorkBench, as well as the persistent repository with version management support. It is then demonstrated how views over this repository are kept consistent, on the fly, in a multi-user environment using the Model-View-Controller paradigm. Interactors are set up to maintain consistency between a view and its underlying repository by coordinating database change notifications and user interactions. These events are represented as first class, composable event values.
TL;DR: This work presents a new approach to generic programming that uses modern Haskell features to handle mutually recursive families with explicit sum-of-products structure, and removes much of the complexity previously associated with generic programming over these types.
Abstract: Generic programming for mutually recursive families of datatypes is hard On the other hand, most interesting abstract syntax trees are described by a mutually recursive family of datatypes We could give up on using that mutually recursive structure, but then we lose the ability to use those generic operations which take advantage of that same structure We present a new approach to generic programming that uses modern Haskell features to handle mutually recursive families with explicit sum-of-products structure This additional structure allows us to remove much of the complexity previously associated with generic programming over these types
TL;DR: The paper presents a method of encoding and verification of rule-based systems with Haskell to include them into Alvis models.
Abstract: Alvis is a modelling language designed for embedded systems that provides a possibility of a formal model verification. Because of the fact that many embedded systems contain a rule-based system as a part of them, it is necessary to provide a possibility to include such systems into Alvis models. Alvis combines flexible graphical modelling of interconnections among agents with a high level programming language used for the description of agents behaviour. The most natural way of including a rule-based system into an Alvis model is to encode it in the Haskell functional language. Some Haskell features like lazy evaluation, pattern matching, high level functions etc. make it a very attractive proposition from the rule-based systems’ engineering point of view. The paper presents a method of encoding and verification of rule-based systems with Haskell to include them into Alvis models.