Functional Logic Program Transformations
Abstract
Many tools used to process programs, like compilers, analyzers, or verifiers, perform transformations on their intermediate program representation, like abstract syntax trees. Implementing such program transformations is a non-trivial task, since it is necessary to iterate over the complete syntax tree and apply various transformations at nodes in a tree. In this paper we show how the features of functional logic programming are useful to implement program transformations in a compact and comprehensible manner. For this purpose, we propose to write program transformations as partially defined and non-deterministic operations. Since the implementation of non-determinism usually causes some overhead compared to deterministically defined operations, we compare our approach to a deterministic transformation method. We evaluate these alternatives for the functional logic language Curry and its intermediate representation FlatCurry which is used in various analysis and verification tools and compilers.
Cite
@article{arxiv.2601.13224,
title = {Functional Logic Program Transformations},
author = {Michael Hanus and Steven Libby},
journal= {arXiv preprint arXiv:2601.13224},
year = {2026}
}
Comments
Presented at Conference on Declarative Programming (DECLARE 2025)