【问题标题】:parenscript symbol not recognize in emacs+slime在emacs + slime中无法识别parenscript符号
【发布时间】:2014-04-03 12:00:18
【问题描述】:

我尝试重做 parenscript 示例。 我在 emacs+sbcl+slime 中执行以下命令:

(ql:quickload :parenscript)
(defpackage :test)
  (:use :cl :parenscript))
(in-package :test)

然后我编译示例:

(defun validate-game-name (evt)
 (when (= (@ add-form name value) "")
  (chain evt (prevent-default))
  (alert "Please enter a name.")))

并得到以下错误:

style-warning: undefined function: @
warning: undefined variable: ADD-FORM
warning: undefined variable: NAME
warning: undefined variable: VALUE

这里有什么问题?

【问题讨论】:

  • 您是否在 repl 的顶层评估 DEFUN 表单?您的错误消息看起来像它。尝试在需要 parenscript 代码的上下文中对其进行评估。试试PS 或类似的东西(查看文档)。
  • 我不知道如何处理它。我使用 C-c C-c 从文件中编译它。有趣的是,当我在 slime 提示符中输入 ps:cha,然后输入 double TAB 以完成时,我得到 ps:chain 结果。

标签: javascript lisp common-lisp parenscript


【解决方案1】:
(defpackage :test)

defpackage 表单已经关闭,没有使用任何包。

那是什么:

(:use :cl :parenscript))

【讨论】:

  • 对不起,我的意思是 :test 后面没有括号。
  • @Xaving - 你能编辑问题,让它包含你真正的意思吗?
【解决方案2】:

好的。根据 Philipp 的评论,我将其编译为:

(ps
  (defun validate-game-name (evt)
  (when (= (@ add-form name value) "")
  (chain evt (prevent-default))
  (alert "Please enter a name."))))

【讨论】:

  • 再做一点解释,让你明白为什么会这样:PS 是 Common Lisp 宏,它采用一种形式(或多种形式,我不确定)必须符合 parenscript 语言(这与 Common Lisp 语义不同,但乍一看非常相似。这个表单(或这些表单)然后被PS以字符串的形式转换为对应的javascript。
猜你喜欢
  • 2016-01-05
  • 2016-11-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-18
相关资源
最近更新 更多