回复: [Lisp-cn] defpackage的问题

27 views
Skip to first unread message

CrLF0710

unread,
Dec 6, 2012, 9:14:03 PM12/6/12
to lis...@googlegroups.com
当你:use #:hunchentoot 之后,你程序中的start都是hunchentoot:start

发送自HTC手机

----- Reply message -----
发件人: "lijie" <cpu...@gmail.com>
收件人: <lis...@googlegroups.com>
主题: [Lisp-cn] defpackage的问题
日期: 周四, 12 月 6 日, 2012 年 11:56 下午


新人报道。

common lisp相关的书和代码看了一阵子了,之前简短的测试代码写过一些,基本是一些玩具片段,这次准备正式动手弄个项目结构,受到点挫折。

我用quickproject:make-project生成项目模板,在.asd文件的defsystem中加入

> :depends-on (:hunchentoot)

在package.lisp文件的defpackage中加入

> (:use :cl :hunchentoot)

然后在实现文件中加入:

> (export '(start))
> (defun start ()
> (hunchentoot:start (make-instance 'hunchentoot:easy-acceptor :port 4242)))

quickload后调用myproject:start报错如下:

debugger invoked on a SB-INT:SIMPLE-PROGRAM-ERROR in thread
#<THREAD "main thread" RUNNING {10029E9103}>:
  invalid number of arguments: 1

Type HELP for debugger help, or (SB-EXT:EXIT) to exit from SBCL.

restarts (invokable by number or by possibly-abbreviated name):
  0: [ABORT] Exit debugger, returning to top level.

(HUNCHENTOOT:START #<unknown>)[:EXTERNAL]

把defpackage中的(:use :cl :hunchentoot)改为(:use :cl) (:import-from :hunchentoot)就没错误了,不解。看书上说这两个的差异就是:import-from是选择性只导入部分符号,看一些范例也是使用:use的,莫非和cl的实现有关?我使用的是sbcl-1.1.1。

--
Lisp-cn(Lisp中文用户组)
CLUG http://lisp.org.cn

lijie

unread,
Dec 6, 2012, 10:29:05 PM12/6/12
to lis...@googlegroups.com
多谢,改名后解决了。

为了避免名字冲突,是否更推荐使用import-from?不同库里面相同函数名是很常见的,这里的出错信息也没有明显指出问题所在。


2012/12/7 CrLF0710 <crlf...@gmail.com>

Liutos

unread,
Dec 7, 2012, 1:44:31 AM12/7/12
to lis...@googlegroups.com
借宝地请教二楼一个问题:写成:use #:hunchentoot而不是:use :hunchentoot的区别是什么?
Liutos Love Linux LaTeX Lisp Ling

我的GitHub主页:https://github.com/Liutos

Xiaofeng Yang

unread,
Dec 7, 2012, 1:45:53 AM12/7/12
to lis...@googlegroups.com

带#不会被自动intern

CRLF0710

unread,
Dec 10, 2012, 5:22:13 AM12/10/12
to lis...@googlegroups.com
个人选择问题。如果是我,alexandria、ppcre这种package我会use,hunchentoot这种我只会导入几个符号或者什么都不做。

另,你这里export的用法是有问题的。
另,你也可以考虑shadow。不过不推荐。
另,下面uninterned symbol的问题别人回过了。

--
Wir müssen wissen; wir werden wissen!
CrLF.0710

Reply all
Reply to author
Forward
0 new messages