From mboxrd@z Thu Jan 1 00:00:00 1970 From: Carsten Dominik Subject: Re: Problem with lisp code in spreadsheet Date: Sun, 17 Jun 2007 11:56:24 +0200 Message-ID: <7e997f7bc47c3c93d97c18e055b4f2a1@science.uva.nl> References: <1182016207.6246.127.camel@Barebusta.DecebalComp> <7e4a77e5b8fa3274e12ce0d4c4d53f0a@science.uva.nl> <1182061332.6181.138.camel@Barebusta.DecebalComp> Mime-Version: 1.0 (Apple Message framework v624) Content-Type: text/plain; charset=US-ASCII; delsp=yes; format=flowed Content-Transfer-Encoding: 7bit Return-path: Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1HzrUi-0007Hs-0Q for emacs-orgmode@gnu.org; Sun, 17 Jun 2007 05:56:28 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1HzrUh-0007Hg-05 for emacs-orgmode@gnu.org; Sun, 17 Jun 2007 05:56:27 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1HzrUg-0007Hd-Qd for emacs-orgmode@gnu.org; Sun, 17 Jun 2007 05:56:26 -0400 Received: from korteweg.uva.nl ([146.50.98.70]) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1HzrUg-000661-Bg for emacs-orgmode@gnu.org; Sun, 17 Jun 2007 05:56:26 -0400 In-Reply-To: <1182061332.6181.138.camel@Barebusta.DecebalComp> List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: Cecil Westerhof Cc: org-mode On Jun 17, 2007, at 8:22, Cecil Westerhof wrote: > Op zo, 17-06-2007 te 00:14 +0200, schreef Carsten Dominik: >>> In a row I have the following formula's: >>> =$3 >>> ='(getHours $2);%.2f >>> ='(/ 67 0.72);%.1f >>> ='(/ $3 (getHours $2));%.1f >>> This gives: >>> 67 >>> 0.72 >>> 93.1 >>> 0.0 >>> >>> I would expect the last two to return the same number. Why is this >>> not >>> the case? >>> >>> When I change the last formula to: >>> ='(/ 67 (getHours $2));%.1f >>> I get: >>> 93.5 >>> >>> What is happening here? >> >> Since I don't know exactly what getHours does, I cannot be sure. >> The most likely reason though is that $3 and $2 are interpolated into >> Lisp expressions as strings, not as numbers. > > The tabel: > |--------+------+----+-----+------+----+------| > | Arnhem | 0:43 | 67 | 0.0 | 93.1 | 67 | 0.72 | > |--------+------+----+-----+------+----+------| > #+TBLFM: $4='(/ $3 (getHours $2));N%.1f::$5='(/ 67 > 0.72);%.1f::$6=$3::$7='(getHours $2);%.2f:: > > getHours: > (defun getHours(time) > (interactive "sHH:MM: ") > (let ((timelist (split-string time ":"))) > (+ > (string-to-number (car timelist)) > (/ > (string-to-number (cadr timelist)) > 60.0 > ) > ) > ) > ) > > The strange thing is that $3 is 67 and when I change $3 to 67 it works. What is going wrong is that you want $2 to be interpreted as a string, and $3 as a number. So you could leave off the N flag again and write (string-to-number $3) Hmmm, maybe this is not completely satisfying now, maybe it would be good to have replacements literally and then to write (getHours "$2"), that might also be an option. Needs more thinking. - Carsten > > Even changing the formul to: > ='(/ (string-to-number $3) (getHours $2));N%.1f > does not work. > >> See the discussion of the N mode flag in >> >> http://staff.science.uva.nl/~dominik/Tools/org/org.html#Formula- >> syntax- >> for-Lisp > > The problem is with $3, so I would not know how to use that. :-{ > > -- > Cecil Westerhof > > > > _______________________________________________ > Emacs-orgmode mailing list > Emacs-orgmode@gnu.org > http://lists.gnu.org/mailman/listinfo/emacs-orgmode > > -- Carsten Dominik Sterrenkundig Instituut "Anton Pannekoek" Universiteit van Amsterdam Kruislaan 403 NL-1098SJ Amsterdam phone: +31 20 525 7477