小编Ale*_*oid的帖子

Common Lisp:相对路径到绝对路径

可能这是一个非常愚蠢的问题,但是在尝试了所有内置的pathname -family 函数和cl-fad/pathname-utils包之后,我仍然无法弄清楚如何将相对路径转换为绝对路径(相对于 $PWD):

; let PWD be "/very/long/way"
(abspath "../road/home"); -> "/very/long/road/home"
Run Code Online (Sandbox Code Playgroud)

假设函数的abspath工作方式与 Python 中一样os.path.abspath()

common-lisp pathname

7
推荐指数
2
解决办法
2746
查看次数

Common Lisp:从泛型函数中提取方法

有没有办法从 Common Lisp 的泛型函​​数中提取方法列表?
例如:

(defmethod say ((self string)) ; method-0
  (format t "Got string: ~a~%" self))

(defmethod say ((self integer)) ; method-1
  (format t "Got integer: ~a~%" self))

(defmethod say ((self symbol)) ; method-2
  (format t "Got symbol: ~a~%" self))

(extract-methods-from-generic 'say) ; -> (method-0-obj method-1-obj method-2-obj)
Run Code Online (Sandbox Code Playgroud)

更具体地说,我的目标是 ECL,所以如果这可以通过 C API 完成 - 没关系。
我需要这个来做下一个技巧:

(defgeneric merged-generic ())

(loop for method
      in (extract-methods-from-generic 'some-generic-0)
      do (add-method merged-generic method))
(loop for method
      in (extract-methods-from-generic 'some-generic-1)
      do (add-method merged-generic method))
Run Code Online (Sandbox Code Playgroud)

methods common-lisp clos generic-function mop

3
推荐指数
1
解决办法
358
查看次数

标签 统计

common-lisp ×2

clos ×1

generic-function ×1

methods ×1

mop ×1

pathname ×1