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

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

Using setq to obtain a symbol from a list, so that I can assign a funct


From: srinik001
Subject: Using setq to obtain a symbol from a list, so that I can assign a function to it
Date: Mon, 21 Apr 2008 19:28:03 -0700 (PDT)
User-agent: G2/1.0

Hello,

I would really appreciate some help on this. I am trying to do just
about everything with Emacs (and Emacs Lisp) these days. One of the
things I need to do in my job is to create XML files. I thought I
would use Emacs rather than some other editor/tool.

So, I am trying to write a tool that will enable me to write specific
XML files by prompting me to enter values. Here is how I am trying to
do it.

First, I set a variable that will provide a "grammar" for my file that
Emacs will help me write. An example is the following : of course, my
actual problem is not about generating English sentences; this is just
for illustration.

(setq grammar '((sentence <- subject predicate)
                (subject <- article noun)
                (predicate <- verb)))

I expect to generate functions that look like this:

(defun sentence()
  (........some stuff .........)
  (subject)
  (predicate)
  (........some stuff again...))

What I want the system to do is to generate the function
automatically. So, I should have functions for sentence, subject and
predicate. I will of course hand-code the functions for article, noun
and verb.

I don't want to write the above defun; I want to generate it by using
(setq sentence #'(lambda() ( (subject) (predicate)))). Of course,
instead of "sentence". I want to use (car x) or something like that by
reading the variable "grammar".

Here is the problem: when I do this:

(setq (car (expression that generates sentence) #'(lambda() (print
"hello")))

I get an error.

But if I do a (setq x (car ... ) to get the sentence symbol and THEN
assign it, everything works.

Is there something fundamental I am missing?

Thanks,

Regards,

SK




reply via email to

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