Artifact 6b5717432d272e9ba6401fa826ca42b7b541e564acc8395e2f7ef3e155be1954:
- File
psl-1983/3-1/lpt/01-introduction.lpt
— part of check-in
[eb17ceb7f6]
at
2020-04-21 19:40:01
on branch master
— Add Reduce 3.0 to the historical section of the archive, and some more
files relating to version sof PSL from the early 1980s. Thanks are due to
Paul McJones and Nelson Beebe for these, as well as to all the original
authors.git-svn-id: https://svn.code.sf.net/p/reduce-algebra/code/historical@5328 2bfe0521-f11c-4a00-b80e-6202646ff360 (user: arthurcnorman@users.sourceforge.net, size: 11307) [annotate] [blame] [check-ins using] [more...]
- File
psl-1983/lpt/01-introduction.lpt
— part of check-in
[eb17ceb7f6]
at
2020-04-21 19:40:01
on branch master
— Add Reduce 3.0 to the historical section of the archive, and some more
files relating to version sof PSL from the early 1980s. Thanks are due to
Paul McJones and Nelson Beebe for these, as well as to all the original
authors.git-svn-id: https://svn.code.sf.net/p/reduce-algebra/code/historical@5328 2bfe0521-f11c-4a00-b80e-6202646ff360 (user: arthurcnorman@users.sourceforge.net, size: 11307) [annotate] [blame] [check-ins using]
PSL Manual 7 February 1983 Introduction section 1.0 page 1.1 CHAPTER 1 CHAPTER 1 CHAPTER 1 INTRODUCTION INTRODUCTION INTRODUCTION 1.1. Opening Remarks . . . . . . . . . . . . . . 1.1 1.2. Scope of the Manual . . . . . . . . . . . . . 1.2 1.2.1. Typographic Conventions within the Manual . . . 1.2 1.2.2. The Organization of the Manual . . . . . . . 1.3 1.1. Opening Remarks 1.1. Opening Remarks 1.1. Opening Remarks 1 This document describes PSL (PORTABLE STANDARD LISP ), a portable, "modern" LISP developed at the University of Utah for a variety of machines. PSL is upward-compatible with STANDARD LISP [Marti 79]. In most cases, STANDARD LISP did not commit itself to specific implementation details (since it was to be compatible with a portion of "most" LISPs). PSL is more specific and provides many more functions than described in that report. The goals of PSL include: - Providing implementation tools for LISP that can be used to ____ implement a variety of LISP-like systems, including mini-lisps embedded in other language systems (such as existing PASCAL or ADA applications). - Effectively supporting the REDUCE algebra system on a number of machines, and providing algebra modules extracted from (or modeled upon) REDUCE to be included in applications such as CAI and CAGD. - Providing a uniform, modern LISP programming environment on all of the machines that we use (DEC-20, VAX, and 68000 based personal machines)--of the power of FRANZ LISP, UCI LISP or MACLISP. - Studying the utility of a LISP-based systems language for other applications (such as CAGD or VLSI design) in which SYSLISP code provides efficiency comparable to that of C or BCPL, yet enjoys _______________ 1 "LSP" backwards! Introduction 7 February 1983 PSL Manual page 1.2 section 1.1 the interactive program development and debugging environment of LISP. 1.2. Scope of the Manual 1.2. Scope of the Manual 1.2. Scope of the Manual This manual is intended to describe the syntax, semantics, and implementation of PSL. While we have attempted to make it comprehensive, it is not intended for use as a primer. Some prior exposure to LISP will prove very helpful. A selection of LISP primers is listed in the bibliography in Chapter 23; see for example [Allen 79, Charniak 80, Weissman 67, Winston 81]. 1.2.1. Typographic Conventions within the Manual 1.2.1. Typographic Conventions within the Manual 1.2.1. Typographic Conventions within the Manual A large proportion of this manual is devoted to descriptions of the functions that make up PSL. Each function is provided with a prototypical header line. Each argument is given a name and followed by its allowed type. If an argument type is not commonly used, it may be a specific set PutD PutD enclosed in brackets {...}. For example, this header shows that PutD (which defines other functions) takes three arguments: ____ ____ ____ PutD expr PutD _____ __ ____ _____ ____ ______ ____ _______ _____ __ expr (PutD FNAME:id TYPE:ftype BODY:{lambda, code-pointer}): FNAME:id expr _____ __ 1. FNAME, which is an id (identifier). ____ 2. TYPE, which is the "function type" of the function being defined. ____ ______ ____ _______ 3. BODY, which is a lambda expression or a code-pointer. _____ and returns FNAME, the name of the function being defined. Some functions are compiled open; these have a note saying "open-compiled" next to the function type. Some functions accept an arbitrary number of arguments. The header for these functions shows a single argument enclosed in square brackets-- indicating that zero or more occurrences of that argument are allowed. For example: And And _ ____ _____ _______ (And [U:form]): extra-boolean And And And is a function which accepts zero or more arguments each of which may ____ be any form. In some cases, LISP or RLISP code is given in the function documentation as the function's definition. As far as possible, the code is extracted from the the current PSL sources (perhaps converted from one syntax to the other); however, this code is not always necessarily actually used in PSL, and may be given only to clarify the semantics of the function. Please _____ check carefully if you depend on the exact definition. PSL Manual 7 February 1983 Introduction section 1.2 page 1.3 Some features of PSL are anticipated but not yet fully implemented. When these are documented in this manual they are indicated with the words: ___ ___________ ___ ___ ___________ ___ ___ ___________ ___ [not implemented yet] [not implemented yet] [not implemented yet]. 1.2.2. The Organization of the Manual 1.2.2. The Organization of the Manual 1.2.2. The Organization of the Manual This manual is arranged in separate chapters, which are meant to be self-contained units. Each begins with a small table of contents serving as a summary of constructs and as an aid in skimming. Here is a brief overview of the following chapters: Chapter 2 is particularly useful for those using PSL for the first time. It begins with directions for starting PSL and getting help. It also briefly discusses the handling of errors; some of the consequences of PSL being both a compiled and an interpreted language; function types; switches and globals. PSL treats the parameters for various function types rather differently from a number of other dialects, and the serious user should definitely become familiar with this information. While most LISP implementations use only a fully parenthesized syntax, PSL gives the user the option of using an ALGOL-like (or PASCAL-like) syntax (RLISP), which many users prefer. Chapter 3 describes the syntax of RLISP. Chapter 4 describes the data types used in PSL. It includes functions useful for testing equality and for changing data types, and predicates useful with data types. The next seven chapters describe in detail the basic functions provided by PSL. Chapters 5, 6, 7, and 8 describe functions for manipulating the basic ______ __ ____ ______ ______ data structures of LISP: numbers, ids, lists, and strings and vectors. As _______ __________ ____ virtually every LISP program uses integers, identifiers, and lists extensively, these three chapters (5, 6 and 7) should be included in an ______ ______ overview. As vectors and strings are used less extensively, Chapter 8 may be skipped on a first reading. Chapter 9 and, to some extent, Chapter 4 describe the basic functions used to drive a computation. The reader wanting an overview of PSL should certainly read these two. Chapter 10 describes functions useful in function definition and the idea of variable binding. The novice LISP user should definitely read this information before proceeding to the rest of the manual. Also described here is a proposed scheme for context-switching in the form of the funarg and closures. Chapter 11 describes functions associated with the interpreter. It Eval Apply Eval Apply includes functions having to do with evaluation (Eval and Apply.) Introduction 7 February 1983 PSL Manual page 1.4 section 1.2 Chapter 12 describes the I/O facilities. Most LISP programs do not require sophisticated I/O, so this may be skimmed on a first reading. The section dealing with input deals extensively with customizing the scanner and reader, which is only of interest to the sophisticated user. Chapter 13 presents information about the user interface for PSL. It includes some generally useful information on running the system. Chapter 14 discusses error handling. Much of the information is of interest primarily to the sophisticated user. However, LISP provides a convenient interactive facility for correcting certain errors which may be of interest to all, so a first reading should include parts of this chapter. Chapter 15 discusses some tools for debugging and statistics gathering based on the concept of embedding function definitions. Chapter 16 describes the structure editor, which permits the user to construct and modify list structure, including the bodies of interpreted functions, and erroneous expressions within the BREAK loop. It also describes EMODE, an EMACS-like screen editor. Chapter 17 briefly describes modules of useful tools. This includes the PSL cross-reference generator, and various tools for defining macros. The rest of the manual may be skipped on first reading. Chapter 18 describes functions associated with the compiler. Chapter 19 describes some functions for communicating with the TOPS-20 and UNIX operating systems. Chapter 20 describes SYSLISP, a language incorporating features from both BCPL and LISP and which is used as an implementation language for PSL. Chapter 21 presents details of the portable implementation which may be of interest to sophisticated users, including a description of the garbage collector. Chapter 22 describes the extensible parser. Section 22.4 provides BNF descriptions of the input accepted by the token scanner, standard reader, and syntactic (RLISP) reader. Chapter 23 contains the bibliography. Chapter 24 is an alphabetical index of concepts. Chapter 25 is an alphabetical index of all functions defined in the manual. Chapter 26 contains an alphabetical index of all global variables and switches defined in the manual.