emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: Aaron Ecay <aaronecay@gmail.com>
To: Eric Schulte <schulte.eric@gmail.com>
Cc: Achim Gratz <Stromeko@nexgo.de>, emacs-orgmode@gnu.org
Subject: Re: [PATCH] * lisp/ob-core.el (org-babel-execute-src-block): insert hash for silent results
Date: Sat, 09 Mar 2013 14:22:37 -0500	[thread overview]
Message-ID: <87li9wcr9e.fsf@gmail.com> (raw)
In-Reply-To: <87ip50qv36.fsf@gmail.com>

2013ko martxoak 9an, Eric Schulte-ek idatzi zuen:
> A hash marks a *result* with an indication of what was used to generate
> it (code block & parameters).  The point of a hash is to allow the
> result to be returned without having to re-execute.  For this reason, I
> think that the hash should live with the result.  In general a hash
> without a result doesn't make sense (because then what is cached?).

A :results none code block is run for its side effects (by definition).
Caching a code block with results says “I do not want to recalculate
this value unless the code changes.”  Caching a null result, by analogy,
says “I do not want these side effects again, unless the code changes”.

> 
> As I understand this particular case, the OP is using a hash not to mark
> a result as up to date, but rather to mark a side effect (loading data
> into R) as having taken place.  I think this is a misuse of a cache.

It depends on whether one looks at a cache as “a place to store results”
or “a way to conditionally rerun code blocks only when they change”, I
suppose.  I guess you hold with the former; I think the latter is a
useful conceptual extension.  Knitr (http://yihui.name/knitr/) is a very
useful literate programming tool for R, and it supports “caching” code
with side-effects using clever means.  I don’t think org should do all
the tricks knitr does, but it would be useful to be able to
conditionally reexecute code with no results/with side effects.

> 
> What if the R process restarts?  The hash would still be valid, but the
> side effects have been lost.

This is also an issue if the external data files have changed, the RNG
seed is no longer the same, etc.  In such cases, the user has to be
clever.  But the same is true of any cached code that is not a pure
function.

In practice, if the R process is restarted the “variable not found”
errors quickly become apparent, and reloading the data is a simple C-u
C-c C-c away.

(That being said, including the PID of the R process in the results
hash, to the effect that the code would be rerun in the case you
mention, might not be a bad idea.  But that is a separate discussion.)

-- 
Aaron Ecay

  reply	other threads:[~2013-03-09 19:22 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-03-06  4:07 [PATCH] * lisp/ob-core.el (org-babel-execute-src-block): insert hash for silent results Aaron Ecay
2013-03-08 21:25 ` Aaron Ecay
2013-03-08 22:07   ` Eric Schulte
2013-03-08 21:53 ` Achim Gratz
2013-03-08 22:09   ` Eric Schulte
2013-03-08 22:24     ` aaronecay
2013-03-09 17:45       ` Eric Schulte
2013-03-09 18:56         ` Aaron Ecay
2013-03-09 20:03         ` Achim Gratz
2013-03-09  0:57     ` Achim Gratz
2013-03-09 18:35       ` Eric Schulte
2013-03-09 19:22         ` Aaron Ecay [this message]
2013-03-09 20:26           ` Eric Schulte
2013-03-13  3:55             ` Aaron Ecay
2013-03-13 14:45               ` Eric Schulte
2013-03-19  4:49                 ` Aaron Ecay
2013-03-23 22:34                   ` Eric Schulte
2013-04-01  5:10                     ` Aaron Ecay
2013-04-02 22:14                       ` Eric Schulte
2013-03-10  8:52         ` Achim Gratz
2013-03-10 20:14           ` Sebastien Vauban
2013-03-10 21:06             ` Achim Gratz
2013-03-13  4:12           ` Aaron Ecay
2013-03-13  7:50             ` Achim Gratz
2013-03-13 14:42             ` Eric Schulte
2013-03-13 18:25               ` Achim Gratz
2013-03-14 19:52                 ` Eric Schulte

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.orgmode.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87li9wcr9e.fsf@gmail.com \
    --to=aaronecay@gmail.com \
    --cc=Stromeko@nexgo.de \
    --cc=emacs-orgmode@gnu.org \
    --cc=schulte.eric@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

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).