Abstracts of the files contained in directory
"/pub/mcl2/contrib" on the anonymous archive
"cambridge.apple.com" as of Dec. 20, 1992.

#### BINHEX     Cartiers-Contribs.sit.hqx   ****

From:  Guillaume Cartier
EMail: cartier@math.uqam.ca
Needs: MCL 2.0 final

This file contains all my contributions to the MCL community.
It includes the following:

WHO-CALLS
  This unit implements a system extension that will automatically
  remember for each function, variable and macro, which toplevel form
  respectively calls it, makes a reference to it or macroexpands it.

  The most powerful feature of this unit is its very close
  integration with Fred. For those who are performance conscious, the
  overhead of using this unit is extremely minimal, in respect
  to both memory and compilation speeds.

EXTENDED-APROPOS
  This set of files implements an extended apropos dialog. It is a superset
  of MCL's standard apropos dialog. You can use it to search for all symbols
  that match certain criteria.

COLLECTIONS
  This unit will enable you to easily access important places in
  your fred windows via convenient pop-up menus. For example, you can use
  it to get a pop-up menu of all the toplevel definitions contained in
  your frontmost fred window.

POPPER-MENUS
  This unit will allow you to create pop-up menus that can appear
  anywhere on a mouse click, just as with my Who-Calls and Collections units.

ONLINE-HELP
  This module will allow you to add help files to your applications,
  just like MCL. Your help file will be totally integrated to MCL's help
  system. For example, typing control-x control-d over any documented symbol
  will bring a corresponding documentation window.

TCP/IP
  This unit contains TCP/IP related code, mainly FTP tools and support
  for sending mail.

THINK-C
  This contribution contains Lisp and C code that will ease interfacing
  MCL with Think C. A fairly elaborate example is included.

#### TEXT    hires-timer.lisp ####
                                                                     

From:  Alex Repenning                                        
EMail: ralex@cs.colorado.edu
Needs: MCL 2.01bp3, Symbolics CL, ..

    Abstract:   Not your father's TIME macro anymore.              
      Have you ever written code like:                             
        (time (dotimes (i 10000..) <some-form-to-be-timed>))       
      .. then this is for you! No more playing with the number of  
      times to call your code, measure time of an empty dotimes,   
      compilation, etc.                                            
      The whole thing started really small and got out of hand     
      big time.                                                    
    Features:                                                      
      - High Resolution: gives you the time it takes to eval forms 
          with a resolution much better than that of the built-in  
          TIME macro.                                              
      - Portable: Only relies on Common Lisp functionality.        
      - (Mac only) FRED Timer command: c-x c-t TIME-OF-SEXP        
    Status: interesting hack                                       
    How: compile the form to be tested, call it as many times as   
      required to determine the time it takes. Compare the time    
      with the time of an empty loop.                              
    Bugs, Problems: It may take a while to determine the time if   
      the form to be timed is very fast (e.g., (SVREF ..)).        

#### BINHEX    symbol-complete.lisp.sit.hqx ####
                                                                          
From:  Alex Repenning
EMail: ralex@cs.colorado.edu                                              
Needs: MCL 2.0 (beta, final, ..)

Author:     Alex Repenning, ralex@cs.colorado.edu             
            Copyright (c) 1992 Alex Repenning                 
                                                              
Address:    Computer Science Department                       
            University of Colorado at Boulder                 
            Boulder, CO 80309-0430                            
                                                              
Filename         : symbol-complete.lisp                       
Last Update      : 9/5/92                                     
Version   :                                                   
  1.0   07/24/90  Alex Repenning                              
  1.1   04/13/91  Alex & Brigham Bell   completion works also 
                  if cursor in the middle of symbol.          
  2.0    1/ 6/92  Alex, MCL 2.0                               
  2.0.1  3/31/92  left trim "#'", "#`", "#", "'", "`"         
  2.0.2  8/25/92  Preserve package qualifier.                 
System    : Macintosh II, MCL 2.0                             
Abstract  : A simple line completion mechanism.               
Features:                                                     
  - Simple one key operation: Since most users do not like to 
      remember many different completion functions, this      
      completion package combines several completion          
      strategies into one function (using a cascading filter  
      scheme).                                                
        1) prefix search in window package                    
        2) prefix search in all packages                      
        3) substring search in window package                 
        4) substring search in all packages                   
      If no symbol is found the next strategy is employed.    
      If only one symbol is found it will be used as          
      completion.                                             
      If multiple symbols are found then either the symbol    
      is completed as far as possible or a menu is offered.   
  - Partial Completion (sounds like a contradiction):         
      If at any stage in the search there is more than one    
      interned symbol matching what you typed so far and if   
      the common prefix of these symbols is longer than what  
      is typed so far you will get this common prefix.        
  - Preserves Case: The completion will assume the same case  
      of the string typed so far (lower case, upper case, or  
      capitalized),                                           
      e.g., "*Apple-" gets completed to "*Apple-Menu*"        
  - Works also with Dialog Boxes                              
  - It's Small: more comments than code ;-)                   
