では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
2番目のコードブロックを展開すると、次のようになります。
(let ((res (quote "nil")))
(message res))
何が欠けていますか?
(これは組織8.2.10を使用してemacs 24.3.1、24.4および24.5でテストされています)