Skip to main content

Command Palette

Search for a command to run...

path , patch ... pat?

Updated
1 min read
S

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

path - заменяет любой начальный символ "@" или "~" в аргументе any на PicoLisp или домашний каталог пользователя соответственно, как они были запомнены во время запуска интерпретатора. При желании, имени может предшествовать символ "+" (как используется in и out). Этот механизм используется внутри всеми функциями ввода-вывода.

$ /usr/bin/picolisp /usr/lib/picolisp/lib.l
: (path "a/b/c")
-> "a/b/c"
: (path "@a/b/c")
-> "/usr/lib/picolisp/a/b/c"
: (path "+@a/b/c")
-> "+/usr/lib/picolisp/a/b/c"

patch - деструктивно заменяет все подвыражения lst, которые соответствуют шаблону any, на результат выполнения prg.

: (pp 'hello)
(de hello NIL
   (prinl "Hello world!") )
-> hello

: (patch hello 'prinl 'println)
-> NIL
: (pp 'hello)
(de hello NIL
   (println "Hello world!") )
-> hello

: (patch hello '(prinl @S) (fill '(println "We said: " . @S)))
-> NIL
: (hello)
We said: Hello world!
-> "Hello world!"

pat? - возвращает any, когда аргумент any является символом, имя которого начинается с символа "@", в противном случае NIL.

(pat? 'any) -> pat | NIL

https://picolisp.tiddlyhost.com/#pat%3F

More from this blog

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

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

Jul 15, 20257 min read
A

abrakadabra

195 posts

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