повторное ке-создание вызвало нежелательное дополнительное овеществление
Если я позвоню
(ke-create «Фу»)
Затем, как и ожидалось, я получаю термин #$Foo.
а затем, позже (возможно, через тысячи вызовов) вызовите
(ke-create «Фу»)
опять же, я получаю два термина. Другой член называется Foo-, где n - небольшое, очевидно случайное целое число.
Почему я получаю два срока? Мне кажется, что если я повторяю вызовы для создания константы с именем Foo, у меня должен получиться ровно один новый термин.
Это боль. Означает ли это, что мой код должен проверять каждый раз, когда он вызывает (ke-create «Foo»), чтобы убедиться, что он не вызывал это раньше? Есть ли способ отключить эту надоедливую функцию?
1 ответ
Да, есть. Вместо этого используйте функцию SubL fi-find-or-create.
Если ваш код генерации ke в конечном итоге вызывает (fi-find-or-create "Foo") несколько раз, и вы, к счастью, в конечном итоге создадите только один термин, например #$Foo.
(Если бы вы сделали это с помощью ke-create, вы бы получили кучу ненужных терминов. То есть не только желаемый #$ Foo, но и такие вещи, как #$ Foo-2, #$ Foo-11, #$ Foo -9, #$ Foo-5 и т. Д. (Как подразумевается в тексте вопроса)