Skip to main content

Command Palette

Search for a command to run...

fun ... fun?

Published
•1 min read•View as Markdown
S

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

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

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

More from this blog

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

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

Jul 15, 20257 min read
A

abrakadabra

195 posts

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