From: Christian Neukirchen Date: 2006-07-25T20:24:03+09:00 Subject: Re: RLisp - Lisp naturally embedded in Ruby "Tomasz Wegrzanowski" writes: > On 7/24/06, William James wrote: >> > ; Configure the server >> > (let config [Hash new]) >> >> Please don't use "let" for this. "setq" or "define" >> would be much better. BTW, compare with Basic's LET. }}}:-) Personally, I'd prefer setf. > Now I know perfectly well that let is used in different way in other > dialects of Lisp ;-), but I think this is way nicer. And it's less cryptic > than setq (a big win); define is a bit too long, but the main problem is > that it suggests global assignment, while (let x y) in RLisp rebinds > x in local environment. Local environments are introduced > by lambda/defsyntax, but I guess RLisp should also provide explicit > (local ...) Your implementation of scope gives me a headache. ;-) Is it newLisp inspired? [snip] > And while I don't have much experience with Lisps, I have a lot experience > with Objective Caml I really really totally *hate* let introducing > extra indentation level > and I think it obfuscates many otherwise clean programs for no real gain. Funny, that's one of the things I like about Lisp and Scheme... > I you can easily do have: > > ; No support for local yet, so let's emulate it > (defsyntax local args > `((lambda () ,@args)) > ) > ; Arc-like let > (defsyntax local-let args > `(local > (let ',[args get 0] ,[args get 1]) > �@ ,@(tl (tl args)) > ) > ) > > And use local-let like Arc's if you really like it. Or even define Scheme-like > one, but I think nobody's going to actually defend it against Arc's. BTW, did you consider adding hygienic macros? -- Christian Neukirchen http://chneukirchen.org