mit-scheme vim slimv: " read-error: no dispatch function defined for #\F" MIT-Scheme、Vim和Slimv:"读取错误:#\ F没有定义调度函数"

3

这是一个非常简单的方案函数

(define member?
  (lambda (a lat)
    (cond
      ((null? lat) #f)
      (else (or (eq? (car lat) a)
                (member? a (cdr lat))
                ))
      )
    )
  )

然而,当我在vim中按下dF运行此函数时,会出现错误。

/home/oo/tmp/t.scm:64 read-error:未定义# \ F的调度函数

行:4,列:21,文件位置:64

流:#<SB-SYS:FD-STREAM用于“file /home/oo/tmp/t.scm”{AC84DA9}>

enter image description here


2
你不能使用Common Lisp实现来执行Scheme代码。在这里,看起来你正在尝试在SBCL上运行它。 - C. K. Young
@ChrisJester-Young,谢谢您。我阅读了这篇文章 来配置我的vimrc文件,但我不知道如何修改它以运行mit-sheme文件。我使用ubuntu 12.04作为我的笔记本电脑操作系统。 - pvd
1个回答

7
Chris已经指出你试图使用Scheme代码与Common Lisp swank服务器配合使用。 你需要运行一个Scheme swank服务器(例如swank-mit-scheme.scm,也包含在Slimv中)。 通常,在Linux上,Slimv应自动检测MIT Scheme,而无需在.vimrc中进行任何调整。为了使自动检测正常工作,您需要安装MIT Scheme并使scheme命令可用。
我建议您从.vimrc中删除任何与Slimv相关的设置。然后在Vim中加载.scm文件,并键入此命令: :echo SlimvSwankCommand() 如果Scheme被自动检测到,则应打印运行Scheme swank服务器的命令(在输出中搜索swank-mit-scheme.scm)。如果自动检测失败,则可能是您没有scheme命令或Slimv未找到swank-mit-scheme.scm。在这种情况下,您需要告诉Slimv运行Scheme swank服务器的命令。您可以通过向.vimrc添加类似的命令来实现: let g:slimv_swank_cmd = '! xterm -e scheme --load /your-path-to/slime/contrib/swank-mit-scheme.scm &' 但只有在自动检测失败时才这样做。如果您需要更多帮助,请随时与我联系,我是Slimv的作者。

非常感谢。我的系统中的命令是:! xterm -iconic -e "scheme" --load "/home/oo/.vim/bundle/slimv/slime/contrib/swank-mit-scheme.scm" & - pvd
为什么Slimv总是将右括号**)**放在单独的一行中? - pvd
1
它被称为“电气回车”,可以通过 let g:paredit_electric_return=0禁用。在单独的行中,会在按下行末的 时被收集。电气返回使得逐行编辑更加容易,因为表单的内部线路是平衡的,你可以轻松地交换行,不必担心额外的非匹配圆括号。点击此处查看演示。 - Tamas Kovacs
这是另一个问题:http://stackoverflow.com/questions/14974738/vimcan-braces-auto-complete-in-java-file-as-elegant-as-lisp-file-with-slimv - pvd

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接