From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Kevin Rodgers Newsgroups: gmane.emacs.help Subject: Re: Using setq to obtain a symbol from a list, so that I can assign a function to it Date: Mon, 19 May 2008 20:42:12 -0600 Message-ID: References: <48505b79-009c-42c9-912f-219a06474731@f24g2000prh.googlegroups.com> NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Trace: ger.gmane.org 1211251376 32210 80.91.229.12 (20 May 2008 02:42:56 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Tue, 20 May 2008 02:42:56 +0000 (UTC) To: help-gnu-emacs@gnu.org Original-X-From: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Tue May 20 04:43:28 2008 Return-path: Envelope-to: geh-help-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([199.232.76.165]) by lo.gmane.org with esmtp (Exim 4.50) id 1JyHp2-0001nu-GH for geh-help-gnu-emacs@m.gmane.org; Tue, 20 May 2008 04:43:28 +0200 Original-Received: from localhost ([127.0.0.1]:52694 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1JyHoI-0008Be-B5 for geh-help-gnu-emacs@m.gmane.org; Mon, 19 May 2008 22:42:42 -0400 Original-Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1JyHnt-000874-Gc for help-gnu-emacs@gnu.org; Mon, 19 May 2008 22:42:17 -0400 Original-Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1JyHns-00085h-D6 for help-gnu-emacs@gnu.org; Mon, 19 May 2008 22:42:16 -0400 Original-Received: from [199.232.76.173] (port=38970 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1JyHns-00085N-5F for help-gnu-emacs@gnu.org; Mon, 19 May 2008 22:42:16 -0400 Original-Received: from main.gmane.org ([80.91.229.2]:50270 helo=ciao.gmane.org) by monty-python.gnu.org with esmtps (TLS-1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1JyHnr-0005rp-NP for help-gnu-emacs@gnu.org; Mon, 19 May 2008 22:42:15 -0400 Original-Received: from list by ciao.gmane.org with local (Exim 4.43) id 1JyHnn-0003ym-WE for help-gnu-emacs@gnu.org; Tue, 20 May 2008 02:42:12 +0000 Original-Received: from c-67-190-29-163.hsd1.co.comcast.net ([67.190.29.163]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Tue, 20 May 2008 02:42:11 +0000 Original-Received: from kevin.d.rodgers by c-67-190-29-163.hsd1.co.comcast.net with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Tue, 20 May 2008 02:42:11 +0000 X-Injected-Via-Gmane: http://gmane.org/ Original-Lines: 58 Original-X-Complaints-To: usenet@ger.gmane.org X-Gmane-NNTP-Posting-Host: c-67-190-29-163.hsd1.co.comcast.net User-Agent: Thunderbird 2.0.0.14 (Macintosh/20080421) In-Reply-To: X-detected-kernel: by monty-python.gnu.org: Linux 2.6, seldom 2.4 (older, 4) X-BeenThere: help-gnu-emacs@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Users list for the GNU Emacs text editor List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Errors-To: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.help:54151 Archived-At: David Combs wrote: > In article , > Kevin Rodgers wrote: >> srinik001@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: >> >> ,----[ C-h f setq RET ] >> | setq is a special form in `C source code'. >> | (setq [sym val]...) >> | >> | Set each sym to the value of its val. >> | The symbols sym are variables; they are literal (not evaluated). >> | The values val are expressions; they are evaluated. >> | Thus, (setq x (1+ y)) sets `x' to the value of `(1+ y)'. >> | The second val is not computed until after the first sym is set, and >> so on; >> | each val can use the new value of variables set earlier in the `setq'. >> | The return value of the `setq' form is the value of the last val. >> | >> | [back] >> `---- >> >> ,----[ C-h f set RET ] >> | set is a built-in function in `C source code'. >> | (set symbol newval) >> | >> | Set symbol's value to newval, and return newval. >> | >> | [back] >> `---- > > Kevin, could you elaborate on that just a bit, on why > setq is *not* the right thing to use. > > And, in general, when *do* you use plain set? If I recall, the symbol whose value you want to set came from some data structure, the list mentioned in the subject. Since you don't know what that symbol is ahead of time, you can't use setq: setq is a special form that does not evaluate its SYMBOL argument, but sets that literal SYMBOL. On the other hand, set is a true function, meaning that all its arguments are evaluated before the function itself is called. So you can write any expression that evaluates to a symbol as its first argument. Hope that helps, -- Kevin Rodgers Denver, Colorado, USA