Browse Source

bringing in o-b.org from evaluation branch

Eric Schulte 16 years ago
parent
commit
a58dd8e3af
1 changed files with 47 additions and 0 deletions
  1. 47 0
      org-babel.org

+ 47 - 0
org-babel.org

@@ -241,6 +241,53 @@ would then be [[#sandbox][the sandbox]].
    org-babel-call.el in the 'evaluation' branch. And I've made a start
    at sketching a parsing algorithm below.
 
+*** discussion
+I believe that this issue should be addressed as a bug rather than as
+a point for new development.   The code in [[file:lisp/org-babel-ref.el][org-babel-ref.el]] already
+resolves variable references in a recursive manner which *should* work
+in the same manner regardless of the depth of the number of nested
+function calls.  This recursive evaluation has the effect of
+implicitly constructing the parse tree that your are thinking of
+constructing explicitly.
+
+Through using some of the commented out debugging statements in
+[[file:lisp/org-babel-ref.el][org-babel-ref.el]] I have looked at what may be going wrong in the
+current evaluation setup, and it seems that nested variables are being
+set using the =:var= header argument, and these variables are being
+overridden by the *default* variables which are being entered through
+the new functional syntax (see the demonstration header below).
+
+I believe that once this bug is fixed we should be back to fully
+resolution of nested arguments.  We should capture this functionality
+in a test to ensure that we continue to test it as we move forward.  I
+can take a look at implementing this once I get a chance.
+
+**** demonstration
+
+After uncommenting the debugging statements located [[file:lisp/org-babel-ref.el::message%20format%20first%20second%20S%20S%20new%20refere%20new%20referent%20debugging][here]] and more
+importantly [[file:lisp/org-babel-ref.el::message%20nested%20args%20S%20args%20debugging][here]], we can see that the current reference code does
+evaluate the references correctly, and it uses the =:var= header
+argument to set =a=8=, however the default variables specified using
+the functional syntax in =adder(a=3, b=2)= is overriding this
+specification.
+
+#+srcname: adder(a=3, b=2)
+#+begin_src python 
+a + b
+#+end_src
+
+#+resname: adder
+: 5
+
+
+#+srcname: after-adder(arg=adder(a=8))
+#+begin_src python 
+arg
+#+end_src
+
+#+resname: after-adder
+: 5
+
 *** Parse tree algorithm
     Seeing as we're just trying to parse a string like
     f(a=1,b=g(c=2,d=3)) it shouldn't be too hard. But of course there