У меня есть следующее в одном пространстве имен, скажем shapes
:
(derive ::rect ::shape)
(derive ::square ::rect)
Теперь выполняю следующее в пространстве имен shapes
:
(isa? ::square ::shape)
возвращает true
.Но когда я выполняю следующее в пространстве имен, где я фактически реализую мультиметоды для рисования,
(isa? ::square ::shape)
возвращает false
.Поэтому, даже если у меня установлены правильные функции мультиметодальной диспетчеризации, я получаю сообщение об ошибке «функция диспетчеризации не найдена».
Я что-то упустил?Реализация всех типов фигур в одном гигантском пространстве имен кажется мне бессмысленной.