J'ai une fonction foo
définie dans un package my-package
:Partage des symboles Lisp à travers les paquets
(in-package :my-package)
(defun foo (a)
(if (eql a 'value1)
(do-this)
(do-the-other)))
Quand j'appelle cette fonction à partir d'un autre paquet que je dois qualifier le paramètre avec le nom du package:
(in-package :cl-user)
(my-package:foo 'my-package::value1)
mais c'est plutôt moche. Je veux partager le symbole value1
avec tous les autres paquets. J'ai trouvé une solution de contournement qui consiste à importer le symbole value1
, mais cela ne fonctionne que s'il a déjà été défini dans l'autre paquet. Une autre possibilité est de passer des chaînes, "value1"
, mais encore une fois, ce n'est qu'un patch. Quel est le meilleur moyen de partager des symboles entre paquets? Merci pour votre aide.
Habituellement, des mots-clés sont utilisés à cette fin. Si vous voulez utiliser des symboles sans mot-clé, exportez simplement (et importez si vous ne voulez pas utiliser le nom qualifié du paquet) le symbole de la même manière que pour tous les autres symboles. – jkiiski