fin ...
Всегда чему-то учусь!
fin - возвращает any, если это атом, в противном случае CDR его последней ячейки.
(fin 'any) -> num|sym
: (fin 'a)
-> a
: (fin '(a . b))
-> b
: (fin '(a b . c))
-> c
: (fin '(a b c))
-> NIL
finally - prg выполняется, затем вычисляется exe, и возвращается результат prg. exe также будет вычислен, если prg не завершается нормально из-за ошибки времени выполнения или вызова throw.
(finally exe . prg) -> any
: (finally (prinl "Done!")
(println 123)
(quit)
(println 456) )
123
Done!
: (catch 'A
(finally (prinl "Done!")
(println 1)
(throw 'A 123)
(println 2) ) )
1
Done!
-> 123
finish - помещает выражения в prg в глобальный *Bye в обратном порядке для выполнения непосредственно перед завершением работы интерпретатора PicoLisp. (finish (foo) (bar)) эквивалентно (push 'Bye '(bar) '(foo))
(finish . prg) -> exe
: (finish (call "rm" "myfile.tmp")) # Remove a temporary file
-> (c