help-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Using setq to obtain a symbol from a list, so that I can assign a fu


From: srinik001
Subject: Re: Using setq to obtain a symbol from a list, so that I can assign a function to it
Date: Tue, 22 Apr 2008 21:40:31 -0700 (PDT)
User-agent: G2/1.0

On Apr 22, 5:54 am, Barry Margolin <bar...@alum.mit.edu> wrote:
> In article
> <a4bb6deb-6337-43bd-95e4-64a29770c...@y18g2000pre.googlegroups.com>,
>
>  srinik...@hotmail.com wrote:
> > Oops... I got the subject wrong. Instead of
>
> > " Using setq to obtain a symbol from a list, so that I can assign a
> > function to it", it should read, "Using setq to assign value to the
> > result of a function". Sorry about that.
>
> Use set instead of setq.
>
> --
> Barry Margolin, bar...@alum.mit.edu
> Arlington, MA
> *** PLEASE post questions in newsgroups, not directly to me ***
> *** PLEASE don't copy me on replies, I'll read them in the group ***

Thanks for the tip. Now, it does not throw an error. But I still don't
get what I want. Here is what I did:

(setq grammar '((sentence ::= subject predicate)
                (subject ::= article noun)
                (predicate ::= verb)))
--> This of course worked. I could see the individual elements, their
car's and cdr's etc.

Then I defined the "leaf" level things:

(defun article()
  (insert "article"))

(defun noun()
  (insert "noun"))

(defun verb()
  (insert "verb"))

Then I tried this:

(dolist (x grammar)
  (set (car x) (dolist (y (cdr (cdr x))) (funcall y)))

It threw an error saying that it did not know what subject was. Of
course, the way the grammar was described in the list, it did not know
that. So I tried reversing the grammar, thinking that if it went the
other way, it would understand subject before it came to sentence. So,
I tried this.

(dolist (x (reverse grammar))
  (set (car x) (dolist (y (cdr (cdr x))) (funcall y))))

It still gave the same error! It seems that when it does a set
operation, it forgets it in the next iteration of the loop.

I apologize if these are trivial questions, but while being *very*
addictive, Lisp seems unlike anything else that I have done before;
perhaps I need to study Lisp a lot more before giving myself exercises
like these, by studying Pascal's reply more carefully - I need to look
up many of the functions/terms he uses. For example, I don't really
get the difference between the quoted and the unquoted - I know they
are different but can't seem to be able to put my finger on the exact
difference.

Thanks,

Regards,

SK


reply via email to

[Prev in Thread] Current Thread [Next in Thread]