Bugs, Problems: Haven't found a good strategy yet to deal with
  package prefixes of partial completions:                    
   - use partial completion only if all symbol from same      
     package?                                                 
   - strip package prefix?                                    
     Any ideas?                                               
  Completion can be slow in very crowded packages (e.g., :ccl)
Acknowledgements:                                             
  Guillaume Cartier (cartier@mipsmath.math.uqam.ca)           
    preserve keyword qualifier in partial completion          
                                 
#### TEXT  DEFSYS.tar.Z   ####
From:  Joachim Laubsch
EMail: laubsch@hplabs.hpl.hp.com

     A Portable System Definition Facility for Common Lisp

Abstract
In order to maintain a large system of modules with complex load and
compile time dependendies, a declarative and central representation of
a system, its subsystems and modules is preferrable to one where these
dependencies are associated with a particular module (e.g. by {\tt
require} and {\tt provide}).  Since in Lisp the definition of other
languages is a frequently used programming technique, the load and
compile time dependencies are also parameterised by the compile or
loader to be used for a module or system.  The Portable System
Definition Facility is intended to meet this need.

#### TEXT   ZEBU-1.4.tar.Z  ####
From:  Joachim Laubsch
EMail: laubsch@hplabs.hpl.hp.com

Abstract
Zebu is a kind of YACC, and was originally implemented in Scheme by
William M. Wells III.  It generates an LALR(1) parsing table. To parse
a string with a grammar, only this table and a driver need to be
loaded.

The present version of Zebu is an extension, rewritten in Common Lisp.
It contains the ability to define several grammars and parsers
simultaneously, a declarative framework for specifying the semantics,
as well as efficiency related improvements.  The current version
compiles a grammar with 300 productions (including dumping of the
tables to disk) in approx 2 minutes and 30 seconds on a HP 9000/370.

This implementation has been tested in Lucid CL, Allegro CL, and
MCL 2.0b.


#### TEXT styled-comments.lisp ####

From: Bob Kass 
Email: kass@cmi.com 
Needs: MCL 2.0 final (but will probably work on 2.01bp3)

Abstract

