;;; -*- mode: Lisp; Syntax: Common-Lisp; -*- ;;; ;;; Copyright (c) 2009 by the authors. ;;; ;;; See LICENCE for details. (in-package :hu.dwim.presentation) ;;;;;; ;;; Book (def book excosy (:title "EXCOSY" :subtitle "An Extensible Computing System") (chapter (:title "Introduction") "Implement an extensible, self hosting, bootstrapped virtual machine to experiment with." "Provide both an interpreter and a compiler that compiles to native code.") (chapter (:title "A Minimal Computing System") "This version of EXCOSY is called MICOSY throughout this document. MICOSY provides the bare minimum to be able to bootstrap itself and run programs. MICOSY is already turing complete, but it is not able to do anything useful with respect to the external world. The simplest program in MICOSY is the program that does nothing.") (chapter (:title "A Useful Computing System") "This version of EXCOSY is called UCOSY throughout this document. UCOSY provides an acceptable performance for all primitive types, primitive functions and primitive operators present in this document. This includes IO that allows to communicate with the external world.") (chapter (:title "Object") "OBJECTs are the most basic building blocks in the SYSTEM. In fact, everything is an OBJECT.") (chapter (:title "Slot") "A SLOT is an OBJECT that specifies a place to hold values related to a third OBJECT. In fact any OBJECT can act as a SLOT.") (chapter (:title "Language") "A LANGUAGE is an OBJECT that specifies the list of PRIMITIVE TYPEs, PRIMITIVE FUNCTIONs and PRIMITIVE OPERATORs." (chapter (:title "Lambda Abstraction") ) (chapter (:title "Lambda Application") ) (chapter (:title "Self Evaluation") ) (chapter (:title "Representation") )) (chapter (:title "Syntax") "A SYNTAX is an OBJECT that specifies the two-way transformation for a LANGUAGE to and from STRINGs." (chapter (:title "Lambda Abstraction") "e.g. (lambda x y)") (chapter (:title "Lambda Application") "e.g. (x y)")) (chapter (:title "Program") "A PROGRAM specifies the LANGUAGE it is written in and its body.") (chapter (:title "Evaluation") "EVALUATION is the process of interpreting or compiling and running a PROGRAM according to its LANGUAGE.") (chapter (:title "Primitive Operators") "A PRIMITIVE OPERATOR provides the necessary parts for the INTERPRETER and the COMPILER to be able to support EVALUATION." (chapter (:title "If") ) (chapter (:title "Multiple Arguments Lambda Abstraction") ) (chapter (:title "Same") ) (chapter (:title "Input") ) (chapter (:title "Output") )) (chapter (:title "Memory Layout") (chapter (:title "Immediate Objects") ) (chapter (:title "Heap Objects") )) (chapter (:title "Object") (chapter (:title "Type") ) (chapter (:title "Object") )) (chapter (:title "Primitive Types") (chapter (:title "Boolean") ) (chapter (:title "Number") (chapter (:title "Natural") ) (chapter (:title "Integer") ) (chapter (:title "Rational") ) (chapter (:title "Real") ) (chapter (:title "Complex") )) (chapter (:title "Symbol") ) (chapter (:title "Character") ) (chapter (:title "String") ) (chapter (:title "Pair") ) (chapter (:title "Triplet") ) (chapter (:title "Tuple") ) (chapter (:title "Array") ) (chapter (:title "Structure") ) (chapter (:title "Hash Table") ) (chapter (:title "Function") )) (chapter (:title "Developer Tools") (chapter (:title "Reader") "A READER is a function that takes a STRING and returns a PROGRAM represented by that STRING. A READER is the reverse transformation of a PRINTER.") (chapter (:title "Printer") "A PRINTER is a function that takes a PROGRAM and returns a STRING representation. A PRINTER is a reverse transformation of a READER.") (chapter (:title "Inspector") ) (chapter (:title "Debugger") ) (chapter (:title "Editor") "An EDITOR is a PROGRAM that provides editing for an OBJECT.")) (chapter (:title "Important Algorithms") (chapter (:title "Interpreter") "An INTERPRETER is a function that takes a PROGRAM and evaluates it according to the PRIMITIVEs of its LANGUAGE and returns an OBJECT.") (chapter (:title "Compiler") "A COMPILER is a FUNCTION that takes a source PROGRAM and transforms it into an equivalent target PROGRAM according to the PRIMITIVEs of the source and target LANGUAGEs. The source PROGRAM is expected in the source LANGUAGE, the target PROGRAM is returned in the target LANGUAGE.")) (chapter (:title "Garbage Collection") "Must be pluggable...") (chapter (:title "Bootstrap") "Bootstrap using a self interpreter and a self applicable partial evaluator") (chapter (:title "Runtime Environment") (chapter (:title "Operating Systems") )) (chapter (:title "Primitive Functions") (chapter (:title "Add") ) (chapter (:title "Subtract") ) (chapter (:title "Multiply") ) (chapter (:title "Divide") )) (chapter (:title "Simple Programs") "Provide programs that can be run from a real operating system" (chapter (:title "Hello World") ) (chapter (:title "Factorial") )) (glossary () "Abstract Syntax" "Annotation" "Compiler" "Concrete Syntax" "Garbage Collector" "Interpreter" "Primitive Function" "Primitive Operator" "Printer" "Program" "Language" "Reader" "System"))