symbols

Не смотря на посты Symbol и Символьные функции, решил акцентировать отдельно symbols, чтобы на этом примере спроектировать сруктуру описания функции с кодом определения, зависимостями и комментариями ИИ-ботов. Функция, подобно “include”, сопровождает все файлы “библиотек-модулей”. В файле pil21/lib/map на 1578-ой видим pico~symbols (643 "src/sym.l" llvm pico). Идем в src/sym.l и … видим только комментарий с уже знакомым интерфейсоми и далее - код определения _Symbols …
# (symbols) -> lst
# (symbols 'lst) -> lst
# (symbols 'lst . prg) -> any
# (symbols ['T] 'sym1 'sym2 ..) -> lst
(de _Symbols (Exe)
(let X (cdr Exe)
(if (atom X) # No args
(val $Intern)
(let Y (eval (++ X))
(if (pair Y) # List argument
(let L Y
(loop
(needNsp Exe (needSymb Exe (++ L)))
(? (atom L)) )
(if (atom X) # No 'prg'
(prog1
(val $Intern)
(set $Intern Y) )
(let Z (save (val $Intern))
(set $Intern Y)
(prog1
(run X) # Run 'prg'
(set $Intern Z) ) ) ) )
(let F (t? Y)
(when F
(setq Y (eval (++ X))) )
(if
(or # New namespace
(nil? (val (needSymb Exe Y)))
(== @ Y) )
(set
(chkVar Exe Y)
(cons $Tilde (cons $Nil $Nil)) )
(needNsp Exe Y) )
(let R (setq Y (save (cons Y $Nil)))
(while (pair X)
(setq Y
(set 2 Y
(cons
(needNsp Exe (needSymb Exe (eval (++ X))))
$Nil ) ) ) )
(prog1
(val $Intern)
(set $Intern R)
(when F
(set (val $NsLink) R) )
(putSrc (car R) 0) ) ) ) ) ) ) ) )
… из 618 позиции в map … llvm~_Symbols (643 "src/sym.l" llvm pico).
Ну что ж, прошу Gemini прокомментировать этот код, что бот прекрано делает! А далее, на всякий случай прошу найти и прокомментировать symbols … и …
(de symbols . prg)
(ifn prg
(val $Intern)
(let L (pop 'prg)
(apply 'run (cons '_Symbols (cons L prg))) ) )
… а лежит типа в lib/lib.l …
Отлично! Идем туда и находим только код для -symbols
(de -symbols ()
(apply symbols (symbols) (intern (opt))) )
Возвращаемся к теме Инвокация, на всякий случай проcим в чате прокомментировать и эту концепцию в PicoLisp.
Не стал мучить Chat GPT, поскольку бесплатный суточный лимит с ним ушел на попыки определить общую структуру тиддлера для мануала. Кстати, он даже предожил его скачть как JSON и, фактически, тиддлеры удалось импортировать и посмотреть!
Cloud уже просто рокомментировал код и тоже указал на lib/lib.l … аргументируя тем, что типа там должно быть исходя из общих принципов организации кода, но конкретно не нашёл и рассказать про зависимости ему не удалось, вероятно, опять же из-за бесплатного лимита.
Неплохо прокомментировал уже предоставленный код perplexity, но его расположение тоже так и не нашёл.
Хорошо справился с задачей комментирования кода Grok, но место тоже не нашёл, порекомендовав искать в файле src/main.l.
Прокомментировал, но тоже не нашёл быстрый Мистраль. С поиском не помог и Yuo.com, но тоже справился с комментированием.
Приколол DeepSeek со своей версией symbols
(de symbols (Ns . Prg)
(let Old (current)
(current Ns)
(run Prg 1)
(current Old) ) )
Вероятно, вытащил из другого Лиспа, кстати, с поиском места тоже пустился фантазировать … Поскольку он расшаривать не дает, то ссылку не привожу. Но точно могу сказать, что он комментирует много строк кода.
Ну а что с зависимостями? Grock акцентировал такие три:
$Intern: Глобальный символ, представляющий таблицу внутренних символов.
run: Встроенная функция PicoLisp, которая интерпретирует и выполняет код.
_Symbols: Внутренний символ, используемый для указания на создание новой области видимости.
И не помню, кто из ботов, тоже не забыл про зависимости, что было указано в промте, и аккуратно перечислил из кода их все : prg, ifn, val, let, pop, apply, run, cons.
Вот такой эксперимент на пути к структуре мануала. И почему пример с инвокацией не рассмотрен на конкретном примере … Вот Вам и прозрачность … На грани призрачности … Трюки … и неописанные механизмы … или описанные не четко … и даже акцент на том, что возможны разные способы достижения цели … как достижение … ровно обратный принцип с Go … наконец, однозначность - это как раз про вычислительный процесс, который детерминирован “по определению” … и не случайно ассоциативный массив рулит как структура и тот же шитый код как по сути последовательность импликаций. Наконец, конвенции … а не любая приватная логика, которая может быть соврешенной, абсолютно рациональной, и даже оптимальной исходя из этих персональных критериев … но это не индустриальный прагматизм и точно не массовый рынок. Нужна дисциплина и институализация!
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
Всегда чему-то учусь!