extern и intern

Пришла очередь акцентировать in , но что уже случилось два раза, прямо в контексте out - in, а также в контексте input, а insert акцентировался в рамках as ... soc ... sert и asoq. С другой стороны, не уверен, что существует, как самостоятельная, лексема “tern”, хотя это может быть как редукция от “terra” (территория или террариум) и известны такие прецеденты, как “через тернии к звездам“ и “тернарный“ (тройной). Так, что вот такой компромисс.
extern - создает или находит внешний символ. Если символ с именем sym
уже является extern, он возвращается. В противном случае возвращается новый внешний символ. NIL
возвращается, если sym не существует в базе данных.
(extern 'sym) -> sym | NIL
: (extern "A1b")
-> {A1b}
: (extern "{A1b}")
-> {A1b}
https://picolisp.tiddlyhost.com/#extern
intern - создает или находит внутренний символ. Если символ с именем any
уже является intern, он возвращается. В противном случае any
интернируется в текущее пространство имен и возвращается. Если nsp
не является NIL
, any
всегда интернируется в текущее пространство имен (если nsp
является T
) или в заданное пространство имен, даже если он найден в других пространствах имен.
(intern 'any ['nsp]) -> sym
: (intern "abc")
-> abc
: (intern 'car)
-> car
: ((intern "car") (1 2 3))
-> 1
: ((intern '("c" "a" "r")) (1 2 3))
-> 1
Subscribe to my newsletter
Read articles from Sergey Shishkin directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by

Sergey Shishkin
Sergey Shishkin
Всегда чему-то учусь!