相当于 python 习语的普通 lisp

common lisp equivalent of a python idiom

如何 运行 在 Lisp

中与此 Python 命令等效
from lib import func

例如,我想使用 split-sequence 包,特别是我只想使用该包中的 split-sequence 方法。

目前,我必须将其用作 (split-sequence:split-sequence #\Space "this is a string")

但我想做的是(split-sequence #\Space "this is a string")

如何在不使用包名称限定的情况下直接访问函数?

你想做的很简单:

(import 'split-sequence:split-sequence)

这在 REPL 中工作得很好,但如果你想组织你的符号,你最好依赖包。

(defpackage #:my-package 
   (:use #:cl)
   (:import-from #:split-sequence 
                 #:split-sequence))

第一个̀split-sequence是包,后面是所有应该导入的符号。在 DEFPACKAGE 形式中,人们通常使用关键字或像上面那样的 uninterned 符号,以避免在当前包中插入符号。或者,您可以使用字符串,因为只有符号的名称很重要:

 (defpackage "MY-PACKAGE"
   (:use "CL")
   (:import-from "SPLIT-SEQUENCE" "SPLIT-SEQUENCE"))