path , patch ... pat?

1 min read
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
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
Всегда чему-то учусь!