unofficial mirror of help-gnu-emacs@gnu.org
 help / color / mirror / Atom feed
* question to `case'
@ 2005-03-23 12:39 Klaus Berndl
  2005-03-23 13:07 ` Barry Margolin
  0 siblings, 1 reply; 2+ messages in thread
From: Klaus Berndl @ 2005-03-23 12:39 UTC (permalink / raw)



Can i use variables for the keys of the KEY-CLAUSES?

Example:

This is a case with two keys 1 and 2 which works very well:

,----
| (case (tree-node->type node)
|   (1
|    (nth 2 (tree-node->data node)))
|   (2
|    (ignore-errors (semantic-tag-class (tree-node->data node))))
|   (otherwise nil))
`----


My question: I would prefer to define some constants, so e.g.

,----
| (defconst my-bucket-node-type 1)
| (defconst my-tag-node-type 2)
`----

And then i want to use these two constants as keys in this case
instead of this hard-coded numbers 1 and 2, so for example something
like:

,----
| (case (tree-node->type node)
|   (my-bucket-node-type
|    (nth 2 (tree-node->data node)))
|   (my-tag-node-type
|    (ignore-errors (semantic-tag-class (tree-node->data node))))
|   (otherwise nil))
`----

whereas my-bucket-node-type and my-tag-node-type should be evaluated to
the const values...

Of course the notation above can not work but my question is: What is right
notation?

Thanks a lot in advance!
Klaus

-- 
Klaus Berndl			mailto: klaus.berndl@sdm.de
sd&m AG				http://www.sdm.de
software design & management	
Carl-Wery-Str. 42, 81739 Muenchen, Germany
Tel +49 89 63812-392, Fax -220

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: question to `case'
  2005-03-23 12:39 question to `case' Klaus Berndl
@ 2005-03-23 13:07 ` Barry Margolin
  0 siblings, 0 replies; 2+ messages in thread
From: Barry Margolin @ 2005-03-23 13:07 UTC (permalink / raw)


In article <upsxqiliv.fsf@sdm.de>, Klaus Berndl <klaus.berndl@sdm.de> 
wrote:

> Can i use variables for the keys of the KEY-CLAUSES?

No.  The keys are actually a list of constants.  If it were evaluated, a 
list would be treated as a function call.

> Of course the notation above can not work but my question is: What is right
> notation?

Use 'cond' instead:

(let ((type (tree-node->type node)))
  (cond (eq type my-bucket-node-type) ...)
        (eq type my-tag-node-type) ...)))

-- 
Barry Margolin, barmar@alum.mit.edu
Arlington, MA
*** PLEASE post questions in newsgroups, not directly to me ***

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2005-03-23 13:07 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-03-23 12:39 question to `case' Klaus Berndl
2005-03-23 13:07 ` Barry Margolin

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).