Polymorphic Bottom-Up Weighted Relational Programming
For developers of relational programming languages, this provides a novel compilation technique to support polymorphism efficiently, though it is an incremental advance over existing approaches.
This work introduces a method for implementing polymorphism in bottom-up weighted relational programming without monomorphization, proving its correctness and enabling polymorphic semiringKanren programs.
This work presents a new approach for implementing polymorphism for bottom-up relational languages, without monomorphization. We begin by introducing semiringKanren, a bottom-up weighted relational programming language. We extend this base language to support polymorphism. We describe a new method to compile polymorphic semiringKanren programs into non-polymorphic ones, based on equality patterns and large-enough instances of polymorphic relations. We prove the correctness of this method. Finally, we consider existing work and suggest directions for future research.