A functional shell that operates on typed and compiled applications

  • Authors:
  • Rinus Plasmeijer;Arjen van Weelden

  • Affiliations:
  • Nijmeegs Instituut voor Informatica en Informatiekunde, Radboud Universiteit Nijmegen, Nijmegen, The Netherlands;Nijmeegs Instituut voor Informatica en Informatiekunde, Radboud Universiteit Nijmegen, Nijmegen, The Netherlands

  • Venue:
  • AFP'04 Proceedings of the 5th international conference on Advanced Functional Programming
  • Year:
  • 2004

Quantified Score

Hi-index 0.00

Visualization

Abstract

Esther is the interactive shell of Famke, a prototype implementation of a strongly typed operating system written in the functional programming language Clean. As usual, the shell can be used for manipulating files, applications, data and processes at the command line. A special feature of Esther is that the shell language provides the basic functionality of a strongly typed lazy functional language, at the command line. The shell type checks each command line and only executes well-typed expressions. Files are typed as well, and applications are simply files with a function type. The type checking/inferencing performed by the shell is actually performed by the hybrid static/dynamic type system of Clean. The shell behaves like an interpreter, but it actually executes a command line by combining existing compiled code of functions/programs on disk. Clean’s dynamic linker is used to store (and retrieve) any expression (both data and code) with its type on disk. This linker is also used to communicate values of any type, e.g., data, closures, and functions (i.e., compiled code), between running applications in a type safe way. The shell combines the advantages of interpreters (direct response) and compilers (statically typed, fast code). Applications (compiled functions) can be used, in a type safe way, in the shell, and functions defined in the shell can be used by any compiled application.