Глобалы

В документации системы не акцентируется концепция “переменной” и все сфокусировано вокруг концепции “символа”, который имеет “значение”. Соответственно, символы могут быть “внутренними“, “внешними“ и “транзитными” (переходными). Вся кухня с механизмами связывания, областью видимости, глобальных и локальных переменных, их мутабельность, побочными эффектами и так далее, решается на уровне символов и их динамическим связыванием. Интерпретатор PicoLisp - “первокласное окружение“.
То есть можно не говорить о свободных или глобальных переменных, а просто интерпретировать параметры интерпретатора как “глобалы“. Они отдельно классифицируются автором и приводится их список (в документации их отмечено на пару-тройку больше, чем в оригинальном списке) - NIL pico СPU OS DB T Solo PPid Pid @ @@ @@@ This Prompt Dbg Zap Scl Rule Class Dbs Run Hup Sig1 Sig2 TStp1 TStp2 Term ^ Err Msg Uni Adr Allow Fork *Bye (местный софт по-своему реагирут на звездочки и я запарился это исправлять, поэтому пусть здесь будет как есть, а по общей ссылке список можно посмотреть в аккуратном виде и более того, ещё и в табличном, но описания все равно по их ссылкам)
https://picolisp.tiddlyhost.com/#Globals
P.S. В определенных ситуациях результат последней оценки сохраняется в VAL символа @
. Это может быть очень удобно, поскольку часто делает ненужным назначение временным переменным. Это происходит в двух, лишь внешне схожих, ситуациях: load и “control flow” …
@
обычно является локальным для функций и методов, его значение автоматически сохраняется при входе в функцию и восстанавливается при выходе.
Functions with controlling expressions are case, casq, prog1, prog2, and the bodies of
*Run
tasks.Functions with conditional expressions are and, cond, do, for, >if, ifn, if2, if@@, loop, nand, nond, nor, not, or, state, unless, until, when and while.
@
is generally local to functions and methods, its value is automatically saved upon function entry and restored at exit.
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
Всегда чему-то учусь!