Emacs虚线对语法改进

Kri*_*ins 5 emacs elisp

我想在Emacs Lisp中创建一对虚线变量.但我能找到它的唯一方法似乎真的很笨拙.作为简化示例:

(let ((width (calculate-width)
      (height (calculate-height))
  `(,width . ,height))
Run Code Online (Sandbox Code Playgroud)

这种反引号,双引号语法对我来说很有气味,但是我找不到更简洁的方式而且我的Google-fu让我失望了.

当值是变量时,是否有更好的方法来构造虚线对?

(为了澄清,它必须是一个虚线对.直接列表不会.)

ryu*_*ash 10

你可以使用cons:

(let ((width (calculate-width))
      (height (calculate-height))
   (cons width height))
Run Code Online (Sandbox Code Playgroud)

  • @KrisJenkins Cons单元格可以在第一个和第二个组件中存储任何内容.列表只是cons细胞的特殊情况,即cons细胞,其第二个元素是另一个cons细胞,其第二个元素又是另一个cons细胞,依此类推.`'(foo bar baz)`与''(foo.(bar.(baz.nil)))`完全相同.这种洞察力对于理解"cons","car","cdr"和所有其他Lisp列表函数的含义至关重要. (3认同)