((复制粘贴代码时的方案)未绑定变量

问题描述 投票:1回答:1

我正在将以下Scheme代码从pdf复制到emacs上的缓冲区文件中:

(define (plural wd)
  (if (equal? (last wd) ’y)
    (word (bl wd) ’ies)
    (word wd ’s)))

初始格式为长字符串,我手动将其编辑为上面显示的格式。该文件已加载,但是当我使用该函数时出现错误:

*** Error:
unbound variable: |’y|
Current eval stack:
__________________
0    (equal? (last wd) |’y|)
1    (if (equal? (last wd) |’y|) (word (bl wd) |’ies|) (word wd |’s|))

但是,当我手动键入此代码并加载文件时,该函数没有问题。

以哪种方式将代码的粘贴/编辑与代码的格式搞混?

是否存在将代码复制粘贴到文件中的正确方法?我尝试过在文本编辑器中格式化代码,然后再粘贴到缓冲区中,但这也不起作用。

感谢您的时间和帮助。

macos emacs scheme stk
1个回答
2
投票

Barmar的评论已经回答了此问题,但这将使您能够完成问题,并在以后帮助任何其他遇到相同问题的人。

从PDF复制/粘贴代码时,您没有复制简单的ASCII引号'。而是,您复制了“正确的单引号”(Unicode U+2019。由于这不是Scheme中的保留字符,因此可以将其用作标识符,因此,您希望引用的符号'y实际上是标识符’y。错误是由于变量’y没有绑定引起的。

一种不需要手动复制代码或手工固定每个引号的简单方法就是找到并替换'(只要您不希望有字符串中的字符)。

© www.soinside.com 2019 - 2024. All rights reserved.