Skip to main contentSkip to search
Episciences
Open Access Journals
Sign in(new window)
Journal of Functional Programming logo
Journal of Functional Programming
Journal of Functional Programming logo
Journal of Functional Programming
Sign in(new window)
Articles & Issues
All articlesAll accepted articlesAll volumesSectionsAuthors
About
The journalIndexingNews
Boards
Publish
For authorsEthical charterFor reviewers
Submit
Journal of Functional Programming logo
Journal's leaflet
|
Contact
|
Credits
eISSN 1469-7653
|
RSS
|
Atom
Episciences
Documentation
|
Acknowledgements
|
Publishing policy
Accessibility: non-compliant
|
Legal mentions
|
Privacy statement
|
Terms of use
  1. Home > Articles & Issues >
  2. Articles

Articles

16 articles
Filter
Show all abstracts
Show all abstracts
Types of document
Article
Years
2026
Article
A general fine-grained reduction theory for effect handlers
Filip Sieczkowski, Mateusz Pyzik, Dariusz Biernacki
Published on October 7, 2026
PDF
common.loading
Article
LURK: Lambda, the ultimate recursive knowledge: (Experience Report)
Nada Amin, John C. Burnham, Gustavo Caparica, François Garillot, Rosario Gennaro, Adrian Hamelink, Chhi'Mèd Künzang, Daniel Rogozin, Cameron Wong
We introduce Lurk, a new LISP-based programming language for zk-SNARKs. Traditional approaches to programming over zero-knowledge proofs require compiling the desired computation into a flat circuit, imposing serious constraints on the size and complexity of computations that can be achieved in practice. Lurk programs are instead provided as data to the universal Lurk interpreter circuit, allowing the resulting language to be Turing-complete without compromising the size of the resulting proof artifacts. Our work describes the design and theory behind Lurk, along with detailing how its implementation of content-addressing can be used to sidestep many of the usual concerns of programming zero-knowledge proofs.
Published on October 7, 2026
PDF
common.loading
Article
Asynchronous modal FRP: Ticking all the boxes
Patrick Bahr, Rasmus Møgelberg
Over the past fifteen years, several languages for functionalreactive programming (FRP) have been suggested that use modaltypes to ensure properties like causality, productivity, and lack ofspace leaks. So far, almost all of these languages have included amodal operator for delay on a global clock. For some applications,however, a global clock is unnatural and leads to leakyabstractions as well as inefficient implementations. While modallanguages without a global clock have been proposed, no operationalproperties have been proved about them yet.This paper proposes Async RaTT, a new modal language for asynchronousFRP, equipped with an operational semantics mapping completeprograms to machines that take asynchronous input signals andproduce output signals. The main novelty of Async RaTT is a new modalityfor asynchronous delay, allowing each output channel to beassociated at runtime with the set of input channels it depends on,thus causing the machine to only compute new output when necessary.We prove a series of operational properties including causality,productivity, and lack of space leaks. We also show that, althoughthe set of input channels associated with an output channel canchange dynamically during execution, upper bounds on these can bedetermined statically by the type system.
Published on October 7, 2026
PDF
common.loading
Article
PhD abstracts
Graham Hutton
Published on September 29, 2026
PDF
common.loading
Article
Etna: An evaluation platform for property-based testing
Alperen Keles, Jessica Shi, Nikhil Kamath, Tin Nam Liu, Ceren Mert, Harrison Goldstein, Benjamin C. Pierce, Leonidas Lampropoulos
Property-based testing is a mainstay of functional programming, boasting a rich literature, an enthusiastic user community, and an abundance of tools~ -- so many, indeed, that new users may have difficulty choosing. Moreover, any given framework may support a variety of strategies for generating test inputs; even experienced users may wonder which are better in any given situation. Sadly, the PBT literature, though long on creativity, is short on rigorous comparisons to help answer such questions. We present ETNA, a platform for empirical evaluation and comparison of PBT techniques. ETNA incorporates a number of popular PBT frameworks and testing workloads from the literature, and its extensible architecture makes adding new ones easy, while handling the technical drudgery of performance measurement. To illustrate its benefits, we use ETNA to carry out several experiments with popular PBT approaches in Rocq, Haskell, OCaml, Racket, and Rust, allowing users to more clearly understand best practices and tradeoffs.
Published on September 15, 2026
PDF
common.loading
Article
Proto-Quipper with dynamic lifting
Peng Fu, Kohei Kishida, Neil J. Ross, Peter Selinger
<div><p>Quipper is a functional language for programming quantum circuits. Proto-Quipper is a family of languages aiming to provide a formal foundation for Quipper. In this paper, we extend Proto-Quipper-M with a construct called dynamic lifting, which is present in Quipper. By virtue of being a circuit description language, Proto-Quipper has two separate runtimes: circuit generation time and circuit execution time. Values that are known at circuit generation time are called parameters, and values that are known at circuit execution time are called states. Dynamic lifting is an operation that enables a state, such as the result of a measurement, to be lifted to a parameter, where it can influence the generation of the next portion of the circuit. As a result, dynamic lifting enables Proto-Quipper programs to interleave classical and quantum computation. We describe the syntax of a language we call Proto-Quipper-Dyn. Its type system uses a system of modalities to keep track of the use of dynamic lifting. We then provide an operational semantics, as well as a notion of categorical model for dynamic lifting. We also construct a concrete instance of such a model based on biset-enrichment. We prove that both the type system and the operational semantics are sound with respect to our categorical semantics. Finally, we give some examples of Proto-Quipper-Dyn programs that make essential use of dynamic lifting.</p></div>
Published on September 15, 2026
PDF
common.loading
Article
A simple and efficient implementation of strong call by need by an abstract machine
Małgorzata Biernacka, Witold Charatonik, Tomasz Drab
Strong call-by-need combines full normalization with the sharing discipline of lazy evaluation, yet no prior implementation achieved both simplicity and efficiency. We introduce RKNL, an abstract machine that realizes strong call-by-need with bilinear overhead. The machine has been derived automatically from a higher-order evaluator that uses the technique of memothunks to implement laziness. By employing an off-the-shelf transformation tool implementing the ``functional correspondence'' between higher-order interpreters and abstract machines, we obtained a simple and concise description of the machine. We prove that the resulting machine conservatively extends the lazy version of Krivine machine for the weak call-by-need strategy, and that it simulates the normal-order strategy in a bilinear number of steps, i.e., linear in both the number of beta-reductions and the size of the input term. 39 pages, 4 figures
Published on August 20, 2026
PDF
common.loading
Article
Multi types and reasonable space
Beniamino Accattoli, Ugo Dal Lago, Gabriele Vanoni
Accattoli, Dal Lago, and Vanoni have recently proved that the space used by the Space KAM, a variant of the Krivine abstract machine, is a reasonable space cost model for the lambda-calculus accounting for logarithmic space, solving a longstanding open problem. In this paper, we provide a new system of multi types (a variant of intersection types) and extract from multi type derivations the space used by the Space KAM, capturing into a type system the space complexity of the abstract machine. Additionally, we show how to capture also the time of the Space KAM, which is a reasonable time cost model, via minor changes to the type system.
Published on August 14, 2026
PDF
common.loading
Article
Adapting the MVVM pattern to C++ frontends and Agda-based backends
Viktor Csimma
Using agda2hs and ad-hoc Haskell FFI bindings, writing Qt applications in C++ with Agda- or Haskell-based backends (possibly including correctness proofs) is already possible. However, there was no repeatable methodology to do so, nor to use arbitrary Haskell built-in libraries in Agda code. We present a well-documented, general methodology to address this, applying the ideas of the Model-View-ViewModel architecture to models implemented in functional languages. This is augmented by a software development kit providing easy installation and automated compilation. For obstacles arising, we provide solutions and ideas that are novel contributions by themselves. We describe and compare solutions for using arbitrary Haskell built-ins in Agda code, highlighting their advantages and disadvantages. Also, for user interruption, we present a new Haskell future design that, to the best of our knowledge, is the first to provide for arbitrary interruption and the first to provide for interruption via direct FFI calls from C and C++. Finally, we prove with benchmarks that the agda2hs compiler at the base of our methodology is viable when compared to other solutions, specifically to the OCaml extraction feature of Rocq and the default MAlonzo backend of Agda.
Published on August 13, 2026
PDF
common.loading
Article
Polymorphic coverage types
Zhe Zhou, Ashish Mishra, Benjamin Delaware, Suresh Jagannathan
Published on August 11, 2026
PDF
common.loading
Article
Mixing visual and textual code
Leif Andersen, Michael Ballantyne, Cameron Moy, Matthias Felleisen, Stephen Chang
The dominant programming languages support nothing but linear text to express domain-specific geometric ideas. What is needed are hybrid languages that allow developers to create visual syntactic constructs so that they can express their ideas with a mix of textual and visual syntax tailored to an application domain. This mix must put the two kinds of syntax on equal footing and, just as importantly, the extended language must not disrupt a programmer's typical workflow. This means that any new visual syntax should be a proper language extension that is composable with other language features. Furthermore, the extensions should also preserve static reasoning about the program. This paper presents Hybrid ClojureScript the first such hybrid programming language. Hybrid ClojureScript allows programmers to add visual interactive syntax and to embed instances of this syntax within a program's text. An enhanced hybrid IDE can then display these embedded instances as mini-GUIs that programmers interact with, while other IDEs will show a textual representation of the syntax. The paper argues the necessity of such an extensibility mechanism, demonstrates the adoptability of the design, and discusses what might be needed to use the design in other languages.
Published on August 9, 2026
PDF
common.loading
Article
Don't exhaust, don't waste: Resource-aware soundness for big-step semantics
Riccardo Bianchini, Francesco Dagnino, Paola Giannini, Elena Zucca
We extend the semantics and type system of a lambda calculus equipped with common constructs to be "resource-aware". That is, the semantics keeps track of the usage of resources, and is stuck, besides in case of type errors, if either a needed resource is exhausted, or a provided resource would be wasted. In such way, the type system guarantees, besides standard soundness, that for well-typed programs there is a computation where no resource gets either exhausted or wasted. The extension is parametric on an arbitrary "grade algebra", modeling an assortment of possible usages, and does not require ad-hoc changes to the underlying language. To this end, the semantics needs to be formalized in big-step style; as a consequence, expressing and proving (resource-aware) soundness is challenging, and is achieved by applying recent techniques based on coinductive reasoning.
Published on August 4, 2026
PDF
common.loading
Article
Types, equations, dimensions and the Pi theorem
Nicola Botta, Patrik Jansson
The languages of mathematical physics and modelling are endowed with a rich ``grammar of dimensions'' that common abstractions of programming languages fail to represent. We propose a dependently typed domain-specific language (embedded in Idris) that captures this grammar. We apply it to formalize basic notions of dimensional analysis: those of dimension function, physical quantity, homomorphic measurement, the covariance principle and Buckingham's Pi theorem. We hope that the language makes mathematical physics more accessible to computer scientists and functional programming more palatable to modellers and physicists.
Published on June 28, 2026
PDF
common.loading
Article
Modular models of monoids with operations by lifting functors along fibrations
Zhixuan Yang, Nicolas Wu
Inspired by Plotkin and Power's algebraic treatment of computational effects and the principle of notions of computations as monoids, we propose a categorical framework for equational theories and models of monoids equipped with operations. This framework generalises Plotkin and Power's algebraic treatment of effectful operations taking or returning values as input or output to operations that may take or return computations as input or output. Additionally, to give semantic models of computational effects in a modular way, we introduce a formal theory of modular constructions of algebraic structures based on the framework of lifting functors along fibrations.
Published on June 28, 2026
PDF
common.loading
Article
Longest r-chain: thinning by grouping
Alexander Dinges, Ralf Hinze
Published on June 28, 2026
PDF
common.loading
Article
Higher-order bialgebraic semantics
Sergey Goncharov, Stefan Milius, Lutz Schröder, Stelios Tsampas, Henning Urbat
Compositionality proofs in higher-order languages are notoriously involved, and general semantic frameworks guaranteeing compositionality are hard to come by. In particular, Turi and Plotkin's bialgebraic abstract GSOS framework, which provides off-the-shelf compositionality results for first-order languages, so far does not apply to higher-order languages. In the present work, we develop a theory of abstract GSOS specifications for higher-order languages, in effect transferring the core principles of Turi and Plotkin's framework to a higher-order setting. In our theory, the operational semantics of higher-order languages is represented by certain dinatural transformations that we term (pointed) higher-order GSOS laws. We give a general compositionality result that applies to all systems specified in this way and discuss how compositionality of combinatory logics and the lambda-calculus w.r.t. a strong variant of Abramsky's applicative bisimilarity are obtained as instances. Extended and updated version of arXiv:2210.13387
Published on June 1, 2026
PDF
common.loading