[Top] [Contents] [Index] [ ? ]

A Programming-Language Shell

by Per Bothner, 1992.

Modern high-level programming languages provide multiple data types (such as numbers, strings, and lists), as well as first-class function values. Most utility languages (awk, perl, tcl) and most shells only have one (or a few) data types (strings), but they are very convenient for manipulating text or invoking programs. This paper discusses the issues involved in getting the best of both worlds, in the context of the Q programming language.

For example, executing a program has the same syntax as a function call, a pipe is function composition, and a disk file just a persistent string. Similarly, a disk file just a persistent string. These goals have implications for the syntax and the control structure of the programming language.

1. Introduction  
2. Related work  
3. A Programming Language  
4. Internal structure  
5. Argument evaluation  Evaluated vs. unevaluated args.
6. Primitives useful for writing macros  
7. Regular expressions  
8. File and Directory Objects  
9. Commands  
10. Pipeline implementation  
11. Control  
12. Future work  
13. Summary  



This document was generated by Per Bothner on December, 4 2001 using texi2html