A functional shell

  • Authors:
  • Jon Shultis

  • Affiliations:
  • -

  • Venue:
  • Proceedings of the 1983 ACM SIGPLAN symposium on Programming language issues in software systems
  • Year:
  • 1983

Quantified Score

Hi-index 0.00

Visualization

Abstract

One of the best features of the standard UNIX shell is the use of pipes to compose programs. A C language derivative is used for more complex program combinations involving looping or branching. This paper presents an alternative shell language based on natural extensions of the pipe concept. “Structured data streams” are introduced as a means of expressing potentially concurrent processing, and “labelled data streams” serve to route data to one of a pool of programs. These complex data streams are hooked together with functional operators much as simple data streams are hooked together with pipes. A generalized notion of “powers” provides for repetition of programs and also for systems that take an arbitrary number of input streams. This provides a uniform way of building complex tools from simple ones, as advocated by Kernighan and Plauger [8]. A major advantage of this new shell language is its program algebra, which facilitates system verification and analysis.