fun ... fun?
Всегда чему-то учусь!
fun - применяет fun к аргументам any. (fun foo 'args) эквивалентно (foo 'args), а (fun (expr) 'args) эквивалентно ((expr) 'args)
: (find fun '(sym? ((X) (> X 3)) num?) 'a)
-> sym?
: (find fun '(sym? ((X) (> X 3)) num?) 3)
-> num?
: (find fun '(sym? ((X) (> X 3)) num?) 4)
-> ((X) (> X 3))
fun? - возвращает NIL, когда аргумент any не является ни числом, подходящим для указателя кода, ни списком, подходящим для лямбда-выражения (функции). В противном случае возвращается число для указателя кода, T для функции без аргументов и один формальный параметр или список формальных параметров для функции.
: (fun? 1000000000) # Might be a code pointer
-> 1000000000
: (fun? 10000000000000000000) # Too big for a code pointer
-> NIL
: (fun? '((A B) (* A B))) # Lambda expression
-> (A B)
: (fun? '((A B) (* A B) . C)) # Not a lambda expression
-> NIL
: (fun? '(1 2 3 4)) # Not a lambda expression
-> NIL
: (fun? '((A 2 B) (* A B))) # Not a lambda expression
-> NIL