Глобалы

Sergey ShishkinSergey Shishkin
2 min read

В документации системы не акцентируется концепция “переменной” и все сфокусировано вокруг концепции “символа”, который имеет “значение”. Соответственно, символы могут быть “внутренними“, “внешними“ и “транзитными” (переходными). Вся кухня с механизмами связывания, областью видимости, глобальных и локальных переменных, их мутабельность, побочными эффектами и так далее, решается на уровне символов и их динамическим связыванием. Интерпретатор 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.

https://software-lab.de/doc/ref.html#atres

0
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

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