标签: asdf

使用asdf和defpackage自动解决符号命名冲突

我使用asdf定义了一个常见的lisp包,它使用了parenscript和clsql.

但是这些软件包在函数GET-TIME周围存在命名冲突.加载模块后,我可以在提示符下手动解决冲突(代码可能不准确):

Select a symbol to be made accessible in package MY_PACKAGE:
   1. PS-JS-SYMBOLS:GET-TIME
   2. CLSQL-SYS:GET-TIME
Run Code Online (Sandbox Code Playgroud)

我选择选项1.

修改项目的最佳方法是什么,以便自动解决此冲突?

我是否修改.asd文件或project.lisp文件?

我认为答案可能与:shadowing-import-from有关,但我并不真正理解该文档页面上给出的示例.

common-lisp asdf

2
推荐指数
1
解决办法
350
查看次数

如何构建Common Lisp项目?

我是CL的新手,我无法弄清楚如何从我的简单项目中构建二进制文件.

我创建了app.asd包含以下内容的文件:

(asdf:defsystem game
  :version "0.0.1"
  :components ((:file "package")
               (:file "main")))
Run Code Online (Sandbox Code Playgroud)

package.lisp 内容

(defpackage :app 
  (:use :common-lisp :asdf) 
  (:export :start))
Run Code Online (Sandbox Code Playgroud)

main.lisp

(in-package :app)

(defun start (args)
  (format t "Hello"))
Run Code Online (Sandbox Code Playgroud)

我也符号链接app.asd~/quicklisp/quicklisp/app.asd,当我执行

