Bonjour,
Je sollicite une nouvelle fois vos éclairages - la documentation trouvée n'étant pas très claire / complète sur ces sujets.
Concernant require et use-package, peut-on résumer leur différence au (seul ?) respect des espaces de noms pour les variables (quelque soit le type) ? En effet l'expérience :
... m'invite à penser que la principale différence est à ce niveau-là. J'imagine que c'est un peu plus subtile. La documentation CL ne fait pas dans le détail :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 #!/usr/bin/sbcl --script (require 'sb-bsd-sockets) (print #'sb-bsd-sockets:socket-close) (use-package 'sb-bsd-sockets) (print #'socket-close) (print (eq #'socket-close #'sb-bsd-sockets:socket-close)) ; = T
"Function: require [cl] module-name &optional pathnames. Loads a module, unless it already has been loaded. pathnames, if supplied, is a designator for a list of pathnames to be loaded if the module needs to be. If pathnames is not supplied, functions from the list *module-provider-functions* are called in order with module-name as an argument, until one of them returns non-NIL. User code is responsible for calling provide to indicate a successful load of the module. " - http://www.sbcl.org/manual/index.html#Package-Variance
J'ai supposé que cet impact se situe aussi au niveau des variables référencées au niveau des packages ? Est-ce une question de portée, de visibilité, les deux... ?
Pour la documentation française, le Traité de Programmation LISP évoque bien l'espace de nom mais reste silencieux sur les packages (mal fouillé ?) :
http://dept-info.labri.u-bordeaux.fr...L/node318.html
Si vous avez des explications et/ou une documentation française sur ce point, ce serait super !![]()
Vous en remerciant par avance,
Julien.
Partager