Export Citations
Save this search
Please login to be able to save your searches and receive alerts for new content matching your search criteria.
- ArticleSeptember 2024
Demo: A Geometric Approach to Generate Musical Rhythmic Patterns in Haskell
FARM 2024: Proceedings of the 12th ACM SIGPLAN International Workshop on Functional Art, Music, Modelling, and DesignPages 50–54https://doi.org/10.1145/3677996.3678295We present work-in-progress on RTG, a domain specific language embedded in Haskell designed to explore the affordances of geometry as a means to generate and manipulate rhythmic patterns in live coded music. Examples of how simple geometry is capable of ...
- research-articleAugust 2024
Design and Implementation of a Verified Interpreter for Additive Manufacturing Programs (Experience Report)
FUNARCH 2024: Proceedings of the 2nd ACM SIGPLAN International Workshop on Functional Software ArchitecturePages 10–17https://doi.org/10.1145/3677998.3678221This paper describes the design of a verified tool for analyzing tool paths defined in the RS-274 language for 3D printing systems. We describe how the analyzer was designed to allow a mixture of verification and code-extraction techniques to be combined ...
- keynoteAugust 2024
Architecting Functional Programs (Keynote)
FUNARCH 2024: Proceedings of the 2nd ACM SIGPLAN International Workshop on Functional Software ArchitecturePages 1–2https://doi.org/10.1145/3677998.3678219Functional programming in the small works great. Things start to get shaky when there are many services and teams involved, something that is becoming more and more common with large distributed systems.
- research-articleAugust 2024
A Comparison of OpenCL, CUDA, and HIP as Compilation Targets for a Functional Array Language
FProPer 2024: Proceedings of the 1st ACM SIGPLAN International Workshop on Functional Programming for Productivity and PerformancePages 1–9https://doi.org/10.1145/3677997.3678226This paper compares OpenCL, CUDA, and HIP as compilation targets for Futhark, a functional array language. We compare the performance of OpenCL versus CUDA, and OpenCL versus HIP, on the code generated by the Futhark compiler on a collection of 48 ...
- research-articleAugust 2024
Functional Programming in Financial Markets (Experience Report)
Proceedings of the ACM on Programming Languages (PACMPL), Volume 8, Issue ICFPArticle No.: 244, Pages 234–248https://doi.org/10.1145/3674633We present a case-study of using functional programming in the real world at a very large scale. At Standard Chartered Bank, Haskell is used in a core software library supporting the entire Markets division -- a business line with 3 billion USD operating ...
-
A Verified Compiler for a Functional Tensor Language
Proceedings of the ACM on Programming Languages (PACMPL), Volume 8, Issue PLDIArticle No.: 160, Pages 320–342https://doi.org/10.1145/3656390Producing efficient array code is crucial in high-performance domains like image processing and machine learning. It requires the ability to control factors like compute intensity and locality by reordering computations into different stages and ...
Verified Extraction from Coq to OCaml
Proceedings of the ACM on Programming Languages (PACMPL), Volume 8, Issue PLDIArticle No.: 149, Pages 52–75https://doi.org/10.1145/3656379One of the central claims of fame of the Coq proof assistant is extraction, i.e. the ability to obtain efficient programs in industrial programming languages such as OCaml, Haskell, or Scheme from programs written in Coq’s expressive dependent type ...
Modular Hardware Design of Pipelined Circuits with Hazards
Proceedings of the ACM on Programming Languages (PACMPL), Volume 8, Issue PLDIArticle No.: 148, Pages 28–51https://doi.org/10.1145/3656378Modular design is critical in reducing hardware designer's cognitive load and development cost. However, it is challenging to modularize high-performance pipelined circuits with structural, data, and control hazards because their resolution---stalling, ...
- research-articleJune 2024
Investigating the Performance of Language Models for Completing Code in Functional Programming Languages: a Haskell Case Study
FORGE '24: Proceedings of the 2024 IEEE/ACM First International Conference on AI Foundation Models and Software EngineeringPages 91–102https://doi.org/10.1145/3650105.3652289Language model-based code completion models have quickly grown in use, helping thousands of developers write code in many different programming languages. However, research on code completion models typically focuses on imperative languages such as ...
A Study on the Pythonic Functional Constructs' Understandability
ICSE '24: Proceedings of the IEEE/ACM 46th International Conference on Software EngineeringArticle No.: 237, Pages 1–13https://doi.org/10.1145/3597503.3639211The use of functional constructs in programming languages such as Python has been advocated to help write more concise source code, improve parallelization, and reduce side effects. Nevertheless, their usage could lead to understandability issues. This ...
- research-articleMay 2024
Compiling Haskell for Energy Efficiency: Empirical Analysis of Individual Transformations
SAC '24: Proceedings of the 39th ACM/SIGAPP Symposium on Applied ComputingPages 1104–1113https://doi.org/10.1145/3605098.3635915Energy efficiency is a growing concern for software developers. This empirical study investigates the impact of compiler optimizations on energy efficiency in Haskell programs compiled using the Glasgow Haskell Compiler (GHC). We focus on GHC's -O2 ...
- ArticleApril 2024
Verified Inlining and Specialisation for PureCake
AbstractInlining is a crucial optimisation when compiling functional programming languages. This paper describes how we have implemented and verified function inlining and loop specialisation for PureCake, a verified compiler for a Haskell-like (purely ...
- research-articleSeptember 2024
Latent Idiom Recognition for a Minimalist Functional Array Language Using Equality Saturation
CGO '24: Proceedings of the 2024 IEEE/ACM International Symposium on Code Generation and OptimizationPages 270–282https://doi.org/10.1109/CGO57630.2024.10444879Accelerating programs is typically done by recognizing code idioms matching high-performance libraries or hardware interfaces. However, recognizing such idioms automatically is challenging. The idiom recognition machinery is difficult to write and ...
- ArticleJanuary 2024
Hardware Implementation of OCaml Using a Synchronous Functional Language
AbstractWe present a hardware implementation of the high-level multi-paradigm language OCaml using a declarative language called Eclat. Eclat is tailored for programming reactive hardware applications mixing interaction with physical devices and long-...
- research-articleJanuary 2024
A Case Study in Functional Conversion and Mode Inference in miniKanren
PEPM 2024: Proceedings of the 2024 ACM SIGPLAN International Workshop on Partial Evaluation and Program ManipulationPages 107–118https://doi.org/10.1145/3635800.3636966Many programs which solve complicated problems can be seen as inversions of other, much simpler, programs. One particular example is transforming verifiers into solvers, which can be achieved with low effort by implementing the verifier in a relational ...
Efficient CHAD
Proceedings of the ACM on Programming Languages (PACMPL), Volume 8, Issue POPLArticle No.: 36, Pages 1060–1088https://doi.org/10.1145/3632878We show how the basic Combinatory Homomorphic Automatic Differentiation (CHAD) algorithm can be optimised, using well-known methods, to yield a simple, composable, and generally applicable reverse-mode automatic differentiation (AD) technique that has ...
- research-articleFebruary 2024
Methods for Changing Parallelism in the Process of High-Level VLSI Synthesis
Automatic Control and Computer Sciences (ACCS), Volume 57, Issue 7Pages 696–705https://doi.org/10.3103/S014641162307012XAbstractIn this paper, methods for increasing the efficiency of VLSI development based on the method of architecture-independent design are proposed. The route of high-level VLSI synthesis is considered. The principle of constructing a VLSI hardware model ...
- ArticleNovember 2023
Verified Scalable Parallel Computing with Why3
AbstractBSML is a pure functional library for the multi-paradigm language OCaml. BSML embodies the principles of the Bulk Synchronous Parallel (BSP) model, a model of scalable parallel computing. We propose a formalization of BSML primitives with WhyML, ...
- short-paperOctober 2023
Design and Implementation of Facets of Dynamic Policies
SPLASH 2023: Companion Proceedings of the 2023 ACM SIGPLAN International Conference on Systems, Programming, Languages, and Applications: Software for HumanityPages 37–39https://doi.org/10.1145/3618305.3623599Information Flow Control (IFC) in dynamic contexts is challenging due to different interpretations of security that arise. This paper introduces a modular framework to address this challenge. We present a dynamic floating-label enforcement mechanism ...
- research-articleOctober 2023
stableKanren: Integrating Stable Model Semantics with miniKanren
PPDP '23: Proceedings of the 25th International Symposium on Principles and Practice of Declarative ProgrammingArticle No.: 5, Pages 1–13https://doi.org/10.1145/3610612.3610617This paper presents stableKanren, a miniKanren extension with normal logic programming support under stable model semantics. MiniKanren is a relational programming solver implemented atop Scheme via shallow embedding, which means the predicate in each ...