|[Top]||[Contents]||[Index]||[ ? ]|
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