История изменений
Исправление naryl, (текущая версия) :
Я пакеты Tcl дальше в комменте описал. Там можно обращаться глобально, начав полное имя символа с двоеточия, а можно относительно текущего пакета. Ну и пакеты иерархичные, что потребует изменения синтаксиса read для полных имён символов.
Кстати, у всех package-local-nicknames в CL есть проблема с write/read локально-переименованных пакетов. Появляются такие штуки как find-package-using-package. С иерархическими пакетами и этой фичёй из Tcl можно локально-переименованные пакеты представлять просто как локальные пакеты, являющиеся псевдонимами других. Например:
(in-package :my-app)
(local-nickname threads :bordeaux-threads)
(defun start ()
(threads:make-thread #'my-entry-point))
После этого символы из :bordeaux-threads окажутся доступны по, например, :my-app:threads:make-thread. И никаких костылей с write/read, кроме самого изменения синтаксиса полного имени символа.
/me кастует обратно Monk
Исправление naryl, :
Я пакеты Tcl дальше в комменте описал. Там можно обращаться глобально, начав полное имя символа с двоеточия, а можно относительно текущего пакета. Ну и пакеты иерархичные, что потребует изменения синтаксиса read для полных имён символов.
Кстати, у всех package-local-nicknames в CL есть проблема с write/read локально-переименованных пакетов. Появляются такие штуки как find-package-using-package. С иерархическими пакетами и этой фичёй из Tcl можно локально-переименованные пакеты представлять просто как локальные пакеты, являющиеся псевдонимами других. Например:
(in-package :my-app)
(local-nickname threads :bordeaux-threads)
(defun start ()
(threads:make-thread #'my-entry-point))
После этого символы из :bordeaux-threads окажутся доступны по, например, :my-app:threads:make-thread. И никаких костылей с write/read, кроме самого изменения синтаксиса полного имени символа.
Исправление naryl, :
Я пакеты Tcl дальше в комменте описал. Там можно обращаться глобально, начав полное имя символа с двоеточия, а можно относительно текущего пакета. Ну и пакеты иерархичные, что потребует изменения синтаксиса read для полных имён символов.
Кстати, у всех package-local-nicknames в CL есть проблема с write/read локально-переименованных пакетов. Появляются такие штуки как find-package-using-package. С иерархическими пакетами и этой фичёй из Tcl можно локально-переименованные пакеты представлять просто как локальные пакеты, являющиеся псевдонимами других. Например:
(in-package :my-app)
(local-nickname threads :bordeaux-threads)
(defun start ()
(threads:make-thread #'my-entry-point))
После этого символы из :bordeaux-threads окажутся доступны по, например, :my-app:threads:make-thread. И никаких костылей с write/read.
Исправление naryl, :
Я пакеты Tcl дальше в комменте описал. Там можно обращаться глобально, начав полное имя символа с двоеточия, а можно относительно текущего пакета. Ну и пакеты иерархичные, что потребует изменения синтаксиса read для полных имён символов.
Кстати, у всех package-local-nicknames в CL есть проблема с write/read локально-переименованных пакетов. Появляются такие штуки как find-package-using-package. С иерархическими пакетами и этой фичёй из Tcl можно локально-переименованные пакеты представлять просто как локальные пакеты, являющиеся псевдонимами других. Например:
(in-package :my-app)
(local-nickname threads :bordeaux-threads)
(defun start ()
(threads:make-thread #'my-entry-point))
После этого символы из :bordeaux-threads окажутся доступны по :my-app:threads:make-thread. И никаких костылей с write/read.
Исправление naryl, :
Я пакеты Tcl дальше в комменте описал. Там можно обращаться глобально, начав полное имя символа с двоеточия, а можно относительно текущего пакета. Ну и пакеты иерархичные, что потребует изменения синтаксиса read для полных имён символов.
Кстати, у всех package-local-nicknames в CL есть проблема с write/read локально-переименованных пакетов. Появляются такие штуки как find-package-using-package.
С иерархическими пакетами и этой фичёй из Tcl можно локально-переименованные пакеты представлять просто как локальные пакеты, являющиеся псевдонимами других. Например:
(in-package :my-app)
(local-nickname threads :bordeaux-threads)
(defun start ()
(threads:make-thread #'my-entry-point))
После этого символы из :bordeaux-threads окажутся доступны по :my-app:threads:make-thread. И никаких костылей с write/read.
Исправление naryl, :
Я пакеты Tcl дальше в комменте описал. Там можно обращаться глобально, начав полное имя символа с двоеточия, а можно относительно текущего пакета. Ну и пакеты иерархичные, что потребует изменения синтаксиса read.
Кстати, у всех package-local-nicknames в CL есть проблема с write/read локально-переименованных пакетов. Появляются такие штуки как find-package-using-package.
С иерархическими пакетами и этой фичёй из Tcl можно локально-переименованные пакеты представлять просто как локальные пакеты, являющиеся псевдонимами других. Например:
(in-package :my-app)
(local-nickname threads :bordeaux-threads)
(defun start ()
(threads:make-thread #'my-entry-point))
После этого символы из :bordeaux-threads окажутся доступны по :my-app:threads:make-thread. И никаких костылей с write/read.
Исходная версия naryl, :
Я пакеты Tcl дальше в том комменте описал. Там можно обращаться глобально, начав полное имя символа с двоеточия, а можно относительно текущего пакета. Ну и пакеты иерархичные, что потребует изменения синтаксиса read.
Кстати, у всех package-local-nicknames в CL есть проблема с write/read локально-переименованных пакетов. Появляются такие штуки как find-package-using-package.
С иерархическими пакетами и этой фичёй из Tcl можно локально-переименованные пакеты представлять просто как локальные пакеты, являющиеся псевдонимами других. Например:
(in-package :my-app)
(local-nickname threads :bordeaux-threads)
(defun start ()
(threads:make-thread #'my-entry-point))
После этого символы из :bordeaux-threads окажутся доступны по :my-app:threads:make-thread. И никаких костылей с write/read.