This is the mail archive of the guile@cygnus.com mailing list for the guile project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: Guile project submissions draft


thi <ttn@mingle.glug.org> writes:

> why invent a blecherous new config language when you can just come up w/
> a blecherous new API?  then people can write code to edit their entries,
> and you just need to review the code (for security or whatever) before
> evaling.
> 
> as a user, i would like to send you stuff like:
> 
> (define-project thud "ttn" "***PASSWD***")
> (with-project thud
>   (for-each (lambda (ent)
> 	      (set-project-property! (car ent) (cdr ent)))
> 	    '((%version . "0.1")
> 	      (%location . "http://somewhere/someplace")
> 	      (%status . "still-on-the-tree"))))
> 
> to start, and then updates along the lines of:
> 
> (with-project thud
>   (set-project-property! '%version
> 			 (version-increment (get-project-property %version)))
>   (set-project-property! '%news
> 			 (string-append
> 			  "1999/03/10 06:01:01 now runs on ethanol\n"
> 			  (get-project-property %news))))
> 
> this is more schemely as well.  basically, i think the suggested
> properties are fine, as is the general notion of regularity in format.
> however, restricting editing expressiveness to the putative subset is
> irksome.

Umm... does anyone really want to have to debug their project entries?
It basically isn't a language at all, but just a very simple way of
submitting info for a database... a project is nothing more than a
record with a bunch of keys. I'll be the first to shout the joys of
the lisp-like language, but I don't think I'd want to write everything
in scheme.

(let (sentence
	(list->string '(It #\space would #\space become #\space annoying
			#\space very #\space quickly #\.)))
	(display sentence))

Even worse, though, anyone could submit this project:

(define-project die "Cracker D00D")
(with-project die
	(letrec ((killer (lambda () 
		(make-thread (lambda () (make-list 1000) (killer))))))
	(killer)))

Boom (at least in theory, I'm not feeling like actually testing this ;)

-- 
Greg