Introduction



next up previous
Next: Scheme Up: libscheme: Scheme as a Previous: libscheme: Scheme as a

Introduction

There is a long tradition of scripting languages in the Unix community, the canonical example being /bin/sh [2]. Scripting languages allow the programmer to express programming ideas at a high level, and can also be designed in such a way that the language interpreter can be included as an extension language inside of other programs. When a program provides a powerful extension language to end users, it often increases the utility of the program by orders of magnitude (consider GNU Emacs and GNU Emacs Lisp as an example). While in recent years there has been an explosion of general purpose extension and scripting languages (e.g., Python [6] and Elk [4]), one language has had a dramatic increase in popularity and seems to have become the de facto extension language. That language is Tcl [5].

It is the author's opinion that the popularity of Tcl is primarily due to the ease with which it can be embedded into C applications (its interface is through a single C header file and a standard C library archive file) and the ease with which it can be extended with new primitive commands. The libscheme library attempts to learn from Tcl's success by making Scheme [3] available as a C library and by providing simple ways to extend the language with new procedures and syntax. While Scheme is not as convenient as Tcl in the role of an interactive shell program, it has several advantages over Tcl with respect to writing scripts:

  1. Lexical Scope
  2. Nested procedures
  3. A richer set of data types
  4. Extensible syntax

In addition, libscheme allows the application writer to extend the interpreter with new data types that have the same standing as built in types. It also provides a conservative garbage collector that can be used by application and extension writers.



next up previous
Next: Scheme Up: libscheme: Scheme as a Previous: libscheme: Scheme as a



Brent Benson
Mon Sep 19 16:03:14 EDT 1994