From ... From: Erik Naggum Subject: Re: Returning Functions Date: 1997/10/10 Message-ID: <3085485174678128@naggum.no>#1/1 X-Deja-AN: 279224087 References: <60vm5a$nnm$1@news.ycc.yale.edu><343370AA.C808805D@uclink4.berkeley.edu> <3084810271646576@naggum.no><6110kd$equ$1@mycroft.westnet.com> <3084857622657258@naggum.no><3434CA83.665C890@netscape.com> <01bcd234$125a6e60$0f01a8c0@bperryman> <3085131464469160@naggum.no> <61la95$qus@omega.gmd.de> mail-copies-to: never Organization: Naggum Software; +47 8800 8879; http://www.naggum.no Newsgroups: comp.lang.lisp * Joerg Hoehle | Emphasize this is only valid in ANSI CL which defines lambda as a | macro, but not in CLtL1 or CLtL2 Lisps. That might explain the | difference between Allegro and CLISP (a compile-only | vs. interpreter+compiler present inplementation might do as well). Allegro comes in to flavors: Windows and Unix (also available for NT). Allegro for Windows is an ancient Lisp, mostly CLtL1 with CLOS and a Windows-specific interface builder, and is compile-only as you say. Allegro for Unix is a modern Lisp, almost completely ANSI-conformant, and has both an interpreter and a compiler. they differ greatly in what they implement, in particular: one should not impute Windows limitations to Unix. to wit, I'm greatly impressed with the Unix version, and equally unimpressed with the Windows version. | The correct way of course was | (defvar *df* `(,#'(lambda () (do1)) ,#'(lambda (a) (do2 a)))) | without any coercion (you don't need to compile at run-time here). hm. I'd suggest optimizing for less syntactic hair: (defvar *df* (list (lambda () (do1)) (lambda (a) (do2 a)))) of course, with (optimize (hair 3)), we could always write (defvar *df '(#.#'(lambda () (do1)) #.#'(lambda (a) (do2 a)))) and force people to understand how this all works, but ... maybe not. #\Erik -- if you think this year is "97", _you_ are not "year 2000 compliant". see http://www.naggum.no/emacs/ for Emacs-20-related material.