Copy Link
Add to Bookmark
Report
AIList Digest Volume 4 Issue 123
AIList Digest Wednesday, 14 May 1986 Volume 4 : Issue 123
Today's Topics:
Queries - Graphical Simulation & Chess Master & ICAI Student Diagnosis &
Doctor and Eliza & System Management & Scheme & Common LISP Style,
Programming - Common LISP Style Standards,
Techniques - String Reduction,
Expert Systems - K:base Correction
----------------------------------------------------------------------
Date: Mon, 12 May 86 12:19:46 est
From: munnari!csadfa.cs.adfa.oz!gyp@seismo.CSS.GOV (Patrick Tang)
Subject: Graphics, Artifical Intelligence and Simulation
Is there anyone out there come across any literature
describing the topics Graphics, Artifical Intelligence and
Simulation together. It seems to me that literatures on
these combined topics are VERY VERY scarce!!!
Please let me know a.s.a.p.
Thanks in advance.
Tang Guan Yaw/PatricK ISD: +61 62 68 8170
Dept. Computer Science STD: (062) 68 8170
University College ACSNET: gyp@csadfa.oz
Uni. New South Wales UUCP: ...!seismo!munnari!csadfa.oz!gyp or
Aust. Defence Force Academy ...!{decvax,pesnta,vax135}!mulga!csadfa.oz!gyp
Canberra. ACT. 2600. ARPA: gyp%csadfa.oz@SEISMO.ARPA
AUSTRALIA CSNET: gyp@csadfa.oz
Telex: ADFADM AA62030
------------------------------
Date: Sun 11 May 86 08:50:06-PDT
From: Stuart Cracraft <CRACRAFT@isi-venera.arpa>
Subject: chess master wanted
I need a Los Angeles area chess master (FIDE 2200 or preferably
higher) to assist in a knowledge engineering project involving
computer chess.
There is no pay, only the fame and glory, and an occasional
co-authorship of published articles about the ongoing work.
Must be FIDE 200 or higher, articulate, and able to describe
chess concepts at length.
If you are such a person, or know of such a person, please
contact me at 213-538-9712.
Stuart Cracraft
------------------------------
Date: Sun, 11 May 86 10:25:01 -0200
From: Oded Maler <oded%wisdom.bitnet@WISCVM.WISC.EDU>
Subject: Student Diagnosis for ICAI Systems
I'm interested in student diagnosis for ICAI systems. I'm looking for
references to papers and reports that contain the following:
1) A definition of a formalism for knowledge representation for educational
purpose. (A "FORMAL" formalism).
2) Implementation of real-world knowledge-bases in various domains using
such a formalism.
3) An argument for the psychological validity of the formalism in
general and of its specific applications in particular.
Thanks
Oded Maler
Dept. of Applied Math.,
Weizmann Institute,
Rehovot 76100, Israel.
(oded@wisdom.bitnet)
------------------------------
Date: Wed, 14 May 86 16:47 N
From: DEGROOT%HWALHW5.BITNET@WISCVM.WISC.EDU
Subject: Doctor and Eliza
Can anyone electronic-mail me the source of "Doctor and Eliza"
written in Common LISP to run on a VAX/VMS-system?
My plan is to connect that program to a server in order to make
an 'intelligent' secretary. It (she) should respond to (remote)
users who try to contact me through the EARN-network when
I am not at the office.
That makes a 'world-wide' test-setup to improve the program by
analyzing the log-files.
Anybody done things like this?
Any comments, hints?
ad-thank-vance,
Tel. 08370- .KeesdeGroot (DEGROOT@HWALHW5.BITNET) o\/o THERE AINT NO
(8)3557 Agricultural University, Computer-centre [] SUCH THING AS
Wageningen, the Netherlands .==. A FREE LUNCH!
DISCLAIMER: My opinions are my own alone and do not represent
any official position by my employer.
------------------------------
Date: 12 May 86 17:47:45 PST (Mon)
From: prandt!kramer@AMES-NAS.ARPA
Subject: System Management
I am looking of information about automated system management for a large
number of heterogeneous UNIX systems. I am including in system management such
things as operator control and interface to different systems, system
performance and usage monitoring, network performance monitoring,
system and network configuration modification in response to changes
in the environment, handling operator requests, and other tasks. We need to
put together a system which will automate as much of this as possible,
hopefully with an Expert System or AI approach. The processors range for
PCs to Silicon Graphics IRIS to Amdahls to a Cray-2. The flavors of
Unix range from VAX 4.2bsd to UTS System V. The networks are TCP/IP based
LANs and WANs (wide area nets). Of course, all these components will be
changing with time, so the system has to be flexible.
There are some hardware/operating system specific AI systems which do some of
this work, documented in IBM journals. There are also some custom systems
which have been developed, for example at Los Alamos, but I do not
know of a system which is designed for UNIX machines or which is a
comprehensive AI approach. Can anyone give pointers to existing
studies, work, systems or products which would satisfy some of our
needs? Thanks a lot.
Bill Kramer
kramer@ames-nas.arpa
------------------------------
Date: 9 May 86 20:03:15 GMT
From: hplabs!qantel!lll-lcc!lll-crg!gymble!umcp-cs!seismo!rochester!henry
@ucbvax.berkeley.edu
Subject: scheme
Would someone please mail me ordering information for the Revised
Revised Report on Scheme. (Names of any other Scheme references
appreciated.)
---- Henry Kautz
:uucp: {seismo|allegra}!rochester!henry
:arpa: henry@rochester
:mail: Dept. of Computer Science,
University of Rochester,
Rochester, NY 14627
:phone: (716) 275-5766
------------------------------
Date: 8 May 86 12:52:12 GMT
From: allegra!mit-eddie!genrad!panda!husc6!harvard!seismo!umcp-cs!aplcen
!jhunix!ins_amrh@ucbvax.berkeley.edu (Martin R. Hall)
Subject: Common LISP style standards.
It seems that my original request for information on LISP coding
standards was not very lucid. Let me clarify.
We are doing everything in Common LISP, but are looking for
standards in regards to coding *style*. For contract work, we need
relatively explicit rules for these things. The standards should
answer these types of questions:
- How do you keep track of the side effects of destructive functions
such as sort, nconc, replaca, mapcan, delete-if, etc?
- When should you use macros vs. functions?
- How do you reference global variables? Usually you enclose it
in "*"s, but how do you differentiate between your own vars and
Common LISP vars such as *standard-input*, *print-level*, etc?
- Documentation ideas?
- When to use DOLIST vs MAPCAR?
- DO vs LOOP?
- Indentation/format ideas? Or do you always write it like the
pretty-printer would print it?
- NULL vs ENDP, FIRST vs CAR, etc. Some would say "FIRST" is
more mnemonic, but does that mean you need to use
(first (rest (first X))) instead of (cadar X) ??
- etc, etc.
It looks like I will be putting together the standards for our
group here, but it would be nice to see some ideas other people had first.
Anyone have anything?
Thanks!
-Marty Hall
Arpa: hall@hopkins MP 600
CSNET: hall.hopkins@csnet-relay AI and Simulation Dept.
uucp: ..seismo!umcp-cs!jhunix!ins_amrh Martin Marietta Baltimore Aerospace
..allegra!hopkins!hall 103 Chesapeake Park Plaza
Baltimore, MD 21220
(301) 682-0917.
------------------------------
Date: 10 May 86 17:31:52 GMT
From: allegra!mit-eddie!genrad!panda!husc6!harvard!seismo!utah-cs!shebs
@ucbvax.berkeley.edu (Stanley Shebs)
Subject: Re: Common LISP style standards.
In article <2784@jhunix.UUCP> ins_amrh@jhunix.UUCP (Martin R. Hall) writes:
>
> We are doing everything in Common LISP, but are looking for
>standards in regards to coding *style*.
The "correct" style depends on whether your hackers are from CMU, MIT,
Stanford, Utah, University of Southern ND at Hoople, ... :-)
The following remarks are based on 4 years with Franz, PSL, and Common
Lisp, reading as well as writing, but are nevertheless highly prejudiced.
> - How do you keep track of the side effects of destructive functions
> such as sort, nconc, replaca, mapcan, delete-if, etc?
There are very few circumstances when it is appropriate to use
destructive functions. There are two classes of exceptions: for efficiency,
or the algorithm depends on it. In the first case, you only use the
destructive operations on newly consed cells, and NEVER on things passed
in as function arguments. In the second case, you have lots of discussion
about why the algorithm needs destructive ops and how it uses them
("since our image is 1000x1000, we replace the pixels to avoid consing
another image...").
> - When should you use macros vs. functions?
Use macros only if you need new syntax, for instance a defining form
that your program uses a lot. In a game I wrote a while ago, there was
a macro called def-thing which took a bunch of numbers and symbols.
If it had been a function, the "'" key would have been worn out...
Sometimes macros are useful to represent a commonly appearing bit of
code that you don't want to call as a function. But this usually
loses on space what it gains in speed.
> - How do you reference global variables? Usually you enclose it
> in "*"s, but how do you differentiate between your own vars and
> Common LISP vars such as *standard-input*, *print-level*, etc?
Use "*"s, no differentiation.
> - Documentation ideas?
File headers are good, especially for programs that wander to different
operating systems. The commenting style in the Common Lisp book is good.
Documentation strings don't seem like a big win, but they probably make
more sense in very elaborate programming environments. I always put
doc strings on defvars.
> - When to use DOLIST vs MAPCAR?
Mapcar returns something, dolist doesn't. To return a list, mapcar
must cons a lot, and dolist doesn't cons at all. Consing is bad. :-)
> - DO vs LOOP?
Whatever turns you on.
> - Indentation/format ideas? Or do you always write it like the
> pretty-printer would print it?
I always write like the editor formats it. This can create problems
if two people are using different editors or different customizations
of the editor. What you see in the Common Lisp book is a good place
to start for getting your editor to indent properly.
Personally, I find it most readable to have a block of comments in
front of the function, then a blank line, then the function. I also
prefer to minimize the number of comments scattered about in the
function body. Frequently the structure of the function tells a lot,
but is obscured by comments inserted randomly. Consider, too, that
a 1-page function + 2 pages of comments = 3 pages of function, which
is *really* hard to read!
> - NULL vs ENDP, FIRST vs CAR, etc. Some would say "FIRST" is
> more mnemonic, but does that mean you need to use
> (first (rest (first X))) instead of (cadar X) ??
Null vs endp is pretty clearcut, since endp may error out, where null
would just return nil. No more than 1% of all Lisp programs will
behave predictably if they get a dotted list instead of a normal one,
but nobody seems to care...
On first vs car, everybody has their favorites. I prefer c...r combos,
but others hate it when I use cadr instead of second. Fortunately, such
circumstances are rare. If you feel the urge to put together a data
structure that has more than 2 pieces, use a defstruct. Your code will
be more readable *and* more efficient (since implementors can put in
all sorts of performance hacks for structures). If I were a manager,
I would fire anybody who used anything but car, cdr, and cadr (and they
wouldn't be saved by doing (car (car (cdr (cdr X)))) either!)
> - etc, etc.
> -Marty Hall
Avoid cond if you only have one test, use "if" instead. Saves two pairs
of parens and a "T"... (i.e. it's easier to read). Short functions are
better than long ones. In any competent Lisp implementation, the cost
of a function call is quite low, and shouldn't be considered.
I've only written a handful of functions longer than 20 lines...
Sequence functions and mapping functions are generally preferable to
handwritten loops, since the Lisp wizards will probably have spent
a lot of time making them both efficient and correct (watch out though;
quality varies from implementation to implementation).
More generally, Lisp programs usually benefit from the encouragement
of a "functional programming" style, where functions do few side-effects
that extend beyond the function's body. Easier to read, easier to debug,
easier to maintain.
Standard dictums of programming practice still apply in Lisp, i.e. always
put in a default case on any mult-way conditional - the constructs ecase
and ccase are useful in this respect. There are lots of others I don't
remember at the moment... somebody should write a book that concentrates
on Lisp programming instead of laundry listifying 400 functions...
stan shebs
------------------------------
Date: Sun, 11 May 86 21:02:05 CDT
From: David Chase <rbbb@rice-titan.ARPA>
Subject: String Reduction
See ``Equational Logic as a Programming Language'' by Mike O'Donnell. He
writes about using and implementing ``equational logic'', and this makes
heavy use of pattern matching and replacement (not necessarily string
reduction). (MIT Press, summer 1985)
Gyula Mago's FFP machine is a string reduction machine for functional
languages.
(I'm rather surprised that no one else mentioned these two references; are
these not what you had in mind?)
David Chase
Rice University
------------------------------
Date: Mon 12 May 86 18:15:47-CDT
From: CMP.BARC@R20.UTEXAS.EDU
Subject: Gold Hill PC Products
My listing of K:base as an expert system tool may have been out-of-date,
but not erroneous. Gold Hill Computers sent me a marketing brochure, as
well as a beta test request form. It was also listed in Lehner and Barth's
article in "Expert Systems", Oct. 1985. Has Gold Hill withdrawn K:base
from the market, or were they just overzealous in their advertising?
Mr. Miyata's cute reference to the apparently erroneous phone number would
have been less obscure if he had also listed the correct number(s), which are
(800) 242-LISP and (in MA) (617) 492-2071.
Dallas Webster
CMP.BARC@R20.UTexas.Edu
{ihnp4 | seismo | ctvax}!ut-sally!batman!dallas
------------------------------
End of AIList Digest
********************