Skip to main content

Command Palette

Search for a command to run...

Глобалы

Published
•2 min read•View as Markdown
S

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

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

More from this blog

Нетривиальный Repl

Это плавный переход от eval к loop к циклам и где уместно вспомнить, что эта тема уже затрагивалась в контексте самой часто употребляемой функции for и рекурсии. Repl как функция не анонсирована в документации, но есть авторская классификация в файла...

Jul 15, 20257 min read
A

abrakadabra

195 posts

Метамоделирование как интеграция философии, лингвистики и математики на базе информатики. Анализ теорий и практик программирования. Прецеденты оптимизации.