English

Functional Logic Program Transformations

Programming Languages 2026-01-21 v1

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.

Keywords

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)