Oh yes, N+ does allow UniCode (or more probably UTF8). I wish VLIDE had that capability (amoungst many other things I wish for :pissed: )!
About the vl-catch-* functions:
vl-catch-all-applyThis simply runs as an apply (see later for description), with the added feature that if an error occurs it doesn't stop the lisp. If an error occurs it returns a <%catch-all-apply-error%> object instead. If no error occurs it returns the evaluated result as normal.
vl-catch-all-error-p This checks if the argument is a <%catch-all-apply-error%> object. If it is returns T, else returns nil.
applyThis is something only found in lisp-like languages. Most of lisp's built-in functions accept multiple arguments, these include even functions which are binary operators in other languages. E.g. the add function (+ ...) is a binary operator in C. Say you'd want to add 4 numbers together. In C that would be:
In lisp it's
Now say you don't know how many numbers there are to add together. Rather you've got a list/array of numbers (which could be any length). In C you'd have to loop through the list keeping a running total. Not to mention, you'd need to know somehow the length of the array, or calculate it by figuring out from the size of the RAM used. E.g. :
int numbers[] = {1 , 2, 3, 4, 5, 6};
int len = sizeof(numbers) / sizeof(int);
int total = 0;
int index;
for (index = 0; index < len; index++)
{
total += numbers[index];
}
return total;
In lisp you could do it the same way (though I'm using lisp's foreach instead of an index and trying to figure out how long the list/array is):
(setq numbers '
(1 2 3 4 5 6) total 0)
(setq total
(+ total num
))) total
Or you could be smart and use the idea that + takes more than 2 arguments using the apply function
(setq numbers '
(1 2 3 4 5 6))