love5an: (Default)
[personal profile] love5an
Как известно, система пакетов Common Lisp является одним из его наиболее "слабых" и наименее продуманных мест.

Так вот, я тут думаю, какую бы систему неймспейсов добавить в свой Microlisp(и соответственно, во встроенный лисп, используемый в программе, которую я пишу для стартапа).

И вот такой возник вопрос:
Какая система разрешения имен неймспейсов вам кажется более удобной, логичной и продуманной:

Как в C++ или как в C#?

Конкретно, вот что я имею ввиду:

В C# чтобы заюзать вложенные неймспейсы мы должны указывать их имена полностью.
Т.е.
using System;
using System.IO;

Каждая директива using интернит в текущий юнит компиляции только типы из неймспейсов, но не вложенные неймспейсы.

В то же время, в C++ вложенные неймспейсы тоже интернятся.
Т.е. мы можем писать:
using namespace System;
using namespace IO;


Другой пример:
Если не интернить System::IO, то если, допустим, у нас в этом пространстве имен есть класс Stream, в C++ мы можем обращаться к нему как к IO::Stream. В C# же нам пришлось бы прописывать его полное имя, т.е. System.IO.Stream.

Подход из C++, возможно, позволяет писать меньше букв. Но, в то же время, C# полностью исключает возможность конфликта имен неймспейсов.

Так вот, что по вашему, логичнее, и вообще, лучше?

Кстати, в Microlisp еще будут алиасы пространств имен и символов, как в том же C#.
Т.е. для каждого юнита компиляции(вообще, в микролиспе процесс разрешения имен символов будет связан именно с юнитами компиляции(т.е. грубо говоря, с файлами), а не только с самими пакетами/неймспейсами, как в CL) можно будет делать что-то типа (use-symbol microlisp:io:file-device "fdev"), и потом писать (make-instance 'fdev) и т.д., а fdev будет превращаться reader'ом в символ file-device из неймспейса microlisp:io

Кстати, в комментах приветствуются мысли про неймспейсы и пакеты "вообще". Т.е. в каких языках система пространств имен нравится, и т.п.
This account has disabled anonymous posting.
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting

Profile

love5an: (Default)
Dmitry Ignatiev

June 2020

S M T W T F S
 123456
78910 111213
14151617181920
21222324252627
282930    

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 13th, 2025 04:53 am
Powered by Dreamwidth Studios