My favorites | Sign in
Project Home Downloads Wiki Issues Source
Project Information
Members
Links

What is iucs-relational-research?

iucs-relational-research is the project repository of the Relational Programming Research Group, a part of the Programming Languages Group in the Indiana University Computer Science Program. We use this space as a public incubator for new and ongoing research projects pertaining to relational programming, and as a place to coordinate our efforts as we work on them.

What is relational programming?

Relational programming has been described as a generalization of functional programming that includes aspects of logic programming (http://portal.acm.org/citation.cfm?id=165180.165206) and as programming based on the use of a relational calculus (http://portal.acm.org/citation.cfm?id=988213). As we define it, relational programming is an especially pure form of logic programming in which goals are written as true relations, without distinguishing between input and output modes of arguments. Relational programs are:

  • declarative: changing the order of goals should not affect the meaning of the program.
  • runnable backwards: a relation should produce answers even when all of its arguments are logic variables.

As a result of these desiderata, we must give up many useful idioms and language features from traditional logic programming, and even from modern "declarative" languages like Curry and Mercury. Therefore, part of our work is to find new relational language constructs and idioms, to give us back the expressive power we lost through our commitment to purity. We are also concerned with finding new tools and techniques for avoiding divergence -- writing a goal as a relation isn't very interesting, if the relation diverges when passed logic variables. (See a longer list of research ideas we're pursuing or would like to pursue.)

Our medium for working toward these objectives is miniKanren, a declarative logic programming system implemented in a pure functional subset of Scheme. Our book, The Reasoned Schemer, uses a version of miniKanren to demonstrate some relational programming concepts. We also use miniKanren to teach relational programming concepts in B521 and C311, Indiana University's introductory graduate and undergraduate programming languages courses.

Who are we?

People who have worked on Relational Programming Research Group projects include:

Faculty:

Übergraduate student:

Graduate students:

Undergraduate students:

  • Jordan Brown
  • Adam C. Foltzer

Visitors from other institutions:

  • Ramana Kumar

Powered by Google Project Hosting