The ook Reference Manual

This is the ook Reference Manual, generated automatically by Declt version 4.0 beta 2 "William Riker" on Mon Feb 26 17:28:30 2024 GMT+0.

Table of Contents


1 Introduction


2 Systems

The main system appears first, followed by any subsystem dependency.


2.1 ook

A CL compiler and enviroment for literate Orangutans.

Author

Marco ’Wizzard’ Antoniotti

License

Public Domain

Source

ook.asd.

Child Components

3 Files

Files are sorted by type and then listed depth-first from the systems components trees.


3.1 Lisp


3.1.1 ook/ook.asd

Source

ook.asd.

Parent Component

ook (system).

ASDF Systems

ook.


3.1.2 ook/ook-package.lisp

Source

ook.asd.

Parent Component

ook (system).

Packages

ook.


3.1.3 ook/ook.lisp

Dependency

ook-package.lisp (file).

Source

ook.asd.

Parent Component

ook (system).

Public Interface
Internals

4 Packages

Packages are listed by definition order.


4.1 ook

Source

ook-package.lisp.

Use List

common-lisp.

Public Interface
Internals

5 Definitions

Definitions are sorted by export status, category, package, and then by lexicographic order.


5.1 Public Interface


5.1.1 Constants

Constant: monkey?!?

You are in trouble if you call him ’monkey’!

Package

ook.

Source

ook.lisp.


5.1.2 Ordinary functions

Function: gently-ask-the-librarian (ooks &optional run)

ACTUALLY, the main request for interpretation of OOKS.

Naturally, to be asked gently.

It compiles the OOKS and executes them if the optional RUN parameter is T;
it returns the compiled function that contains the OOKS. The function
can then be reused as needed.

Arguments and Values:

OOKS : some ’ooks’.
RUN : a generalized boolean, default is T.
result : a compiled function taking no arguments.

Examples:

cl-prompt> (gently-ask-the-librarian #P"bottles.ook")

Notes:

The compiler (which eventually calls the <strong>CL</strong> <code>compile</code> function) may take a long time. Whether this is due to the size of
the TAGBODY generated or whether the Librarian has run out of bananas
and went looking for them in the Unseen University kitchen, it is
unknown, but, surely, somewhat magical.

See Also:

OOK? OOK.

Package

ook.

Source

ook.lisp.

Function: koo (ooks &optional library-stream)

The Ook decompiler.

Takes the LAMBDA generated by the compiler and wirtes out the programs in a format readable by an orangutan (or by a well fed and drunk wizard, unless he is asleep, which will be the case most of the time when well fed and drunk).

I am repeating this because KOO is called by OOK! (the decompiler) and wizards have been known to require more than one repetition of whatever it is said (especially during Faculty Meetings.)

See Also:

OOK!

Package

ook.

Source

ook.lisp.

Function: ook! (ooks &optional library-stream)

The Ook decompiler.

Takes the LAMBDA generated by the compiler and wirtes out the programs in a format readable by an orangutan (or by a well fed and drunk wizard, unless he is asleep, which will be the case most of the time when well fed and drunk).

See Also:

KOO

Package

ook.

Source

ook.lisp.

Function: ook? (ooks)

The main request for interpretation of OOKS.

Or to peel a banana. Works as well. It is actually a wrapper for gently asking the Librarian for some information.

See Also:

GENTLY-ASK-THE-LIBRARIAN

Package

ook.

Source

ook.lisp.


5.1.3 Generic functions

Generic Function: ook. (ooks)

The OOK compiler entry point.

This generic function just wraps the actual compiler, which expects a list of - you guessed it - ’ooks’.

Arguments and Values:

OOKS : see the methods’ descriptions.
result : a lambda-expression taking no arguments.

Package

ook.

Source

ook.lisp.

Methods
Method: ook. (ooks)

You are in trouble! This method says ’monkey?!?.

Method: ook. ((ooks list))

OOKS is a list of OOKs to be compiled pair by pair.

The result is a LAMBDA of no arguments that contains the compiled program (essentially a giant TAGBODY).

Method: ook. ((ooks stream))

Compiles the OOKS from the (banana) STREAM.

Method: ook. ((ooks pathname))

The pathname containing the OOKS is opened and its content read.

Method: ook. ((ooks string))

Dispatches on a pathname containing the OOKS.


5.2 Internals


5.2.1 Special variables

Special Variable: *index*

The library counter (counts more than banana peels).

Package

ook.

Source

ook.lisp.

Special Variable: *library*

The place where library is located (can be ’unseen’).

Package

ook.

Source

ook.lisp.

Special Variable: +ooks+

Need we say more?

Package

ook.

Source

ook.lisp.


5.2.2 Ordinary functions

Function: make-library ()

Creates the memory where the progr... sorry, the ’ooks’, reside.

Package

ook.

Source

ook.lisp.

Function: the-ooks (ooks)
Package

ook.

Source

ook.lisp.


Appendix A Indexes


A.1 Concepts