Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Lisp CL-FAD-DEF系统中的冗余?_Lisp_Common Lisp_Asdf - Fatal编程技术网

Lisp CL-FAD-DEF系统中的冗余?

Lisp CL-FAD-DEF系统中的冗余?,lisp,common-lisp,asdf,Lisp,Common Lisp,Asdf,我开始研究Edi Weitz的CL-FAD来学习一些好的编码实践。当我看着cl fad.asd时,有一件事引起了我的注意。在defsystem中,Weitz使用:serial t,如果我根据正确理解,它会指示ASDF按照外观顺序包含:组件。在我看来,这应该使:在这种情况下依赖于是多余的。Weitz之所以包含:取决于,是有原因的,还是只是疏忽 以下是defsystem部分(最新的Github克隆): 朋友不允许朋友使用cl fad cl fad对于任何类型的“最佳实践”来说都是错误的。这是一个快速

我开始研究Edi Weitz的CL-FAD来学习一些好的编码实践。当我看着
cl fad.asd
时,有一件事引起了我的注意。在
defsystem
中,Weitz使用
:serial t
,如果我根据正确理解,它会指示ASDF按照外观顺序包含
:组件。在我看来,这应该使
:在这种情况下依赖于
是多余的。Weitz之所以包含
:取决于
,是有原因的,还是只是疏忽

以下是
defsystem
部分(最新的Github克隆):


朋友不允许朋友使用cl fad

cl fad对于任何类型的“最佳实践”来说都是错误的。这是一个快速而肮脏的不那么便携的可移植层


改用UIOP。

可能同时执行串行和依赖会产生冲突,即依赖定义的非循环图与组件序列给出的顺序不兼容。我怀疑,但谁知道,如果asdf真的检查了

当然,这是多余的。但是,冗余不一定是坏事。除了序列号之外,声明依赖项可能会为读者提供有关代码结构的bit-o-info


开发人员可能偶尔会注释掉序列号,以获得由此带来的好处。

你对冗余的看法是正确的。一般来说,我同意,但在这种特殊情况下,很简单:“路径”和“临时文件”取决于“fad”。句号:)如果需要,可以比较源代码,您将看到差异。UIOP支持15种不同的实现。cl fad没有。UIOP支持大量cl fad不支持的角落案例。有些cl fad函数的接口是假的。不管怎样,只要看看代码,你就会明白。
(asdf:defsystem #:cl-fad
  :version "0.7.2"
  :description "Portable pathname library"
  :serial t
  :components ((:file "packages")
               #+:cormanlisp (:file "corman")
               #+:openmcl (:file "openmcl")
               (:file "fad")
               (:file "path" :depends-on ("fad"))
               (:file "temporary-files" :depends-on ("fad")))
  :depends-on (#+sbcl :sb-posix :bordeaux-threads :alexandria))

(asdf:defsystem #:cl-fad-test
  :version "0.7.2"
  :serial t
  :components ((:file "packages.test")
               (:file "fad.test" :depends-on ("packages.test"))
               (:file "temporary-files.test" :depends-on ("packages.test")))
  :depends-on (:cl-fad :unit-test :cl-ppcre))