{"title":"Determining the coverage of a test suite","authors":"R. Waters","doi":"10.1145/1317265.1317271","DOIUrl":"https://doi.org/10.1145/1317265.1317271","url":null,"abstract":"The value of a suite of test cases depends critically on its coverage. Ideally a suite should test every facet of the specification for a program and every facet of the algorithms used to implement the specification. Unfortunately, there is no practical way to be sure that complete coverage has been achieved. However, something should be done to assess the coverage of a test suite, because a test suite with poor coverage has little value.","PeriodicalId":262740,"journal":{"name":"ACM SIGPLAN Lisp Pointers","volume":"32 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1991-10-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"126185314","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"Implementation of a “Lisp comprehension” macro","authors":"G. Lapalme","doi":"10.1145/121983.121985","DOIUrl":"https://doi.org/10.1145/121983.121985","url":null,"abstract":"This paper describes a set of Lisp macros that enable the use of \"list comprehensions\" which are a very powerful notation that provides a very compact expression of common list operations see [2] for a full discussion. List comprehensions have been introduced by David Turner in KRC, where they were called ZF-expressions [7]. They have since been introduced in several other pure functional languages like SASL [8], Miranda1 [5] and Haskell [3].","PeriodicalId":262740,"journal":{"name":"ACM SIGPLAN Lisp Pointers","volume":"21 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1991-04-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"114887484","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"Supporting the regression testing in Lisp programs","authors":"R. Waters","doi":"10.1145/121983.121988","DOIUrl":"https://doi.org/10.1145/121983.121988","url":null,"abstract":"How often have you made a change in a system to fix a bug or add a feature and been totally sure that the change did not affect anything else, only to discover weeks or months later tha t the change broke something? In my personal experience, the single most valuable software maintenance tool is a regression tester, which maintains a suite of tests for a system and can run them automatical ly when the system is changed. The term \"regression testing\" is used, because each version of the system being tested is compared with the previous version to make sure that the new version has not regressed by losing any of the tested capabilities. The more comprehensive the test suite is, the more valuable this comparison becomes. Creating a comprehensive test suite for a system requires significant effort, and running a test suite can require significant amounts of computer time. However, given a comprehensive test suite, regression testing detects an impressive number of bugs with remarkably little human effort. The KT regression tester presented here supports the regression testing of systems wri t ten in Common Lisp. In addition to being a valuable tool, RT is an interesting example of the power of Lisp. The unified nature of the Lisp programming environment and the fact that Lisp programs can be manipulated as da ta allows RT to be implemented in two pages of code. Merely implement ing a batch-mode regression tester using an Algol-like language in a typical programming environment would require much more code. Implement ing a highly interactive system like RT would be a major undertaking. U s e r ' s M a n u a l for RT","PeriodicalId":262740,"journal":{"name":"ACM SIGPLAN Lisp Pointers","volume":"115 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1991-04-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"115755636","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"Pragmatic parsing in Common Lisp; or, putting defmacro on steroids","authors":"H. Baker","doi":"10.1145/121983.121984","DOIUrl":"https://doi.org/10.1145/121983.121984","url":null,"abstract":"We review META, a classic technique for building recursive descent parsers, that is both simple and efficient. While META does not handle all possible regular or context-free grammars, it handles a surprisingly large fraction of the grammars encountered by Lisp programmers. We show how META can be used to parse streams, strings and lists---including Common Lisp's hairy lambda expression parameter lists. Finally, we compare the execution time of this parsing method to the built-in methods of Common Lisp.","PeriodicalId":262740,"journal":{"name":"ACM SIGPLAN Lisp Pointers","volume":"239 2 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1991-04-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"132787608","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"DMG—object-oriented iterative knowledge acquisition for the generation of diagnostic hypertext systems","authors":"P. Tyrväinen","doi":"10.1145/121983.121986","DOIUrl":"https://doi.org/10.1145/121983.121986","url":null,"abstract":"DMG is a development environment for building diagnostics applications of electrical equipment. Knowledge contained in an equipment model is compiled into a decision-tree like diagnostic logic, which is then used visually to pinpoint deficiencies in the performance of the equipment. The delivery application is a hypertext document which combines the diagnostic logic with links to sources of additional information. Benefits and experiences in real industrial use of DMG are presented; and practical issues on using a CLOS-based graphical user interface library are discussed.","PeriodicalId":262740,"journal":{"name":"ACM SIGPLAN Lisp Pointers","volume":"36 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1991-04-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"123833169","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"AN SQL interface for Common Lisp","authors":"Alan Gunderson","doi":"10.1145/121983.121987","DOIUrl":"https://doi.org/10.1145/121983.121987","url":null,"abstract":"Access to persistent database storage from Common Lisp applications is an increasingly frequent requirement. This paper discusses a software module that allows a Common Lisp program to access a relational database management system. Database queries are expressed as SQL statements. In Common Lisp, the SQL query is represented as a string, which allows sequence functions to be used to construct the query. Through a foreign function interface, the SQL query is passed from Lisp to a C component. The C component contains embedded database statements to utilize the dynamic SQL facility provided by the database management system. The database result table is returned to Lisp. Functions are provided to convert the returned data into a list of structures. Each structure corresponds to one row in the database result table. Structure accessor functions allow each individual attribute (field) in the structure representation of a row in the result table to be obtained.","PeriodicalId":262740,"journal":{"name":"ACM SIGPLAN Lisp Pointers","volume":"1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1991-04-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"129476528","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"The scheme of things","authors":"Pavel Curtis","doi":"10.1145/121994.121077","DOIUrl":"https://doi.org/10.1145/121994.121077","url":null,"abstract":"I decided to begin my tenure on this column by describing two recent proposals for additions to Scheme. The first is a facility for creating new, programmer-defined da ta types; the second makes it possible for procedures to return more than one value. These proposals will be considered by the Scheme authors for inclusion in the Revised 5 Report on Scheme whenever that document comes up for discussion. For future columns, I am considering discussing other possible directions for Scheme language development, inc luding macros, dynamic binding, exception handling, modules, and concurrency. I may also do a column or two on Scheme compilation and interpretat ion techniques. If you've got an idea for some other topic you'd like me to discuss here, please feel free to write me at the addresses above; your suggestions are always welcome.","PeriodicalId":262740,"journal":{"name":"ACM SIGPLAN Lisp Pointers","volume":"4 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1990-07-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"124841250","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"Lisp view: using Common Lisp and CLOS to hide a C toolkit","authors":"Hans Muller","doi":"10.1145/121994.121995","DOIUrl":"https://doi.org/10.1145/121994.121995","url":null,"abstract":"This paper is a review of the Lisp View project. The paper focuses on our experiences in two areas: interfacing Common Lisp with a large complicated C library, and using the Common Lisp Object System[2] (CLOS) to implement the Lisp View application programmer's interface (API). We've also included a short survey of similar Common Lisp packages.","PeriodicalId":262740,"journal":{"name":"ACM SIGPLAN Lisp Pointers","volume":"1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1990-07-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"130368935","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"The WINTERP Widget INTERPreter—a Lisp prototyping and extension environment for OSF/motif based applications user-interfaces","authors":"Niels Mayer","doi":"10.1145/121994.121998","DOIUrl":"https://doi.org/10.1145/121994.121998","url":null,"abstract":"Winterp is an interactive, language-based user-interface and application-construction environment enabling rapid prototyping of applications with graphical user interfaces based on the OSF/Motif UI Toolkit. Winterp also serves as a customization environment for delivered applications by providing a real programming language as an extension language. Many existing user-interface languages only have the expressive power to describe static layout of user interface forms; by using a high-level language for extensions and prototyping, Winterp also handles the dynamic aspects of UI presentation, e.g. the use of direct manipulation, browsers, and dialog. Winterp makes rapid prototyping possible because its language is based on an interpreter, thereby enabling interactive construction of application functionality and giving immediate feedback on incremental changes.Winterp's language is based on David Betz's public domain Xlisp interpreter which features a subset of Common Lisp's functionality. The language is extensible, permitting new Lisp primitives to be added in the C language and allowing hybrid implementations constructed from interpreted Lisp and compiled C. Hybrid implementation gives Winterp-based applications the successful extension and rapid-prototyping capabilities of Lisp-based environments, while delivering the multiprocessing perfor- mance of C applications running on personal Unix workstations.","PeriodicalId":262740,"journal":{"name":"ACM SIGPLAN Lisp Pointers","volume":"150 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1990-07-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"122766837","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"A guided tour of the Common Lisp interface manager","authors":"R. Rao, W. York, Dennis Doughty","doi":"10.1145/121994.121996","DOIUrl":"https://doi.org/10.1145/121994.121996","url":null,"abstract":"The Common Lisp Interface Manager (CLIM) is a powerful Lisp-based system that provides a layered set of facilities for building user interfaces. These facilities include a portable layer called Silica that includes basic windowing, input, output services, and mechanisms for constructing window types and user interface components; stream-oriented input and output facilities extended with presentations and context sensitive input similar to the work pioneered in the Genera UI system; and a gadget-oriented toolkit similar to those found in the X world extended with support for look and feel adaptiveness. In this article, we present an overview of CLIM's broad range of functionality and present a series of examples that illustrates CLIM's power.","PeriodicalId":262740,"journal":{"name":"ACM SIGPLAN Lisp Pointers","volume":"1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1990-07-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"132602009","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}