повторное ке-создание вызвало нежелательное дополнительное овеществление

Если я позвоню

(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 и т. Д. (Как подразумевается в тексте вопроса)

Другие вопросы по тегам