subr ... sub?

Sergey ShishkinSergey Shishkin
1 min read

subr - преобразует функцию Lisp, которая ранее была преобразована с помощью expr * обратно в функцию SUBR.

sub? - возвращает any2, когда строковое представление any1 является подстрокой строкового представления any2.

https://picolisp.tiddlyhost.com/#sub

Долго искал в документации, что может значить “функция SUBR“. На просторах сети есть subr.c, но это явно не то. В одном месте туториала можно увидеть в контексте трейсинга такую цитату: “trace works by modifying the function body, so generally it works only for functions defined as lists (lambda expressions, see Evaluation). Tracing a built-in function (SUBR) is possible, however, when it is a function that evaluates all its arguments.“ То есть, это либо встроенная функция, либо процесс трассировки встроенной функции, скорее, просто “built-in function”.

В любом случае, как видим, обе акцентированные функции не связаны между собой. Но тем более их уместно продемонстрировать вместе и те потенциальные недоумения, которые могут возникнуть при знакомстве с этими “символами”.

Поэтому обязательно пример с использованием subr:

: car
-> 67313448
: (expr 'car)
-> (@ (pass $385260187))
: (subr 'car)
-> 67313448
: car
-> 67313448
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

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