{"title":"Common Lisp relations: an extension of Lisp for logic programming","authors":"P. Thrift","doi":"10.1109/ICCL.1988.13081","DOIUrl":null,"url":null,"abstract":"The author presents a set of relational constructs that support logic programming in the Common Lisp framework. These constructs support locally defined and first-class relations, an interface between function and relation-calling logical variables as first-class Lisp objects, and the ability to define relations over Common Lisp structures. The relational programming constructs are amenable to standard Prolog compilation techniques, thus making possible high-speed performance. A relation is an executable specification defined in terms of a sequence of clause-expressions. Each clause-expression specifies a list of argument patterns that determine the selection and local bindings of the clause as well as a sequence of goals that must be satisfied for the clause to succeed. Sequences of clause-expressions are used for defining relations and single lambda-expressions are used for defining functions. As an analog to the usual function-calling execution mode of Common Lisp, a relation-calling mechanism is provided. The semantics of passing values between relations and functions is described.<<ETX>>","PeriodicalId":219766,"journal":{"name":"Proceedings. 1988 International Conference on Computer Languages","volume":"23 1","pages":"0"},"PeriodicalIF":0.0000,"publicationDate":"1988-10-09","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":"3","resultStr":null,"platform":"Semanticscholar","paperid":null,"PeriodicalName":"Proceedings. 1988 International Conference on Computer Languages","FirstCategoryId":"1085","ListUrlMain":"https://doi.org/10.1109/ICCL.1988.13081","RegionNum":0,"RegionCategory":null,"ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"","JCRName":"","Score":null,"Total":0}
引用次数: 3
Abstract
The author presents a set of relational constructs that support logic programming in the Common Lisp framework. These constructs support locally defined and first-class relations, an interface between function and relation-calling logical variables as first-class Lisp objects, and the ability to define relations over Common Lisp structures. The relational programming constructs are amenable to standard Prolog compilation techniques, thus making possible high-speed performance. A relation is an executable specification defined in terms of a sequence of clause-expressions. Each clause-expression specifies a list of argument patterns that determine the selection and local bindings of the clause as well as a sequence of goals that must be satisfied for the clause to succeed. Sequences of clause-expressions are used for defining relations and single lambda-expressions are used for defining functions. As an analog to the usual function-calling execution mode of Common Lisp, a relation-calling mechanism is provided. The semantics of passing values between relations and functions is described.<>