W org-mode
próbuję zdefiniować funkcję, zmienna, a następnie przypisanie innej zmiennej wynik wywołania funkcji o zmiennej pierwszy. Wydaje się jednak, że nie mogę użyć tej nowej zmiennej w kolejnych wywołaniach funkcji.
Wstawianie wywołań funkcji działa, ale najpierw wpływanie na wartość zmiennej umożliwi szybsze debugowanie w przypadku, gdy coś pójdzie nie tak w pierwszym wywołaniu funkcji, i uniknie powielania potencjalnie kosztownych obliczeń.
MWE: (użyj w (require 'ob-emacs-lisp)
razie potrzeby)
#+name: square
#+begin_src emacs-lisp :var x=3
(message (format "%s" (* x x)))
#+end_src
#+RESULTS: square
: 9
#+name: value
: 45
#+name: squaredvalue
#+call: square(x=value)
#+RESULTS: squaredvalue
: 2025
Now I try to reuse this value:
#+begin_src emacs-lisp :var res=squaredvalue
(message res)
#+end_src
#+RESULTS:
: nil
Inlined calls do work:
#+begin_src emacs-lisp :var res=square(value)
(message res)
#+end_src
#+RESULTS:
: 2025
Rozwinięcie drugiego bloku kodu pokazuje:
(let ((res (quote "nil")))
(message res))
czego mi brakuje?
(Zostało to przetestowane na emacs 24.3.1, 24.4 i 24.5, przy użyciu org 8.2.10)