{"title":"公共Lisp关系:用于逻辑编程的Lisp的扩展","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":"{\"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}","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}
Common Lisp relations: an extension of Lisp for logic programming
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.<>