From: "William M. Perry" <wmperry@aventail.com>
Cc: ding@ifi.uio.no
Subject: Re: idea.. check and grab new versions..?
Date: Wed, 22 Jan 1997 08:00:36 -0800 [thread overview]
Message-ID: <199701221600.IAA17126@newman> (raw)
In-Reply-To: <ML-2.3.853871702.3978.stew@fermi>
Shannon F. Stewman writes:
>> But that's the easy part...the slightly harder part is getting it
>> extracted and built (e.g. using scripts as posted by Jan Vroonhof).
>> And, from what I know, there even harder part is getting it done online
>> so that you can hit an "update gnus" button in a message online
>> (e.g. Lars' announcements) that will fire it all of, then "exit" your
>> current gnus version and fire up the new gnus version while you wait
>> (with bonus points for getting you back in where you left off - reading
>> the announcement message :-)).
>
>While I'm aware that this might hit a raw nerve on some people, and might
>be considered an extreme folly, why not build some kind of scripting
>language into Gnus that would allow something to this effect? Such a
>language (called ness) has been used at CMU for some time, and without any
>serious (that I know of) harm coming to the script runners.
>
>While elisp does seem a good choice, I doubt it would pass the safety
>inspection of the skeptics. Perhaps a small scheme interpreter or
>otherwise, or am I just looking at some pie in the sky dream?
This should really be in the raw lisp interpreter. It should be able to
have a 'safe' mode, similar to the Safe module in Perl, or the restricted
VM in java, etc.
You take too much of a performance penalty when trying to implement
something like this in lisp. Ask me, I tried. :)
I've done something similar for the DSSSL parser I have for Emacs-W3.
Basically, parsing is a snap, but then when you get down to the nitty
gritty of evaluation, things bog down. I keep the variables and function
defs in a big hashtable thats passed around in the interpreter. Code
basically looks like:
(defun dsssl-eval (form)
;; We expect to have a 'defines' and 'units' hashtable floating around
;; from higher up the call stack.
(declare (special defines units))
(cond
((consp form) ; A function call
(let ((func (car form))
(args (cdr form)))
(case func
(cons
(dsssl-check-args args 2)
(cons (dsssl-eval (pop args)) (dsssl-eval (pop args))))
(cdr
.
.
.
Which goes on for about 300 lines. And its not even half finished, for a
limited implementation of a scheme-like language. Function calls and let
bindings are a bitch. But I think I'll be able to do lexical scoping and
closures. Ohhhhhh yeah.
-Bill P.
next prev parent reply other threads:[~1997-01-22 16:00 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
1997-01-21 11:16 Andy Eskilsson
1997-01-21 11:56 ` Lars Balker Rasmussen
1997-01-21 15:21 ` Mark Boyns
1997-01-21 16:02 ` Jan Vroonhof
1997-01-21 18:12 ` Manoj Srivastava
1997-01-22 9:43 ` wget, was [Re: idea.. check and grab new versions..?] Jan Vroonhof
1997-01-21 17:50 ` idea.. check and grab new versions..? Scott Blachowicz
1997-01-21 18:35 ` Shannon F. Stewman
1997-01-22 0:39 ` Justin Sheehy
1997-01-21 21:06 ` Shannon F. Stewman
1997-01-22 16:00 ` William M. Perry [this message]
1997-01-21 20:34 ` Andrew J Cosgriff
1997-01-21 22:57 ` Lars Magne Ingebrigtsen
1997-01-22 3:46 ` Danny Siu
1997-01-21 15:57 ` visigoth
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=199701221600.IAA17126@newman \
--to=wmperry@aventail.com \
--cc=ding@ifi.uio.no \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).