Loading this file will add an Edit menu command to set styles of all
semicolon delimited comments in a Fred buffer.  This is useful for
setting off your comments from the rest of the text, and is inspired
by Symbolic's electric-lisp-mode (or some such name).  The code is an
adaptation of Derek White's styled-definitions.lisp (which is on the
MCL 2.0 CD).  This only affects comments that start with a leading
semicolon (i.e. not #| |#) comments.  Also, it leaves the modeline
comment in a normal style.  It tires to be smart about the appearance
of a semicolon in a string, but can still get confused, particularly
if you use a doublequote (") in a comment.

#### BINHEX  GECO-v1.0.cpt.hqx ####
#### UNIX COMPRESSED TAR  GECO-v1.0.tar.Z ####

From: George Williams
Email: george@hsvaic.boeing.com
Needs: MCL 2.0 (but should work on any CLtL2 compliant Common Lisp)

Genetic Evolution through Combination of Objects (GECO)

GECO is a toolbox for constructing genetic algorithms. It provides a set
of extensible classes and methods designed for generality. Some simple
examples are also provided to illustrate the intended use.

#### BINHEX     menu-extensions.sit.hqx   ****                                
                                                               
From:  Mark Tapia                                                             
EMail: markt@dgp.utoronto.ca                   
Needs: MCL 2.0                                         
Format: binhex file of an archive.                           
                                               
The mixins in menu extensions allow the designer to associate             
a menu with a view without modifying the menu-bar and to                      
invoke a hierarchical menu by holding the mouse button down within
the view.  Menus of this form can be invoked anywhere in the view.
Menus pop up when the mouse remains relatively stable for a
period of time.  When the menu is displayed, ordinary menu 
items are selected by releasing the mouse outside the inner zone
with the menu-item hilighted. Hierarchical menu items are
selected by pausing over the menu item and waiting for the 
submenu to appear. When the menu is not displayed, the mouse
leaves an ink trail when it moves. The menu can be displayed by
pausing.

The mixins in menu extensions also add a subclass of
menu-items that remember the checkmark character.
There are several files in this directory:
   about-marking-menus.lisp             ; a file describing the marking menus

   check-menu-item.lisp                 ; defines menu-items that remember check
marks

   hier-menu-demo.lisp                  ; sample code which demonstrates 
                                        ; hier marking menus

   load-demos.lisp                      ; loads the MCL2.0 final version of menu
s and demos

   load-demos-old.lisp                  ; loads the MCL2.0b1 version of menus an
d demos

   load-menus.lisp                      ; loads the MCL2.0 final version of menu
s

   load-menus-old.lisp                  ; loads the MCL2.0b1 version of menus

   make-menus.lisp                      ; compiles and loads the menu-enhancemen
ts
                                        ; package

   marking-menu.lisp                    ; defines a class of pop up marking menu
s
                                        ; menu items within a -marking-menu can 
                                        ; also be marking-menus

   marking-menu-demo.lisp               ; a demonstration of marking menus and c
heck
                                        ; menu items

   oou-utils.lisp                       ; utility routines from oodles-of-utils.
lisp    
                                        ; including macros for executing forms a
fter saving 
                                        ; rectangular portions of screen bit map
s
                                        ; and then restoring them upon terminati
on

#### BINHEX     print-u.lisp.hqx   ****
 
From:  Mark Tapia
EMail: markt@dgp.utoronto.ca
Needs: MCL 2.0
Format: binhex file of a lisp file

print-u is a package for printing windows and documents. 
The following methods and functions are exported:
      get-printer-error    for returning the error condition or nil (no error)
      page-size            point indicating the page size used for printing
      picture-hardcopy     for quickdraw pictures
      print-contents       for drawing the nested views of a window
      view-print-contents  for printing a series of views
        
NOTE: Every window has a private print record which controls the
     way the window will be printed and the attributes in the
     print-style-dialog box. The private print record is stored in the
     resource fork of the file when it is saved (:type :prec :resource-d 128)
     and when the Page Setup method is selected.
     The private print record is restored when the file is edited again.
     
     Every specific view uses the private print record of the outermost
     view containing the specific view.

     A private print record of a window is saved when the window
     is saved (using Save, Save As, or Save Copy As and when the
     window is closed and needs to be saved. Methods are defined
     for fred windows.

     For all other windows, you must provide a method for saving
     the file (ccl::window-save using ccl::window-file-save which
     must return the pathname) and a method for (view-file-name window)
      
     When a titled fred-window is saved (using the file menu
     items "save", "Save As ..." "Save Copy As..."), the page 
     setup attributes are saved in a print record in the file. 
     The record is placed in the :prec resource with id 128.  
     When the file is reopened in a fred-window, the page setup 
     attributes are restored.
  
     Every other object uses a shared, public print record *print-hc-prec*.
     This print record is initialized at the beginning of a session.

#### BINHEX     GAL.sea.Hqx   ****

From:  Howard Oakley
EMail: Howard@quercus.demon.co.uk or AppleLink UK0392
Needs: MCL 2.0 final (minor mods required to work with 2.0b1 too)

Following un-BinHexing, the self-extracting archive GAL.sea contains
the Genetic Algorithm package GAL, written by Bill Spears of Navy Center
for Applied Research in AI, Naval Research Laboratory, ported to MCL by
Howard Oakley.
This software is the property of the Department of the Navy.
Summary:
	The enclosed Lisp code contains functions useful for
	experimentation in Genetic Algorithms. The system is
	called GAL. It was originally written for Lucid
	Common Lisp (also known	as Sun Common Lisp), and has
        been ported to Macintosh Common Lisp (MCL) version 2.0p1
        by Howard Oakley.  This code should work with all versions
        of MCL from 2.0 onwards.

	There is no guarantee that the code will do what you
	expect or that it is error free. It is simply meant
	to provide a useful way to learn and experiment about
	some of the finer details of GA implementation.

	The implementation is a "standard" GA, similar to
	Grefenstette's work. Baker's SUS selection algorithm
	is employed, 2 point crossover is maintained at 60%,
	and mutation is very low. Selection is based on 
	proportional fitness. This GA uses generations.
	It is also important to note that this GA maximizes.

	There is no ranking, uniform crossover, adaptive
	operators, etc. We intend to explore these issues
	in future work.

	In order to use this code, the lisp function "myeval"
	must be defined. This is essentially the function that
	describes the space to be searched. Myeval takes one
	argument, namely the index of the individual to be evaluated.

	The GA will terminate when the function "termination?" (in
	term.lisp) returns true. This needs to be defined for any
	application of the GA. 

	The GA will start itself over if it hasn't terminated and
	has lost diversity.

	Assuming that the myeval function has been created and loaded,
	a top level control loop must also be written. This control
	loop should initialize the GA structures, statistics, variables,
	and population. After a GA search, the variables and population
	are always reinitialized. Usually a certain number (n) of
	experiments are made. Also, a port should be provided to allow
	for output of useful information.

        I do intend expanding and prettifying GAL for MCL considerably over
        the coming weeks (I have already modified it for greyscale coding,
        for example), and will make further versions available in due course.

#### BINHEX Lynch Lib.sea ****
FROPM:  Richard Lynch
E-MAIL:  lynch@ils.nwu.edu
NEEDS:  MCL 2.0

ll-init	Makes logical pathname Lynch Lib; adds it to search path
about	Defines an about screen.
cursor	Provides programmatic cursor control.
draw-cursor	Draws a cursor to a grafport.
find-special-folder	Finds special folders
font-info	Provides all the font-info stuff in bite-size chunks.
help-box	A rectangular view with arrows.
icons-sys7-tn306	Drawing icon suites; Tech-note 306.
menubar-hide	Hide and Show the menubar.
numb-o-rama	An easy way to paste mouse-position to a fred-window.
points	A few stupid functions for munging points.
soundex	String comparison based on sounds like.
suspend-resume-events	Hooks into System suspension/resumption of application.
tool-palette	Simplifies making tool palettes just like in real programs.
twist-down	Provides heterarchy editing a la Finder.
