Towards a visual compositional relational programming methodology G¨ orkem Pa¸ cacı, Andreas Hamfelt Department of Informatics and Media Uppsala University Abstract. We present a new visual programming method, based on Combilog, a compositional relational programming language. In this pa- per we focus on the compositional aspect of Combilog, the make oper- ator, visually implementing it via a modification of Higraph diagrams, in an attempt to overcome the obscurity and complexity in the textual representation of this operator. 1 Introduction Recent interest in parallel programming has put declarative programming method- ologies such as functional programming and relational programming even more in focus thanks to their natural aptitude for modularity and parallelization [5]. Combilog, as a point of departure for our study, is a compositional relational programming language. The compositional nature of Combilog comes from the make operator, presented in detail in the following sections. In this study, we focus on eliminating the textual complexity that arises from this generalised projection operator using diagrams. In the following subsections, we present the programming language, Com- bilog, and the steps to represent Combilog programs with Harel’s Higraph [5]. In the sections that follow, we explain how we combine the make operator and Higraphs, as a first step to form a visual language. 1.1 Combilog Programming languages offer ways of producing new components out of available ones. In Functional Programming, one example is higher-order functions. In Logic Programming, there are also languages like λProlog which allow writing higher-order predicates. Combilog follows a similar path for logic programming, applying Quine’s Predicate-Functor Logics developed and updated in [7] and [6]. Instead, higher- level predicate functors are used to permute, replicate or exclude argument- places [3]. Combilog generalizes these functors into a single operator called make that can satisfy the same requirements for modification of argument-places, as explained in [2]. It also introduces two quasi higher-order predicates as recursion operators: foldr and foldl. [2] and [4] explain in detail, how make, foldr and foldl