From haible@ilog.fr Tue Jan 6 05:30:26 1998 Received: from sceaux.ilog.fr (sceaux.ilog.fr [193.55.64.10]) by seagull.cdrom.com (8.8.6/8.6.6) with ESMTP id FAA16132 for ; Tue, 6 Jan 1998 05:30:17 -0800 (PST) Received: from ilog.ilog.fr ([172.17.2.22]) by sceaux.ilog.fr (8.8.8/8.8.7) with ESMTP id OAA13026; Tue, 6 Jan 1998 14:29:31 +0100 (MET) Received: from halles.ilog.fr (halles.ilog.fr [172.16.1.96]) by ilog.ilog.fr (8.8.8/8.7.3) with ESMTP id OAA01627; Tue, 6 Jan 1998 14:28:57 +0100 (MET) From: Bruno Haible Received: (from haible@localhost) by halles.ilog.fr (8.8.5/8.8.5) id OAA03037; Tue, 6 Jan 1998 14:28:56 +0100 (MET) Date: Tue, 6 Jan 1998 14:28:56 +0100 (MET) Message-Id: <199801061328.OAA03037@halles.ilog.fr> To: clisp-list@clisp.cons.org Subject: clisp-list moves Hello all, The home location of CLISP moves. This means: * The mailing list was and is now . The address for administrative requests (subscribe, unsubscribe) for clisp-list was and is now . * The FTP server was ftp://ma2s2.mathematik.uni-karlsruhe.de/pub/lisp/clisp/ and is now ftp://ftp2.cons.org/pub/lisp/clisp/. Old versions of CLISP and binaries older than June 1995 (for 386bsd, acorn, atari, coherent386, sco, sequent-ptx, sgi-irix4, sgi-irix5, sun3-sunos4, sun386, sun4-sunos51, sun4-sunos52, sun4-sunos53, unixware) are only available from http://clisp.cons.org/~haible/clisp-archive/. * There is now a home page at http://clisp.cons.org/~haible/clisp.html. Please update your URLs. All of you who were subscribed to the old clisp-list on December 9, 1997, are now subscribed to the new clisp-list. You'll find below the message which you would have gotten if you had subscribed to the new clisp-list manually. Please read it, and save it for the day when you want to unsubscribe. Many thanks to Martin Cracauer who owns clisp.cons.org and to Walnut Creek CDROM who owns ftp2.cons.org. Bruno Haible =========================== welcome message ============================= You have been added to list clisp-list@clisp.cons.org. The system has recorded your address as ................... and in order for your messages to get posted (if the list accepts postings), you will have to send them from this address. If a message is ever rejected, please contact the list's owner: haible@ilog.fr For information on this service and how to use it, send the following request in the body of a mail message to listproc@clisp.cons.org: HELP All requests should be addressed to listproc@clisp.cons.org. clisp-list@clisp.cons.org This mailing list is for users of the CLISP implementation of Common Lisp by Bruno Haible and Michael Stoll. It is the proper forum for questions about CLISP and also bug reports, compatibility issues, problems of CLISP on specific platforms, enhancement of CLISP, miscellaneous comments, etc. The clisp-list is managed internally by the Boston University "listproc" program. To be added or removed from the clisp-list or to retrieve past articles posted to the clisp-list please send mail to: listproc@clisp.cons.org If you include the word "help" as the message body, "listproc" will return a list of valid commands and options. To have messages forwarded to everyone else on the clisp mailing list send them to: clisp-list@clisp.cons.org To retrieve the past articles posted to the clisp list, send mail to listproc@clisp.cons.org including the three words "get clisp-list mailing-list-archive" as message body. To unsubscribe from the clisp mailing list, send mail to listproc@clisp.cons.org including the two words "unsubscribe clisp-list" as message body. Please save this message for the day you want to unsubscribe. About CLISP: CLISP is a Common Lisp implementation by Bruno Haible of Karlsruhe University and Michael Stoll of Munich University, both in Germany. It mostly supports the Lisp described in "Common LISP: The Language (2nd edition)" and the ANSI Common Lisp standard. It runs on microcomputers (DOS, OS/2, Windows NT, Windows 95, Amiga 500-4000, Acorn RISC PC) as well as on Unix workstations (Linux, SVR4, Sun4, DEC Alpha OSF, HP-UX, NeXTstep, SGI, AIX, Sun3 and others) and needs only 2 MB of RAM. It is free software and may be distributed under the terms of GNU GPL. The user interface comes in German, English, French and Spanish. CLISP includes an interpreter, a compiler, a large subset of CLOS, a foreign language interface and a socket interface. An X11 interface is available through CLX and Garnet. Available by anonymous ftp from ftp2.cons.org in the directory /pub/lisp/clisp. For more information, look at http://clisp.cons.org/~haible/clisp.html. From jschrod@acm.org Wed Jan 7 12:06:51 1998 Received: from puma.npc.de (root@deck-134.frankfurt.netsurf.de [194.64.181.166]) by seagull.cdrom.com (8.8.6/8.6.6) with SMTP id MAA20653 for ; Wed, 7 Jan 1998 12:06:49 -0800 (PST) Received: (from schrod@localhost) by puma.npc.de (8.6.12/8.6.12) id UAA02004 for clisp-list@seagull.cons.org; Wed, 7 Jan 1998 20:30:59 +0100 Received: (from schrod@localhost) by puma.npc.de (8.6.12/8.6.12) id UAA02002; Wed, 7 Jan 1998 20:30:58 +0100 Date: Wed, 7 Jan 1998 20:30:58 +0100 Message-Id: <199801071930.UAA02002@puma.npc.de> From: Joachim Schrod To: clisp-list@seagull.cons.org Reply-To: "ftp.tu-darmstadt.de Administration" Subject: Re: clisp-list moves Mime-Version: 1.0 (generated by tm-edit 7.95) Content-Type: text/plain; charset=US-ASCII >>>>> "BH" == Bruno Haible writes: BH> Hello all, BH> The home location of CLISP moves. This means: BH> * The FTP server was ftp://ma2s2.mathematik.uni-karlsruhe.de/pub/lisp/clisp/ BH> and is now ftp://ftp2.cons.org/pub/lisp/clisp/. The mirror at ftp://ftp.tu-darmstadt.de/pub/programming/languages/lisp/clisp/ has been updated accordingly. You might be interested in it if your WIN connection is much faster than your connection to the US. Cheers, Joachim -- =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Joachim Schrod Email: jschrod@acm.org Net & Publication Consultance GmbH Tel.: +49-6074-861530 Roedermark, Germany Fax: +49-6074-861531 From kehr@iti.informatik.tu-darmstadt.de Mon Jan 12 06:16:47 1998 Received: from spirit.iti.informatik.tu-darmstadt.de (spirit.iti.informatik.tu-darmstadt.de [130.83.5.38]) by seagull.cdrom.com (8.8.8/8.6.6) with ESMTP id GAA05699 for ; Mon, 12 Jan 1998 06:13:34 -0800 (PST) Received: (from kehr@localhost) by spirit.iti.informatik.tu-darmstadt.de (8.8.5/8.8.5) id PAA04609; Mon, 12 Jan 1998 15:14:00 +0100 (MET) Date: Mon, 12 Jan 1998 15:14:00 +0100 (MET) Message-Id: <199801121414.PAA04609@spirit.iti.informatik.tu-darmstadt.de> From: Roger Kehr MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit To: clisp-mailing-list Subject: Serious problem with DEFMETHOD and macroexpansion X-Mailer: VM 6.32 under 19.15p5 XEmacs Lucid Hello, I've implemented an index processor that heavily relies on CLOS for the implementation of the markup backend. Markup is defined at runtime with the definition of CLOS-methods that are generated on-the-fly via macro-expansion and that specialize on already existing CLOS-objects with the help of EQL-specializers. For the moment further details are not important. I've used clisp-96-05-30 for a long time and it worked quite fine for me. No I've upgraded to clisp-97-09-25 and the system breaks. Here is some example code: ---snip (use-package :clos) (defpackage :markup) (defmacro markup-locref (&key open close class attr depth) (cond [.. stuff omitted ...] (t `(markup::define-environment-methods DO-MARKUP-LOCREF (,(if attr `(attr (EQL ,(lookup-catattr *indexstyle* attr))) '(attr category-attribute)) ,(if class `(locrefcls (EQL ,(cdr (lookup-locref-class *indexstyle* class)))) '(locrefcls layered-location-class)) ,(if depth `(depth (EQL ,depth)) '(depth number))) :declare ((declare (ignore attr locrefcls depth))) :open ,(when open `((do-markup-string ,open))) :close ,(when close `((do-markup-string ,close))))))) (defmacro define-environment-methods (name signature &key open close declare body) (let ((name (stringify name))) `(EVAL-WHEN (COMPILE LOAD EVAL) (HANDLER-BIND ((WARNING #'MUFFLE-WARNING)) (CL:DEFMETHOD ,(intern (string-upcase (concatenate 'string name "-open")) 'markup) ,signature ,@declare ,@open ,@body) (CL:DEFMETHOD ,(intern (string-upcase (concatenate 'string name "-close")) 'markup) ,signature ,@declare ,@close ,@body))))) ---snap Basically, DEFINE-ENVIRONMENT-METHODS is a generic wrapper for the dynamic creation of CLOS methods, which is called by MARKUP-LOCREF. The function LOOKUP-CATATTR returns a CLOS object of class LOCREF:CATEGORY-ATTRIBUTE, which is used to defin an EQL specializer on it. The code of this class and this function are not listed here. Since the error is hard to present in a few lines of code, I present a full stepped session leading to the error. You can see in the next few lines that (LOOKUP-CATATTR "def") returned the object # which plays a central role. ---snip > (macroexpand-1 '(markup-locref :attr "def" :open "\def{" :close "}")) (MARKUP::DEFINE-ENVIRONMENT-METHODS MARKUP::DO-MARKUP-LOCREF ((MARKUP::ATTR (EQL #)) (MARKUP::LOCREFCLS LOCREF:LAYERED-LOCATION-CLASS) (MARKUP::DEPTH NUMBER) ) :DECLARE ((DECLARE (IGNORE MARKUP::ATTR MARKUP::LOCREFCLS MARKUP::DEPTH))) :OPEN ((MARKUP::DO-MARKUP-STRING "def{")) :CLOSE ((MARKUP::DO-MARKUP-STRING "}")) ) ; T > (step (markup-locref :attr "def" :open "\def{" :close "}")) step 1 --> (MARKUP-LOCREF :ATTR "def" :OPEN ...) Step 1> step step 2 --> (MARKUP::DEFINE-ENVIRONMENT-METHODS MARKUP::DO-MARKUP-LOCREF ((MARKUP::ATTR #) (MARKUP::LOCREFCLS LOCREF:LAYERED-LOCATION-CLASS) (MARKUP::DEPTH NUMBER) ) :DECLARE ... ) Step 2> step step 3 --> (EVAL-WHEN (COMPILE LOAD EVAL) (HANDLER-BIND (#) (DEFMETHOD MARKUP::DO-MARKUP-LOCREF-OPEN # # ...) (DEFMETHOD MARKUP::DO-MARKUP-LOCREF-CLOSE # # ...) ) ) Step 3> step step 4 --> (HANDLER-BIND ((WARNING #'MUFFLE-WARNING)) (DEFMETHOD MARKUP::DO-MARKUP-LOCREF-OPEN (# # #) (DECLARE #) ...) (DEFMETHOD MARKUP::DO-MARKUP-LOCREF-CLOSE (# # #) (DECLARE #) ...) ) Step 4> step step 5 --> (LET ((#:G8751 #'#) (#:G8752 #'#)) (LOCALLY (DECLARE #) (SYSTEM::%HANDLER-BIND # #)) ) Step 5> step step 6 --> #'(LAMBDA NIL (PROGN #'MUFFLE-WARNING)) Step 6> step step 6 ==> value: # step 6 --> #'(LAMBDA NIL (PROGN (DEFMETHOD MARKUP::DO-MARKUP-LOCREF-OPEN # # ...) (DEFMETHOD MARKUP::DO-MARKUP-LOCREF-CLOSE # # ...) ) ) Step 6> step step 7 --> (PROGN (SYSTEM::C-DEFUN 'MARKUP::DO-MARKUP-LOCREF-OPEN)) Step 7> step step 8 --> (SYSTEM::C-DEFUN 'MARKUP::DO-MARKUP-LOCREF-OPEN) Step 8> step step 9 --> 'MARKUP::DO-MARKUP-LOCREF-OPEN Step 9> step step 9 ==> value: MARKUP::DO-MARKUP-LOCREF-OPEN step 8 ==> value: NIL step 7 ==> value: NIL step 7 --> (FUNCTION CALL-NEXT-METHOD (LAMBDA (SYSTEM:: &OPTIONAL SYSTEM::) (DECLARE #) (DECLARE #) ... ) ) Step 7> step step 7 ==> value: # &OPTIONAL SYSTEM::) (DECLARE (CONS SYSTEM::)) (DECLARE (IGNORE SYSTEM::)) (BLOCK CALL-NEXT-METHOD (LET* ((CLOS::NEW-ARG-EXPRS (CDR SYSTEM::))) (IF CLOS::NEW-ARG-EXPRS (LIST 'IF '#:G8754 (LIST* 'FUNCALL '#:G8754 CLOS::NEW-ARG-EXPRS) (LIST* 'CLOS::%NO-NEXT-METHOD '#:G8753 CLOS::NEW-ARG-EXPRS) ) (LIST 'IF '#:G8754 (LIST 'FUNCALL '#:G8754 '#:G8757 '#:G8756 '#:G8755) (LIST 'CLOS::%NO-NEXT-METHOD '#:G8753 '#:G8757 '#:G8756 '#:G8755) ) ) ) )> step 7 --> (FUNCTION NEXT-METHOD-P (LAMBDA (SYSTEM:: &OPTIONAL SYSTEM::) (DECLARE #) (DECLARE #) ... ) ) Step 7> step step 7 ==> value: # &OPTIONAL SYSTEM::) (DECLARE (CONS SYSTEM::)) (DECLARE (IGNORE SYSTEM::)) (BLOCK NEXT-METHOD-P (IF (> (LENGTH SYSTEM::) 1) (SYSTEM::MACRO-CALL-ERROR SYSTEM::) (LET* NIL '#:G8754) ) )> step 7 --> (PROGN (SYSTEM::C-DEFUN 'MARKUP::DO-MARKUP-LOCREF-CLOSE)) Step 7> step step 8 --> (SYSTEM::C-DEFUN 'MARKUP::DO-MARKUP-LOCREF-CLOSE) Step 8> step step 9 --> 'MARKUP::DO-MARKUP-LOCREF-CLOSE Step 9> step step 9 ==> value: MARKUP::DO-MARKUP-LOCREF-CLOSE step 8 ==> value: NIL step 7 ==> value: NIL step 7 --> (FUNCTION CALL-NEXT-METHOD (LAMBDA (SYSTEM:: &OPTIONAL SYSTEM::) (DECLARE #) (DECLARE #) ... ) ) Step 7> step step 7 ==> value: # &OPTIONAL SYSTEM::) (DECLARE (CONS SYSTEM::)) (DECLARE (IGNORE SYSTEM::)) (BLOCK CALL-NEXT-METHOD (LET* ((CLOS::NEW-ARG-EXPRS (CDR SYSTEM::))) (IF CLOS::NEW-ARG-EXPRS (LIST 'IF '#:G8759 (LIST* 'FUNCALL '#:G8759 CLOS::NEW-ARG-EXPRS) (LIST* 'CLOS::%NO-NEXT-METHOD '#:G8758 CLOS::NEW-ARG-EXPRS) ) (LIST 'IF '#:G8759 (LIST 'FUNCALL '#:G8759 '#:G8762 '#:G8761 '#:G8760) (LIST 'CLOS::%NO-NEXT-METHOD '#:G8758 '#:G8762 '#:G8761 '#:G8760) ) ) ) )> step 7 --> (FUNCTION NEXT-METHOD-P (LAMBDA (SYSTEM:: &OPTIONAL SYSTEM::) (DECLARE #) (DECLARE #) ... ) ) Step 7> step step 7 ==> value: # &OPTIONAL SYSTEM::) (DECLARE (CONS SYSTEM::)) (DECLARE (IGNORE SYSTEM::)) (BLOCK NEXT-METHOD-P (IF (> (LENGTH SYSTEM::) 1) (SYSTEM::MACRO-CALL-ERROR SYSTEM::) (LET* NIL '#:G8759) ) )> step 6 ==> value: #)) (MARKUP::LOCREFCLS LOCREF:LAYERED-LOCATION-CLASS) (MARKUP::DEPTH NUMBER) ) (DECLARE (IGNORE MARKUP::ATTR MARKUP::LOCREFCLS MARKUP::DEPTH)) (MARKUP::DO-MARKUP-STRING "def{") ) (DEFMETHOD MARKUP::DO-MARKUP-LOCREF-CLOSE ((MARKUP::ATTR (EQL #)) (MARKUP::LOCREFCLS LOCREF:LAYERED-LOCATION-CLASS) (MARKUP::DEPTH NUMBER) ) (DECLARE (IGNORE MARKUP::ATTR MARKUP::LOCREFCLS MARKUP::DEPTH)) (MARKUP::DO-MARKUP-STRING "}") ) )> step 6 --> (LOCALLY (DECLARE (COMPILE)) (SYSTEM::%HANDLER-BIND (#) (FUNCALL #:G8752))) Step 6> step step 7 --> (PROGN (LET NIL (VALUES-LIST '#) (CLOS::DO-DEFMETHOD 'MARKUP::DO-MARKUP-LOCREF-OPEN #) ) (LET NIL (VALUES-LIST '#) (CLOS::DO-DEFMETHOD 'MARKUP::DO-MARKUP-LOCREF-CLOSE #) ) ) Step 7> step step 8 --> (LET NIL (VALUES-LIST '(NIL)) (CLOS::DO-DEFMETHOD 'MARKUP::DO-MARKUP-LOCREF-OPEN (CLOS::MAKE-STANDARD-METHOD :INITFUNCTION #'# :WANTS-NEXT-METHOD-P ...) ) ) Step 8> step step 9 --> (VALUES-LIST '(NIL)) Step 9> step step 10 --> '(NIL) Step 10> step step 10 ==> value: (NIL) step 9 ==> value: NIL step 9 --> (CLOS::DO-DEFMETHOD 'MARKUP::DO-MARKUP-LOCREF-OPEN (CLOS::MAKE-STANDARD-METHOD :INITFUNCTION #'(LAMBDA # # #) :WANTS-NEXT-METHOD-P ... ) ) Step 9> step step 10 --> 'MARKUP::DO-MARKUP-LOCREF-OPEN Step 10> step step 10 ==> value: MARKUP::DO-MARKUP-LOCREF-OPEN step 10 --> (CLOS::MAKE-STANDARD-METHOD :INITFUNCTION #'(LAMBDA (#:G8753) (DECLARE #) (CONS #'# NIL)) :WANTS-NEXT-METHOD-P ... ) Step 10> step step 11 --> :INITFUNCTION Step 11> step step 11 ==> value: :INITFUNCTION step 11 --> #'(LAMBDA (#:G8753) (DECLARE (SYSTEM::SOURCE #)) (CONS #'(LAMBDA # # #) NIL)) Step 11> step step 11 ==> value: # step 11 --> :WANTS-NEXT-METHOD-P Step 11> step step 11 ==> value: :WANTS-NEXT-METHOD-P step 11 --> 'T Step 11> step step 11 ==> value: T step 11 --> :PARAMETER-SPECIALIZERS Step 11> step step 11 ==> value: :PARAMETER-SPECIALIZERS step 11 --> (LIST (LIST 'EQL #) (FIND-CLASS 'LOCREF:LAYERED-LOCATION-CLASS) (FIND-CLASS 'NUMBER) ) Step 11> step step 12 --> (LIST 'EQL #) Step 12> step step 13 --> 'EQL Step 13> step step 13 ==> value: EQL step 13 --> # Step 13> step *** - EVAL: illegal form # 1. Break> ---snap I absolutely can't tell, why this (LIST 'EQL #<..>) fails. The output of this session using the old clisp-96-05-30 seems to be the same. If I should supply more code, please tell me. CHANGES.LOG is quite on this topic, and looking at the diffs between old and new clos.lsp did not help me much. Cheers, --Roger -- ====================================================================== Roger Kehr kehr@iti.informatik.tu-darmstadt.de Computer Science Department Darmstadt University of Technology From haible@ilog.fr Mon Jan 12 07:53:58 1998 Received: from sceaux.ilog.fr (sceaux.ilog.fr [193.55.64.10]) by seagull.cdrom.com (8.8.8/8.6.6) with ESMTP id HAA06259 for ; Mon, 12 Jan 1998 07:53:36 -0800 (PST) Received: from ilog.ilog.fr ([172.17.2.22]) by sceaux.ilog.fr (8.8.8/8.8.7) with ESMTP id QAA17675 for ; Mon, 12 Jan 1998 16:53:45 +0100 (MET) Received: from halles.ilog.fr (halles.ilog.fr [172.16.1.96]) by ilog.ilog.fr (8.8.8/8.7.3) with ESMTP id QAA01240; Mon, 12 Jan 1998 16:53:17 +0100 (MET) From: Bruno Haible Received: (from haible@localhost) by halles.ilog.fr (8.8.5/8.8.5) id QAA15649; Mon, 12 Jan 1998 16:53:16 +0100 (MET) Date: Mon, 12 Jan 1998 16:53:16 +0100 (MET) Message-Id: <199801121553.QAA15649@halles.ilog.fr> To: clisp-list@clisp.cons.org Subject: Re: Serious problem with DEFMETHOD and macroexpansion In-Reply-To: <199801121414.PAA04609@spirit.iti.informatik.tu-darmstadt.de> References: <199801121414.PAA04609@spirit.iti.informatik.tu-darmstadt.de> Roger Kehr writes: > > I've implemented an index processor that heavily relies on CLOS for > the implementation of the markup backend. > > Markup is defined at runtime with the definition of CLOS-methods that > are generated on-the-fly via macro-expansion and that specialize on > already existing CLOS-objects with the help of EQL-specializers. ... > > I've used clisp-96-05-30 for a long time and it worked quite fine for > me. No I've upgraded to clisp-97-09-25 and the system breaks. clisp-1996-05-30 introduced self-evaluation for all non-list-or-symbol objects. In clisp-1997-09-25 we are back to the safer CLtL1 rule. > > (macroexpand-1 '(markup-locref :attr "def" :open "\def{" :close "}")) > (MARKUP::DEFINE-ENVIRONMENT-METHODS MARKUP::DO-MARKUP-LOCREF > ((MARKUP::ATTR (EQL #)) make this: (EQL '#)) The EQL specializer in DEFMETHOD expects a form. If you want to put in an arbitrary object, you need to quote it. > If I should supply more code, please tell me. The code and stepping samples you supplied were fine. Steps 11 and 12 put me on the track. Bruno From haible@ilog.fr Tue Jan 13 05:40:46 1998 Received: from sceaux.ilog.fr (sceaux.ilog.fr [193.55.64.10]) by seagull.cdrom.com (8.8.8/8.6.6) with ESMTP id FAA16521 for ; Tue, 13 Jan 1998 05:40:44 -0800 (PST) Received: from ilog.ilog.fr ([172.17.2.22]) by sceaux.ilog.fr (8.8.8/8.8.7) with ESMTP id OAA23031 for ; Tue, 13 Jan 1998 14:40:58 +0100 (MET) Received: from halles.ilog.fr (halles.ilog.fr [172.16.1.96]) by ilog.ilog.fr (8.8.8/8.7.3) with ESMTP id OAA22178; Tue, 13 Jan 1998 14:40:18 +0100 (MET) From: Bruno Haible Received: (from haible@localhost) by halles.ilog.fr (8.8.5/8.8.5) id OAA22381; Tue, 13 Jan 1998 14:40:16 +0100 (MET) Date: Tue, 13 Jan 1998 14:40:16 +0100 (MET) Message-Id: <199801131340.OAA22381@halles.ilog.fr> To: clisp-list@clisp.cons.org Subject: Fw: Lisp User Group Meeting 1998 in Munich, Germany [Message forwarded from Rainer Joswig .] Lisp User Group Meeting 1998 in Munich, Germany Tuesday, 10. February 1998 (Parallel to the OOP '98) (This information is also available at http://www.lisp.de/lugm/lugm98.html.) * Invitation Dear Lisp Friend! This year Lisp users will have again the opportunity to meet parallel to the OOP '98 in Munich. We are continueing the success of the Lisp User Group Meeting in 1997. It will be again a place for Lisp developers to share ideas and discuss interesting topics: additionally to the talks we will be able to meet people from all over Europe and the US. This is an exciting opportunity to talk with Lisp users, developers and companies. And best of all, it is free for everyone. There are no fees for the meeting. As a invited guest John C. Mallery from the MIT AI Lab in Cambridge/MA will give us an overview about Lisp programming for the world wide web. He is the principle author of CL-HTTP - the most advanced fully dynamic web server available. Please send your questions concerning the Lisp User Group Meeting to mailto:lugm98@lisp.de. If you need help for finding a hotel or similar questions, please contact this email address, too. * Agenda The agenda for the Lisp User Group Meeting 1998 in Munich, Germany. The event will take place at the 10. February 1998 . Tuesday, 10. February 1998 09:15 Welcome 09:30 Talk: Environments as first-class values, Ernst van Waning 10:00 Coffee Break 10:30 Invited Talk: CL-HTTP, John Mallery (MIT AI Lab) 12:30 Lunch 14:00 Talk: Has CLIM a future in web-based applications?, Dr. Ralf M=F6ller (Universit=E4t Hamburg), 14:30 Talk: Dr. Struve (Signal Versicherungen) 15:00 Coffee Break 15:30 Vendor News 16:00 Discussions/Ideas 17:00 End We also are planning a social event in a Munich restaurant in the evening on Tuesday. * Where does it take place? Queens Hotel Muenchen Effnerstrasse 99 81925 Muenchen Germany Phone: +49 89 927980 Fax: +49 89 983813 * Check in / Registration Please use the web form at http://www.lisp.de/lugm/lugm98.html to check in. Alternatively send email to mailto:lugm98@lisp.de . * Lisp User group Join the mailing list for European Lisp users. Use the administration interface at lug-request@lisp.de to be added. Addtionally we will keep you updated on the web site http://www.lisp.de/. Regards, Ingo Kriescher, Rainer Joswig and Achim Reupert Rainer Joswig, Lavielle EDV Systemberatung GmbH & Co, Lotharstrasse 2b, D22041 Hamburg, Tel: +49 40 658088, Fax: +49 40 65808-202, Email: joswig@lavielle.com , WWW: http://www.lavielle.com/~joswig/ Visit the Lisp User Group Meeting 98: http://www.lisp.de/lugm/lugm98.html From aler@inf.uc3m.es Wed Jan 14 12:52:38 1998 Received: from elrond.uc3m.es (elrond.uc3m.es [163.117.136.62]) by seagull.cdrom.com (8.8.8/8.6.6) with SMTP id MAA19403 for ; Wed, 14 Jan 1998 12:52:17 -0800 (PST) Received: from tristan.uc3m.es by elrond.uc3m.es (4.1/SM941027.01) id AA25255; Wed, 14 Jan 98 17:08:46 +0100 Date: Wed, 14 Jan 1998 17:07:08 +0100 (CET) From: Ricardo Aler Mur X-Sender: aler@tristan.uc3m.es Reply-To: aler@inf.uc3m.es To: clisp-list@clisp.cons.org Subject: debugging information Message-Id: Distribution: world Mime-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Hi all, Is there any way to increase the amount of information clisp gives when an error happens. By telling in which function the error happened, for instance. I know I could use the debugger to display the stack, but when I run clisp programs in the background that is not possible: it just displays the error message and quits. Regards, Ricardo. -------- mailto: "Ricardo Aler Mur" http://grial.uc3m.es/~aler From haible@ilog.fr Wed Jan 14 13:33:45 1998 Received: from sceaux.ilog.fr (sceaux.ilog.fr [193.55.64.10]) by seagull.cdrom.com (8.8.8/8.6.6) with ESMTP id NAA19636 for ; Wed, 14 Jan 1998 13:33:42 -0800 (PST) Received: from ilog.ilog.fr ([172.17.4.49]) by sceaux.ilog.fr (8.8.8/8.8.7) with ESMTP id WAA14389 for ; Wed, 14 Jan 1998 22:33:57 +0100 (MET) Received: from halles.ilog.fr (halles.ilog.fr [172.16.1.96]) by ilog.ilog.fr (8.8.8/8.7.3) with ESMTP id WAA15979; Wed, 14 Jan 1998 22:33:29 +0100 (MET) From: Bruno Haible Received: (from haible@localhost) by halles.ilog.fr (8.8.5/8.8.5) id WAA15016; Wed, 14 Jan 1998 22:33:31 +0100 (MET) Date: Wed, 14 Jan 1998 22:33:31 +0100 (MET) Message-Id: <199801142133.WAA15016@halles.ilog.fr> To: clisp-list@seagull.cons.org Subject: Re: debugging information In-Reply-To: References: Ricardo Aler Mur writes: > > when I run clisp programs in the background that is not possible: it > just displays the error message and quits. You can wrap your program into a `handler-bind' form, installing a hander for condition type `error'. This will shadow the default error handler, the one which calls `(exit t)'. > Is there any way to increase the amount of information clisp gives when an > error happens. By telling in which function the error happened, for > instance. I know I could use the debugger to display the stack But you cannot invoke debugger _commands_ from within a program. For a maximum amount of backtrace information, set *print-circle* to T and *print-escape* to T and the call the _function_ (show-stack). Bruno From haible@ilog.fr Mon Jan 26 08:27:26 1998 Received: from sceaux.ilog.fr (sceaux.ilog.fr [193.55.64.10]) by seagull.cdrom.com (8.8.8/8.6.6) with ESMTP id IAA09538 for ; Mon, 26 Jan 1998 08:27:02 -0800 (PST) Received: from ilog.ilog.fr ([172.17.4.49]) by sceaux.ilog.fr (8.8.8/8.8.7) with ESMTP id RAA23059 for ; Mon, 26 Jan 1998 17:27:22 +0100 (MET) Received: from halles.ilog.fr (halles.ilog.fr [172.16.1.96]) by ilog.ilog.fr (8.8.8/8.7.3) with ESMTP id RAA03922; Mon, 26 Jan 1998 17:26:54 +0100 (MET) From: Bruno Haible Received: (from haible@localhost) by halles.ilog.fr (8.8.5/8.8.5) id RAA27895; Mon, 26 Jan 1998 17:26:52 +0100 (MET) Date: Mon, 26 Jan 1998 17:26:52 +0100 (MET) Message-Id: <199801261626.RAA27895@halles.ilog.fr> To: clisp-list@clisp.cons.org Subject: ILISP installation instructions for CLISP users [Message forwarded from .] =============================================== ILISP installation instructions for CLISP users =============================================== This is an attempt to explain for CLISP users how to install ILISP under Emacs/XEmacs for CLISP. .--------------------------------------. | Recommended ILISP and Emacs versions | `--------------------------------------' I recommend to use one of the following ILISP and Emacs verions: * ILISP version >= 5.8 alpha * XEmacs version >= 19.14 * GNU Emacs version >= 19.34.2 NOTE: if you have the choice between XEmacs and GNU Emacs, you should preferably use XEmacs, which is much more comfortable and fun to use! .--------------------------. | Where to get ILISP from? | `--------------------------' You can use the World Wide Web (WWW) to get the distribution file from the anonymous FTP locations using one of the following URLs: ftp://ftp.cs.cmu.edu/afs/cs/user/campbell/http/ilisp/ilisp-5.8.tar.gz ftp://ftp.icsi.berkeley.edu/pub/software/elisp/ilisp-5.8.tar.gz ftp://ftp.icsi.berkeley.edu/pub/theory/marcoxa/ilisp-5.8.tar.gz Note: The ILISP mailing list address is 'ilisp@naggum.no'! .------------------. | Installing ILISP | `------------------' Copy the ilisp-5.8.tar.gz archive to the destination place where you would like to install it. I suggest /usr/local/lib to be a perfectly good place to keep ILISP. Then do the following step for step: - Extract the ilisp-5.8.tar.gz archive. - Change into the now available /usr/local/lib/ilisp-5.8 directory and setup the Makefile to use your Emacs executable. For example: EMACS = /usr/local/bin/emacs - Run "make" or "make compile", this initiates that your Emacs byte-compiles the ILISP distribution elisp files and hopefully leaves you with a bunch of new generated *.elc files. - Now it is a good idea to do a "make loadfile". This step cats all *.elc files together into a "ilisp-all.elc" file and afterwards removes the *.elc files and leaves you with one "ilisp-all.elc" file. The reason for building this loadfile is, that your Emacs can load one single "ilisp-all.elc" file much faster during startup than a bulk of *.elc files. - Copy the ILISP *.info online help files to your main Emacs info diretory and setup an entry in the .../info/dir file, so that you can later access the ILISP online help via the Emacs editor. Now you have to configure your personal .emacs file in your home directory for ILISP and CLISP. The following shows a generic one, which you might want to take as a template and customize it to your needs: ----------------.emacs ILISP template for CLISP -------------------- ;;;; ILISP SetUp ;;;; ;;; If ilisp lives in some non-standard directory, you must tell emacs ;;; where to get it. ***You may need to customize this***! (setq load-path (cons (expand-file-name "/usr/local/lib/ilisp-5.8/") load-path)) ;;; If you always want partial minibuffer completion. (require 'completer) ;;; Autoload CLISP with full path and the important -I option. ;;; ***You may need to customize this***! (autoload 'clisp "ilisp" "Inferior generic Common LISP." t) (setq clisp-program "/usr/local/bin/clisp -I") ;;; This makes reading a lisp file load in ilisp. (set-default 'auto-mode-alist (append '(("\\.lisp$" . lisp-mode)) auto-mode-alist)) (setq lisp-mode-hook '(lambda () (require 'ilisp))) ;;; Sample load hook for ILISP. (add-hook 'ilisp-load-hook (function (lambda () ;; Change default key prefix to C-c if you like (I use C-z). ;(setq ilisp-prefix "\C-c") ;; Make sure that you don't keep popping up the 'inferior ;; lisp' buffer window when this is already visible in ;; another frame. Actually this variable has more impact ;; than that. Watch out. ;(setq pop-up-frames t) (message "Running ilisp-load-hook") ;; If you want to define LispMachine-like key bindings, too. ;(ilisp-lispm-bindings) Sample initialization hook. ;; Set the inferior LISP directory to the directory of ;; the buffer that spawned it on the first prompt. (add-hook 'ilisp-init-hook (function (lambda () (default-directory-lisp ilisp-last-buffer)))) ))) ;;;; end of ILISP setup ;;;; ---------------- End of ILISP template for CLISP -------------------- After setting up your .emacs file, it's time to test the whole installation. Fire up your XEmacs or Emacs, when it's ready for user inputs type "M-x clisp". Hopefully ILISP should startup with an *clisp* buffer, where you can directly interact with CLISP. If you now load a *.lisp file into Emacs you should have full access to the ILISP interface. Try to access the ILISP online help and read the documentation carefully, that's the best way to learn how to use ILISP with all it's build in features! .-------------------------------------------. | Autoload different CLISP images via ILISP | `-------------------------------------------' You can force ILISP to autoload different CLISP images, depending on the startup names you select. Suppose that you have build another CLISP image with CLX support, which is callable by the following little shell-script named "clx": #!/bin/sh clisp -m 4MB -M /usr/local/lib/lisp/clx.mem "$@" You can setup in your .emacs file that ILISP -on demand- autoloads this "clx" version instead of your standard one. All you have to do is to add another autoload section in your .emacs file. Here is a shortened example: ... ... ;;; Load the standard CLISP version via "M-x clisp" (autoload 'clisp "ilisp" "Inferior generic Common LISP." t) (setq clisp-program "/usr/local/bin/clisp -I") ;;; Load the clx CLISP version via "M-x clx" (autoload 'clx "ilisp" "Inferior generic Common LISP." t) (setq clx-program "/usr/local/bin/clx -I") ... ... If you now startup your Emacs, you can select via "M-x clisp" or "M-x clx" which CLISP image ILISP should autoload and use for your programming session. .-----------------------------------. | Is there an ILISP reference card? | `-----------------------------------' Last year when I discovered ILISP, I wished to have a sort of reference card for it, similar to those available for Emacs. Since there wasn't any available, I decided to build one. I used Kevin Thompsons "Franz Allegro CL/Emacs refcard" as a template to build a quick and dirty ILISP reference card. I've send a copy to Bruno Haible, maybe Bruno will make it accessible on the CLISP ftp server. I will also send one to Marco Antoniotti (Marco is one of the ILISP maintainers), maybe Marco wants to rework it and eventually add it to the ILISP distribution. .----------------------------------------. | CLMAN and other CL online help systems | `----------------------------------------' ILISP has build in support for the Franz online Common LISP manual if it is available at your side. Since I personally have this available, I installed it, so it works fine together with ILISP. You can get CLMAN also from the Franz Inc. ftp server "ftp://ftp.franz.com". However, CLMAN is somehow outdated and obsoleted.- You might better keep a local copy of CLtL2 or even more preferably Harlequin HyperSpec at your side. - For CLtL2 there's the online version at: http://www.cs.cmu.edu/afs/cs.cmu.edu/project/ai-repository/ai/html/cltl/cltl2.html and one can use browse-cltl2.el included with XEmacs 19.15 or available from "http://www.uni-koblenz.de/~schauer/uniemacs.html" which provides a comparable interface to on- and off-line CLtL2. - For HyperSpec you should take a look at: "http://www-digital.cern.ch/carney/emacs/emacs.html" where you can find hyperspec.el which provides an easy access to the HyperSpec (both the "normal" online version at Harlequin and to an off-line version saved some where on your disk). Another version of hyperspec.el, which has completion on Lisp symbols and a history of lookups, can be found on: "http://www.naggum.no/emacs/hyperspec.el". .-----------------------------. | Common ILISP/CLISP problems | `-----------------------------' The following lists some unusual ILISP behaviour related to CLISP. Some of these are of general interest, and should hopefully be fixed in an upcomming ILISP distribution. Most of these points were reported by Bruno Haible. - On startup, ILISP presents a Lisp prompt and shortly afterwards another Lisp prompt. This is somehow confusing. - While prompted, a user can backspace over the prompt, or can move the cursor down to inexistent lines, thus making the buffer look bad. - The history mode is unfortunately circular, which means that after M-p M-n you don't get back your original empty line. Also, a two- character input like "()" doesn't appear in the history. - CLISP does not know that once it received a form for evaluation the cursor is in column 0. Therefore (format t "~&") will output a blank line. This results in too many blank lines. - The default completion character for clisp (Tab) does not work. Instead there are two different completion characters, with two other keybindings. - The Lisp code invisibly loaded into clisp is interpreted. Since it is not user-visible, it could as well be compiled, for speed. - In a CLISP debugger loop typing "abort" often throws you into the next deeper debugging level, instead of leaving the actual one. So you often have to retype "abort" x-times to get it work. - When the ILISP/CLISP interaction hangs (blocks), you have to type "C-g" to abort your last command, in order get the minibuffer work again. After this you have to do a "M-x panic-lisp" to reassign the ILISP/CLISP interaction. --- +----------------------------------------------------------------+ | Valentino Kyriakides Universitaet Hamburg, FB. Informatik | | Arbeitsbereich Softwaretechnik | +----------------------------------------------------------------+ | E-Mail: 1kyriaki@informatik.uni-hamburg.de (ASCII, MIME) | | NeXTmail: Valentino_Kyriakides@public.uni-hamburg.de | +----------------------------------------------------------------+ From bernardp@CLI.DI.Unipi.IT Mon Jan 26 08:38:49 1998 Received: from mailserver.cli.di.unipi.it (alice.cli.di.unipi.it [131.114.11.37]) by seagull.cdrom.com (8.8.8/8.6.6) with ESMTP id IAA09686 for ; Mon, 26 Jan 1998 08:38:48 -0800 (PST) Organization: Centro di Calcolo - Dipartimento di Informatica di Pisa - Italy Received: from helen.cli.di.unipi.it (helen.cli.di.unipi.it [131.114.11.38]) by mailserver.cli.di.unipi.it (8.7.5/8.7.3) with ESMTP id RAA19723; Mon, 26 Jan 1998 17:38:01 +0100 (MET) From: Pierpaolo Bernardi Received: (bernardp@localhost) by helen.cli.di.unipi.it (8.7.5/8.6.12) id RAA18874; Mon, 26 Jan 1998 17:37:58 +0100 (MET) Message-Id: <199801261637.RAA18874@helen.cli.di.unipi.it> Subject: Re: ILISP installation instructions for CLISP users To: clisp-list@seagull.cons.org Date: Mon, 26 Jan 1998 17:37:58 +0100 (MET) In-Reply-To: <199801261626.RAA27895@halles.ilog.fr> from "Bruno Haible" at Jan 26, 98 08:31:00 am X-Mailer: ELM [version 2.4 PL24] MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit > [Message forwarded from .] > .--------------------------------------. > | Recommended ILISP and Emacs versions | > `--------------------------------------' ... > NOTE: if you have the choice between XEmacs and GNU Emacs, you should > preferably use XEmacs, which is much more comfortable and fun > to use! This is highly debatable. Thanks anyway for the rest of your post. Pierpaolo. From toy@rtp.ericsson.se Mon Jan 26 09:01:52 1998 Received: from gwa.ericsson.com (gwa.ericsson.com [198.215.127.2]) by seagull.cdrom.com (8.8.8/8.6.6) with ESMTP id JAA09972 for ; Mon, 26 Jan 1998 09:01:18 -0800 (PST) Received: from mr3.exu.ericsson.se ([138.85.11.55]) by gwa.ericsson.com (8.8.8/8.8.8) with ESMTP id LAA29132; Mon, 26 Jan 1998 11:00:23 -0600 (CST) Received: from screamer.rtp.ericsson.se (screamer.rtp.ericsson.se [147.117.133.13]) by mr3.exu.ericsson.se (8.8.8/8.8.8) with SMTP id KAA13946; Mon, 26 Jan 1998 10:58:59 -0600 (CST) Received: from rcur (rcur18.rtp.ericsson.se [147.117.133.138]) by screamer.rtp.ericsson.se (8.6.12/8.6.4) with ESMTP id LAA22487; Mon, 26 Jan 1998 11:58:59 -0500 To: clisp-list@seagull.cons.org cc: Multiple recipients of list References: <199801261626.RAA27895@halles.ilog.fr> Subject: Re: ILISP installation instructions for CLISP users In-reply-to: (Your message of Mon, 26 Jan 1998 08:28:10 PST.) <199801261626.RAA27895@halles.ilog.fr> Mime-Version: 1.0 (generated by tm-edit 7.108) Content-Type: text/plain; charset=US-ASCII Date: Mon, 26 Jan 1998 11:58:58 -0500 Message-ID: <23444.885833938@rtp.ericsson.se> From: Raymond Toy >>>>> "Bruno" == Bruno Haible writes: Bruno> - On startup, ILISP presents a Lisp prompt and shortly afterwards Bruno> another Lisp prompt. This is somehow confusing. Known problem. No apparent solution. Bruno> - While prompted, a user can backspace over the prompt, or can move Bruno> the cursor down to inexistent lines, thus making the buffer look Bruno> bad. You have your comint-prompt-regexp set incorrectly. See below. Bruno> - The Lisp code invisibly loaded into clisp is interpreted. Since it Bruno> is not user-visible, it could as well be compiled, for speed. Run M-x ilisp-compile-inits to get these compiled and loaded. You only need to do this the first time. Here is what I use to get ilisp understand some of the prompts from CLISP: (defun ilisp-load-hook-for-clisp () ;; ;; ;; ---- CLISP ------------------------------------------------------- ;; ;; The version in ilisp is not really right. Clisp prints breaks ;; like "n. Break> ", where n is the level. (defun clisp-hs-check-prompt (old new) "Compare the break level printed at the beginning of the prompt." (let* ((break-pattern "\\([0-9]+\\)\\. Break> ") (was-in-break (and old (string-match break-pattern old))) (old-level (if was-in-break (string-to-int (match-string 1 old)) 0)) (is-in-break (string-match break-pattern new)) (new-level (if is-in-break (string-to-int (match-string 1 new)) 0))) (<= new-level old-level))) ;; The setup for clisp-hs in ilisp isn't really right. Make it so ;; here when we load the dialect. (add-hook 'clisp-hs-hook (function (lambda () (setq ilisp-load-or-send-command "(and (or (print \"%s\") t) (load \"%s\"))" ilisp-binary-extension "fas" ilisp-block-command "(progn %s)" ilisp-save-command "(progn (ILISP:ilisp-save) %s)" comint-prompt-regexp "\\(^[0-9]*\\.[ \t]*Break[^>]*> \\)\\|^[^-> ]*> " ilisp-error-regexp "ILISP:[^\"]*\\|\\(^\\*\\*\\* \\- \\)" comint-interrupt-regexp "^\\*\\*\\* \\- .*: User Break" ilisp-reset "(sys::debug-unwind)" comint-fix-error "(sys::debug-unwind)" comint-continue "(sys::debug-continue)" comint-prompt-status (function (lambda (old line) (comint-prompt-status old line 'clisp-hs-check-prompt))))))) ) (add-hook 'ilisp-load-hook #'ilisp-load-hook-for-clisp) Ray From aler@inf.uc3m.es Wed Jan 28 04:12:18 1998 Received: from elrond.uc3m.es (elrond.uc3m.es [163.117.136.62]) by seagull.cdrom.com (8.8.8/8.6.6) with SMTP id EAA17982 for ; Wed, 28 Jan 1998 04:12:17 -0800 (PST) Received: from tristan.uc3m.es by elrond.uc3m.es (4.1/SM941027.01) id AA12287; Wed, 28 Jan 98 13:12:55 +0100 Date: Wed, 28 Jan 1998 13:11:20 +0100 (CET) From: Ricardo Aler Mur X-Sender: aler@tristan.uc3m.es Reply-To: aler@inf.uc3m.es To: clisp-list@seagull.cons.org Subject: without-floating-point-overflow Message-Id: Distribution: world Mime-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Hi all, Is there any without-floating-point-overflow macro similar to the without-floating-point-underflow one?. I've looked through the impnotes and found nothing. In case there isn't, is there a quick way to implement it?. Thanks, Ricardo. -------- mailto: "Ricardo Aler Mur" http://grial.uc3m.es/~aler From haible@ilog.fr Wed Jan 28 05:13:49 1998 Received: from sceaux.ilog.fr (sceaux.ilog.fr [193.55.64.10]) by seagull.cdrom.com (8.8.8/8.6.6) with ESMTP id FAA18235 for ; Wed, 28 Jan 1998 05:13:47 -0800 (PST) Received: from ilog.ilog.fr ([172.17.4.49]) by sceaux.ilog.fr (8.8.8/8.8.7) with ESMTP id OAA01341 for ; Wed, 28 Jan 1998 14:13:48 +0100 (MET) Received: from halles.ilog.fr (halles.ilog.fr [172.16.1.96]) by ilog.ilog.fr (8.8.8/8.7.3) with ESMTP id OAA02262; Wed, 28 Jan 1998 14:13:12 +0100 (MET) From: Bruno Haible Received: (from haible@localhost) by halles.ilog.fr (8.8.5/8.8.5) id OAA07617; Wed, 28 Jan 1998 14:13:09 +0100 (MET) Date: Wed, 28 Jan 1998 14:13:09 +0100 (MET) Message-Id: <199801281313.OAA07617@halles.ilog.fr> To: clisp-list@seagull.cons.org Subject: Re: without-floating-point-overflow In-Reply-To: References: Ricardo Aler Mur asks: > Is there any without-floating-point-overflow macro similar to the > without-floating-point-underflow one?. No. In order to ignore overflow, the implementation would have to return Inf or NaN. These IEEE inventions are outside of the scope of Common Lisp (and of dubious utility), therefore not implemented in CLISP. You can simply _avoid_ the overflow by computing with long-floats instead of single/double-floats. CLISP's long-floats have a 32 bit exponent; this should be really enough for most applications. Bruno From vkyr@lavielle.com Wed Jan 28 05:26:26 1998 Received: from wildfire. (wildfire.lavielle.com [194.64.21.43]) by seagull.cdrom.com (8.8.8/8.6.6) with SMTP id FAA18400 for ; Wed, 28 Jan 1998 05:26:25 -0800 (PST) Received: from wildfire by wildfire. (SMI-8.6/SMI-SVR4) id OAA13945; Wed, 28 Jan 1998 14:26:49 +0100 Sender: vkyr@lavielle.com Message-ID: <34CF3218.56A5@lavielle.com> Date: Wed, 28 Jan 1998 14:26:48 +0100 From: Valentino Kyriakides Organization: Lavielle X-Mailer: Mozilla 2.01 (X11; I; SunOS 5.4 sun4c) MIME-Version: 1.0 To: clisp-list@seagull.cons.org Subject: Re: ILISP installation instructions for CLISP users References: <23444.885833938@rtp.ericsson.se> Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Raymond Toy wrote: > > ... > > Bruno> - While prompted, a user can backspace over the prompt, or can move > Bruno> the cursor down to inexistent lines, thus making the buffer look > Bruno> bad. > > You have your comint-prompt-regexp set incorrectly. > ... > ... I tried out Raymond's ilisp-load-hook-for-clisp, but I'am sorry to say that I still can backspace over the prompt, or move the cursor down to inexistent lines! However, with Raymond's lisp-load-hook-for-clisp the "abort" problem in break levels can be nicely fixed and some other things behave now better! I think we (the CLISP users) should all together try to fix ILISP, so that it's CLISP support would be as expected. Are there any elisp Gurus around which use ILISP/CLISP??? > ----- THE FOLLOWING IS FROM Raymond Toy ---- > > Here is what I use to get ilisp understand some of the prompts from > CLISP: > > (defun ilisp-load-hook-for-clisp () > ;; > ;; > ;; ---- CLISP ------------------------------------------------------- > ;; > ;; The version in ilisp is not really right. Clisp prints breaks > ;; like "n. Break> ", where n is the level. > > (defun clisp-hs-check-prompt (old new) > "Compare the break level printed at the beginning of the prompt." > (let* ((break-pattern "\\([0-9]+\\)\\. Break> ") > (was-in-break (and old (string-match break-pattern old))) > (old-level (if was-in-break > (string-to-int (match-string 1 old)) > 0)) > (is-in-break (string-match break-pattern new)) > (new-level (if is-in-break > (string-to-int (match-string 1 new)) > 0))) > (<= new-level old-level))) > > ;; The setup for clisp-hs in ilisp isn't really right. Make it so > ;; here when we load the dialect. > (add-hook > 'clisp-hs-hook > (function > (lambda () > (setq > ilisp-load-or-send-command > "(and (or (print \"%s\") t) (load \"%s\"))" > ilisp-binary-extension "fas" > ilisp-block-command "(progn %s)" > ilisp-save-command "(progn (ILISP:ilisp-save) %s)" > comint-prompt-regexp "\\(^[0-9]*\\.[ \t]*Break[^>]*> \\)\\|^[^-> ]*> " > ilisp-error-regexp "ILISP:[^\"]*\\|\\(^\\*\\*\\* \\- \\)" > comint-interrupt-regexp "^\\*\\*\\* \\- .*: User Break" > ilisp-reset "(sys::debug-unwind)" > comint-fix-error "(sys::debug-unwind)" > comint-continue "(sys::debug-continue)" > comint-prompt-status > (function (lambda (old line) > (comint-prompt-status old line 'clisp-hs-check-prompt))))))) > ) > > (add-hook 'ilisp-load-hook #'ilisp-load-hook-for-clisp) > -- Valentino Kyriakides Lavielle EDV Systemberatung GmbH & Co. Tel.: +49(0)40 / 65 80 8 - 997 Lotharstrasse 2b, D-22041 Hamburg, Germany Fax.: +49(0)40 / 65 808-202 http://www.lavielle.com/ mailto: vkyr@lavielle.com From sds@usa.net Wed Jan 28 08:31:42 1998 Received: from uhura.concentric.net (uhura.concentric.net [206.173.119.93]) by seagull.cdrom.com (8.8.8/8.6.6) with ESMTP id IAA18947 for ; Wed, 28 Jan 1998 08:31:40 -0800 (PST) Received: from cliff.concentric.net (cliff [206.173.119.90]) by uhura.concentric.net (8.8.8/(98/01/20 5.9)) id LAA22062; Wed, 28 Jan 1998 11:32:04 -0500 (EST) [1-800-745-2747 The Concentric Network] Errors-To: Received: from mute.eaglets.com (ts004d40.phe-pa.concentric.net [209.31.154.196]) by cliff.concentric.net (8.8.8) id LAA20848; Wed, 28 Jan 1998 11:32:02 -0500 (EST) Received: (from sds@localhost) by mute.eaglets.com (8.8.7/8.8.7) id LAA18348; Wed, 28 Jan 1998 11:15:56 -0500 To: clisp-list@seagull.cons.org Subject: Re: ILISP installation instructions for CLISP users References: <34CF3218.56A5@lavielle.com> Return-Receipt-To: sds@usa.net X-Disclaimer: You should not expect anyone to agree with me. X-Attribution: Sam X-No-Archive: Yes From: Sam Steingold In-Reply-To: Valentino Kyriakides's message of Wed, 28 Jan 1998 05:26:51 -0800 (PST) Date: 28 Jan 1998 11:15:56 -0500 Message-ID: Lines: 17 X-Mailer: Gnus v5.5/Emacs 20.2 1. do *NOT* concat all *.elc files - this breaks emacs doc strings. 2. frankly, I don't see much use in ilisp - other than seeing several CL windows at once (and I did RTFM!) - I cannot eval the last sexp. I have to do C-M-b C-z n. - The result is displayed in a separate window, not in the main one, so it is largely unusable. - C-z i requires that the object is quoted!! (otherwise it is eval'ed) 3. I have to type Abort, Where, Up etc by hand! IMHO, the standard emacs inferior lisp mode does the job quite adequately. OTOH, if someone can explain to me how ilisp is better, I am eager to learn. :-) -- Sam Steingold From kehr@iti.informatik.tu-darmstadt.de Thu Jan 29 02:52:27 1998 Received: from spirit.iti.informatik.tu-darmstadt.de (spirit.iti.informatik.tu-darmstadt.de [130.83.5.38]) by seagull.cdrom.com (8.8.8/8.6.6) with ESMTP id CAA22012 for ; Thu, 29 Jan 1998 02:52:26 -0800 (PST) Received: (from kehr@localhost) by spirit.iti.informatik.tu-darmstadt.de (8.8.5/8.8.5) id LAA08994; Thu, 29 Jan 1998 11:52:33 +0100 (MET) Date: Thu, 29 Jan 1998 11:52:33 +0100 (MET) Message-Id: <199801291052.LAA08994@spirit.iti.informatik.tu-darmstadt.de> From: Roger Kehr MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit To: clisp-mailing-list CC: Joachim Schrod Subject: Problems using CLISP as CGI application X-Mailer: VM 6.32 under 19.15p5 XEmacs Lucid Hello out there, I've just tried to run a CLISP application as part of a larger web application. The problem seems to be that CLISP doesn't even start the code it is told to. I was able to reproduce this problem on two different sites: - Netscape Web server with CLISP 1997-09-25 running on AIX 4.1 - Apache 1.2.5 Web server with CLISP 1997-09-25 running on Solaris 2.5.1 The problem could be reproduced in a simple way. I take a CGI shell script ---snip #!/bin/sh echo "Content-type: text/html" echo date ./lisp.run -M ./lispinit.mem test.lsp --snap with test.lsp being simply --snip (print "This is a CLISP test...") --snap When run from the command line the script prints something like --- Content-type: text/html Thu Jan 29 11:46:09 MET 1998 "This is a CLISP test..." --- which is fine. When run the CGI from a browser via the web server(s) the resulting page is -- Thu Jan 29 11:40:53 MET 1998 Bye. -- The `Bye.' message looks as CLISP were in an interactive mode, which it obviously shouldn't be. Hence the Lisp-file doesn't seem to be started at all. I have also tried to run start CLISP with the -I switch, which doesn't help. Any hints are welcome... Cheers, --Roger -- ====================================================================== Roger Kehr kehr@iti.informatik.tu-darmstadt.de Computer Science Department Darmstadt University of Technology From bernardp@CLI.DI.Unipi.IT Thu Jan 29 02:58:25 1998 Received: from mailserver.cli.di.unipi.it (alice.cli.di.unipi.it [131.114.11.37]) by seagull.cdrom.com (8.8.8/8.6.6) with ESMTP id CAA22128 for ; Thu, 29 Jan 1998 02:58:23 -0800 (PST) Organization: Centro di Calcolo - Dipartimento di Informatica di Pisa - Italy Received: from helen.cli.di.unipi.it (helen.cli.di.unipi.it [131.114.11.38]) by mailserver.cli.di.unipi.it (8.7.5/8.7.3) with ESMTP id LAA17366; Thu, 29 Jan 1998 11:57:44 +0100 (MET) From: Pierpaolo Bernardi Received: (bernardp@localhost) by helen.cli.di.unipi.it (8.7.5/8.6.12) id LAA02270; Thu, 29 Jan 1998 11:57:42 +0100 (MET) Message-Id: <199801291057.LAA02270@helen.cli.di.unipi.it> Subject: Re: ILISP installation instructions for CLISP users To: clisp-list@seagull.cons.org Date: Thu, 29 Jan 1998 11:57:41 +0100 (MET) In-Reply-To: from "Sam Steingold" at Jan 28, 98 08:33:13 am X-Mailer: ELM [version 2.4 PL24] MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit > 2. frankly, I don't see much use in ilisp - other than seeing several CL > windows at once (and I did RTFM!) You R the wrong FM! 8-) You may have several CL windows at once with the standard inferior lisp mode. M-x run-lisp M-x rename-buffer foo M-x run-lisp Now you have two lisp sessions. > OTOH, if someone can explain to me how ilisp is better, I am > eager to learn. :-) Ilisp has a lot of useful features. Unfortunately it is a bit flakey. Pierpaolo > > > -- > Sam Steingold >