В org-mode
, я пытаюсь определить функцию, переменную, а затем назначить другой переменной результат вызова функции по первой переменной. Однако тогда кажется, что я не могу использовать эту новую переменную в последующих вызовах функций.
Включение вызовов функций работает, но сначала воздействие на значение переменной позволит быстрее отладить в случае, если что-то пойдет не так при первом вызове функции, и избежать дублирования потенциально дорогих вычислений.
MWE: (используйте (require 'ob-emacs-lisp)
при необходимости)
#+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
Расширение второго блока кода показывает:
(let ((res (quote "nil")))
(message res))
Что мне не хватает?
(Это было протестировано на emacs 24.3.1, 24.4 и 24.5 с использованием org 8.2.10)