Кстати как в CL обстоят дела с 1) каналами 2) неймспейсами?
2) если коротко, то все отлично, но непонятно что именно из двух разных отличных вещей имеется в виду.
• Символ может указывать в разные места. Может указывать на перееменную и на функцию одновременно. Т.е., существуют отдельные пространства имен: для функций, для переменных, для типов, и, по всей видимости, для чего угодно: автор trivia сделал себе namespace для паттернов, как я понял, и соответствующую библиотеку приложил чтоб другие могли так же, и мотивацию описал.
• Есть packages (пакеты), они существуют чтобы можно было иметь одинаково названные символы, означающие разные вещи в одном и том же пространстве имен — например, можно иметь функцию map которая будет мапить по массиву, списку и пр. последовательностям, и можно при этом иметь функцию map, которая будет мапить по вершинам графа. Но первая будет common-lisp:map
, а вторая будет, скажем, graphs:map
. common-lisp
и graph
это пакеты.