Newsgroups: comp.lang.lisp
From: M Jared Finder <ja...@hpalace.com>
Date: Wed, 16 Nov 2005 20:49:05 -0800
Local: Wed, Nov 16 2005 11:49 pm
Subject: Re: Macro Question: Paraphrasing
Jack wrote: But you can't do (map #'unzip tickets zip-files). Even worse, you can't >>The with-english-grammar macro has access to the super-form of >>(from source) and (to destination) and can make the necesarray >>modifications. <snip> update your paraphrase with a bugfix without recompiling *every usage* of the paraphrase. These are very useful abilities; you shouldn't give them up without a very very very good reason. > .... This link refers to a post of mine. Was this in your discussion with > (unzipped (files-listed-in ticket) (from source) (to target)) > .... > And any permutation or combination. > .... > Where I don't need full-blown paraphrasing, I can (elide-cue cue) to > Why not just use keywords? Because, as I have shown in another post in Pascal? >>(with-english-grammar You're right. I see paraphrasing and with-english-grammar doing the >> (move-object (to destination) (from source))) >>The with-english-grammar macro has access to the super-form of > Why don't I just go all the way and write a full-blown English > WITH-ENGLISH-GRAMMAR could be used to isolate a set of cues from the > Why not just use defun or defmacro for all of these permutations and same thing. I'd prefer paraphrasing because it has the potential to be more lispy, if you make sure to define FUNCTIONS with your paraphrasing and not MACROS. >>Lisp already has a construct that serves exactly that purpose -- keyword Yes. It also shares much of the semantics of Lisp, making it easy to >>arguments. Combined with the package system, you can define your own >>version of any existing function or macro: >>(defpackage :cl-keyworded >>(in-package :cl-keyworded) >>(cl:defmacro setf (cl:&rest args) >>(cl:defmacro let (bindings cl:&body body) > :collect (cl:list symbol be)) >> ,@body)) > Your example here is interesting and clearly shows a different way to > (let ((foo :be bar)) > which would expand to > (cl:let ((foo bar)) learn and reason about. > I could live with it, though I might have tried something to allow me Uhg. That gets me to wondering, why can't I say: > to do as follows: > (where ((ticket is a new instance of 'ticket) > --> (cl:let ((foo bar) (baz goop)...) ...) > BUT that doesn't use lispy keyword-syntax conventions, and here I've (where ((home-dir is my home directory) I don't see why I'd ever want something this. I just get to discard one > I could do as follows: Because it gives no information to the underlying system, and a false > (defmacro elide-cue (cue) > (elide-cue be) > (let ((ticket (be (make-instance 'ticket))) > It seems much simpler than wrestling with redefitions of LET and any sense of semantics to the programmer. Assuming you had defined cues from and to, what do you expect (let ((numbers (be (list (to 10) (from 1))))) to do? If you want something that has no semantic value, don't make it look >>And I could not disagree with you more. LOOP is *the* worst construct LOOP should have its own *semantics*, but not its own *syntax*. I can >>in the Common Lisp language, because it disregards everything that's >>good about computer programming. Worse still, because LOOP's syntax is >>completely different from *the rest of Lisp*, I don't get >>autocompletion, indenting, or any other computer assistance. So I have >>to parse its meaning, token by token, by hand. > LOOP is a domain-specific language. Why shouldn't it have its own not think of a good reason for a domain specific language to have its own syntax. LOOP breaks Lisp syntax in two very important ways that are ultra confusing. * Loop clauses are not represented as sexps. If you want a different syntax than Lisp, a different set of semantics -- MJF You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
| ||||||||||||||