{"title":"A Lisp environment at IBM T J Watson Research","authors":"M. Mikelsons, C. Alberga, C. Skutt","doi":"10.1145/121994.121997","DOIUrl":"https://doi.org/10.1145/121994.121997","url":null,"abstract":"We give a brief description of a Common Lisp programming environment developed at the IBM TJ Watson Research Center over the past two years. The two most novel features of this environment are a program analysis tool and a visual stepper. These are described in more detail.","PeriodicalId":262740,"journal":{"name":"ACM SIGPLAN Lisp Pointers","volume":"14 19 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":"132608846","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":"Self-reproducing programs in Common Lisp","authors":"Peter Norvig","doi":"10.1145/121989.121990","DOIUrl":"https://doi.org/10.1145/121989.121990","url":null,"abstract":"This paper reviews the classic self-reproducing expressions in Lisp, and presents some new ones that are unique to Common Lisp.","PeriodicalId":262740,"journal":{"name":"ACM SIGPLAN Lisp Pointers","volume":"1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1990-04-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"122049937","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":"Efficient implementation of bit-vector operation in Common Lisp","authors":"H. Baker","doi":"10.1145/121989.121991","DOIUrl":"https://doi.org/10.1145/121989.121991","url":null,"abstract":"In this paper we show various techniques for the efficient implementation of the various functions of Common Lisp involving bit-vectors and bit-arrays. Bit-vectors are extremely useful for computing everything from the Sieve of Eratosthenes for finding prime numbers, to the representation of sets and relations, to the implementation of natural language parsers, to the performance of flow analysis in an optimizing compiler, to the manipulation of complex communication codes like those used in facsimile machines. However, the efficient manipulation of bit-vectors on modern computers represents a curious point on the spectrum of data processing tasks. On the one hand, the possibility of packing many bits within a single computer word and operating on all of them in parallel offers a potential for speedup not usually available for other types of tasks. On the other hand, the lack of the ability to efficiently manipulate single bits because of addressing schemes tuned for larger objects can actually reduce the speed of operating on bits. As a result of these observations, it should be obvious that no simple, automatic techniques such as \"in-lining\" (procedure integration) or \"loop unrolling\" of the obvious serial algorithms will produce the kinds of efficiency we are seeking. For these reasons, the efficient implementation of bit-vector operations requires special-case code, and is an interesting challenge in ingenuity and engineering.","PeriodicalId":262740,"journal":{"name":"ACM SIGPLAN Lisp Pointers","volume":"02 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1990-04-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"129088268","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":"Standard-output: Scheme standardization","authors":"C. T. Haynes","doi":"10.1145/121989.121992","DOIUrl":"https://doi.org/10.1145/121989.121992","url":null,"abstract":"This is a brief report of efforts to standardize the Scheme programming language. Scheme inherits Lisp's rich set of symbol manipulation primitives, latent storage allocation, dynamic type checking, and simple syntax. Scheme is distinguished from most Lisp dialects by a single variable environment, block structure with static scope, and uniform evaluation of the operator and operand positions of a procedure call. Since there is no storage penalty for tail-recursive procedure calls, they may be used to express iteration. Provision is made for a rich set of numerical types, and exact and inexact numbers are distinguished. The ability to create first-class escape procedures allows almost all known forms of sequential control to be expressed. Above all, Scheme achieves its expressive power through the simplicity and generality of its design, and not by the accumulation of features. (The draft standard is about 50 pages long.) The reader may wish to consult books by Abelson and Sussman [1], Springer and Friedman [2], and Dybvig [3], among others, for tutorial introductions to Scheme.","PeriodicalId":262740,"journal":{"name":"ACM SIGPLAN Lisp Pointers","volume":"1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1990-04-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"130649800","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":"UnicStep-a visual stepper for COMMON LISP: portability and language aspects","authors":"I. Haulsen, A. Sodan","doi":"10.1145/121999.122003","DOIUrl":"https://doi.org/10.1145/121999.122003","url":null,"abstract":"This article presents a visual stepper for Common Lisp with simple backup feature. The stepper is based on Lieberman's approach for visual stepping. The stepper operates at the source level of programs and uses the GNU Emacs editor for source code processing. Problems encountered on implementing this stepper are described: read-syntax, macroexpansion, and source-localization. Especially, language features are discussed which affected our goal to make this tool portable across Common Lisp systems.","PeriodicalId":262740,"journal":{"name":"ACM SIGPLAN Lisp Pointers","volume":"56 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1989-07-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"114779508","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":"Concise reference manual for the Series macro package","authors":"R. Waters","doi":"10.1145/121999.122001","DOIUrl":"https://doi.org/10.1145/121999.122001","url":null,"abstract":"Series expressions are transformed into loops by pipelining them---the computation is converted from a form where entire series are computed one after the other to a form where the series are incrementally computed in parallel. In the resulting loop, each individual element is computed just once, used, and then discarded before the next element is computed. For this pipelining to be possible, four restrictions have to be satisfied. Before looking at these restrictions, it is useful to consider a related issue.","PeriodicalId":262740,"journal":{"name":"ACM SIGPLAN Lisp Pointers","volume":"14 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1989-07-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"123948255","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 Series macro package","authors":"R. Waters","doi":"10.1145/121999.122000","DOIUrl":"https://doi.org/10.1145/121999.122000","url":null,"abstract":"The benefits of programming in a functional style are well known. Algorithms that are expressed as compositions of functions operating on series/vectors/streams of data elements are much easier to understand and modify than equivalent algorithms expressed as loops. Unfortunately, many programmers hesitate to use series expressions. In part, this is due to the fact that series expressions are typically implemented very inefficiently.A portable Common Lisp macro package (called Series) has been implemented that can evaluate a wide class of series expressions very efficiently by transforming them into iterative loops. When using this class of series expressions, programmers can obtain the advantages of expressing computations as series expressions without incurring any runtime overhead.","PeriodicalId":262740,"journal":{"name":"ACM SIGPLAN Lisp Pointers","volume":"28 25 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1989-07-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"129702325","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 subjective view of Lisp","authors":"C. Queinnec","doi":"10.1145/121999.122004","DOIUrl":"https://doi.org/10.1145/121999.122004","url":null,"abstract":"The editor of Lisp Pointers has been asking me for a long time to write down my view of Lisp. I was even given permission to flame. This paper is the result and, naturally, is entirely my own opinion. Since the first rumors of a possible standardization of Lisp started to circulate (end of 85), many fights have taken place. They were never scientific nor technical: they were mainly commercial. Before trying to explain the state we have reached, I will try to define the ecological niche of Lisp. Lisp is old. Very old. Its remarkable conception makes it a terrific local extremum. Unlike the monsters born around the same time (Fortran, COBOL, Basic) which simply swallowed linguistic features they lacked, Lisp has evolved until it has become a sophisticated family of languages. Lisp has been the jewel--despite Joel Moses muddy analogy-of AI laboratories. Lisp has also bred a large community people for whom Lisp was the right language, enriched by a prodigious software sedimentation, which lead to exciting environments and dream hardware. But the boosting of AI which took place in the '80s is now past and the number of practising Lispers has probably gone back to what it was before. Three niches are apparent to me: hypercomplex systems, extensible systems and education.","PeriodicalId":262740,"journal":{"name":"ACM SIGPLAN Lisp Pointers","volume":"142 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1989-07-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"123425998","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 why of Y","authors":"R. Gabriel","doi":"10.1145/1317250.1317252","DOIUrl":"https://doi.org/10.1145/1317250.1317252","url":null,"abstract":"Did you ever wonder how Y works and how anyone could ever have thought of it? Do you feel like a Lisp weakling when some heavy-duty Scheme hacker kicks sand in your face by admiring Y in public? In this note I'll try to explain to you not only how it works, but how someone could have invented it. I'll use Scheme notation because it is easier to understand when functions passed as arguments are being applied. At the end, I'll show you Common Lisp equivalents of some of the Scheme code.","PeriodicalId":262740,"journal":{"name":"ACM SIGPLAN Lisp Pointers","volume":"180 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1988-10-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"133045415","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":"Menus for Scheme","authors":"Morton Goldberg","doi":"10.1145/1317250.1317255","DOIUrl":"https://doi.org/10.1145/1317250.1317255","url":null,"abstract":"Menus for Scheme is a trademark of Morton Goldberg. Microsoft, MS-DOS, and MS are registered trademarks of Microsoft Corporation. CompuServe is a registered trademark of CompuServe Incorporated","PeriodicalId":262740,"journal":{"name":"ACM SIGPLAN Lisp Pointers","volume":"1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1988-10-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"117215551","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}