(require 'asdf)
(asdf:operate 'asdf:load-op :app)
Run Code Online (Sandbox Code Playgroud)

它看起来像编译的东西,但我无法在任何地方找到二进制文件/目标文件.

如何构建我的项目,以便将其复制到另一台没有安装CL并运行的机器上?

我在osx上使用sbcl 1.1.13和asdf 3.0.2.

sbcl common-lisp asdf

2
推荐指数
1
解决办法
1678
查看次数

无法使用系统中定义的lisp包

我试图使用lisp代码制作可执行文件.但是我根本无法编译 lisp文件,因为hellowolrd在加载helloworld系统 之前没有包

;; test.lisp
(asdf:load-system :helloworld)

(defun main()
  (helloworld:start))
Run Code Online (Sandbox Code Playgroud)


当然,我制作了helloworld系统并将其放入~/quicklisp/local-projects/.helloworld系统成功加载没有错误.

;; ~/quicklisp/local-projects/helloworld/helloworld.asd
(asdf:defsystem helloworld 
  :version "1.0"
  :components ((:file "package")))

;; ~/quicklisp/local-projects/helloworld/package.lisp 
(defpackage :helloworld
  (:use :common-lisp :asdf)
  (:export :start))

(in-package :helloworld)
(defun start()
  (format t "Welcome, ASDF"))
Run Code Online (Sandbox Code Playgroud)


我想编译test.lisp没有显式加载.我也试过use-packagedefpackage,但失败了.

;; test.lisp
(asdf:load-system :helloworld)
(use-package :helloworld)

(defun main()
  (helloworld:start))


;; test.lisp
(asdf:load-system :helloworld)

(defpackage :test
  (:use :cl :asdf)
  (:export :main))

(in-package :test)

(defun main()
  (helloworld:start)) …
Run Code Online (Sandbox Code Playgroud)

lisp sbcl common-lisp asdf quicklisp

2
推荐指数
1
解决办法
347
查看次数

Embeddable Common-Lisp asdf:defsystem返回无效的相对路径名

我正在尝试学习如何使用Common-Lisp的asdf,我有以下代码:

(asdf:defsystem example
    :serial t
    :components ((:file "first")
                 (:file "second")))
Run Code Online (Sandbox Code Playgroud)

但是,我一直收到错误:

Condition of type: SIMPLE-ERROR
Invalid relative pathname #P"first.lisp" for component ("example" "first")
Run Code Online (Sandbox Code Playgroud)

我在与这两个Lisp文件相同的目录中启动repl,但我不明白为什么会出现错误.我错过了什么?我在Windows上使用ECL

windows common-lisp asdf ecl

2
推荐指数
1
解决办法
119
查看次数

SLIME交互式开发-将代码从缓冲区粘贴到SLIME REPL!= eval命令中

我正在尝试使用已经在package.lisp中定义的asdf创建一个名为“ a”(要学习)的基本软件包,而我的主文件a.lisp的开头是:

(in-package :a)
...
Run Code Online (Sandbox Code Playgroud)

如果我正在开发模块,我只是想通过执行Mx slime-eval-buffer之类的方法将整个缓冲区评估到SLIME REPL中,但这不会发生,在运行该命令后,我仍然处于cl -用户包:

;;; from a.lisp
A> (in-package :a)
#<PACKAGE "A">
CL-USER>     <--- should have stayed in A>
Run Code Online (Sandbox Code Playgroud)

但是,如果我自己将整个代码粘贴到SLIME REPL中,则它已经可以工作了。一遍又一遍地粘贴很多代码对于交互式开发来说根本不是一件好事。

你能帮我吗?您是否对我的问题有任何建议,或者您通常如何应对?

谢谢。

evaluation common-lisp asdf slime package

2
推荐指数
1
解决办法
78
查看次数

在没有jinterface的情况下使用asdf安装erlang

我正在尝试使用asdf安装Erlang(及更高版本的Elixir),但是jinterface由于安装过程似乎冻结而出现错误:

?  ~ asdf install erlang 22.1.1
Downloading OTP-22.1.1.tar.gz to /Users/me/.asdf/plugins/erlang/kerl-home/archives
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   122    0   122    0     0    320      0 --:--:-- --:--:-- --:--:--   321
100 52.4M    0 52.4M    0     0  7604k      0 --:--:--  0:00:07 --:--:-- 9203k
Extracting source code
Building Erlang/OTP 22.1.1 (asdf_22.1.1), please wait...
APPLICATIONS DISABLED (See: /Users/me/.asdf/plugins/erlang/kerl-home/builds/asdf_22.1.1/otp_build_22.1.1.log)
 * jinterface     : Java compiler disabled by user

DOCUMENTATION INFORMATION (See: /Users/me/.asdf/plugins/erlang/kerl-home/builds/asdf_22.1.1/otp_build_22.1.1.log) …
Run Code Online (Sandbox Code Playgroud)

java erlang javac asdf elixir

2
推荐指数
1
解决办法
66
查看次数

获取ASDF系统的版本

您可以在ASDF系统中设置的其他内容是:version属性.有没有办法在运行时读取它?有点像(system-version :my-system-name)

我知道有asdf:version-satisfiesasdf:asdf-version,但也做我想做的在这种情况下.

common-lisp asdf

0
推荐指数
1
解决办法
398
查看次数

ASDF不加载通用Lisp文件

我目前正在Common Lisp中构建一个项目,并且正在使用ASDF。但是,我遇到了一些困难。即,当我运行时asdf:compile-system,它似乎可以编译。这样我就可以asdf:load-system成功。但是,位于某些文件中的某些功能仍未定义。为了让他们知道,我必须手动导航到该文件并进行编译。

这是系统的声明。有人可以告诉我我做错了什么吗?

(defsystem "xxx-xxxx"
  :version "0.1.0"
  :author ""
  :license ""
  :depends-on ("cl-mongo" "hunchentoot" "clack" "ningle" "cl-json" "hermetic" "lack-middleware-session" "cl-markup")
  :components ((:module "src"
                :components
                ((:file "packages")
         (:file "lisp-utils")
         (:file "xxx-xxxx" :depends-on ("packages"))
         (:file "database" :depends-on ("packages"))
         (:file "database-config" :depends-on ("packages"))
         (:file "server" :depends-on ("packages"))
         (:file "clack" :depends-on ("packages"))
         (:file "routes/activities" :depends-on ("packages"))
         (:file "route-processors" :depends-on ("packages")))))
  :description ""
  :long-description
  #.(read-file-string
     (subpathname *load-pathname* "README.markdown"))
  :in-order-to ((test-op (test-op "xxx-xxxx-test"))))
Run Code Online (Sandbox Code Playgroud)

特别是,我在文件routes/activities和可能存在问题route-processors

common-lisp asdf

0
推荐指数
1
解决办法
156
查看次数

标签 统计

asdf ×8

common-lisp ×7

sbcl ×2

ecl ×1

elixir ×1

erlang ×1

evaluation ×1

java ×1

javac ×1

lisp ×1

package ×1

quicklisp ×1

slime ×1

windows ×1