Hi Gabriele, Romano, myself and others, when I said:
<<L>> IS-REALLY-ERROR? function works for simple code like above, but, AFAIK, we cannot handle all possible cases, like e.g.: is-really-error? [1 first block2] ; == true (until errors will be "first class")" <</L>> , I was wrong. Here is a (complicated, but working) version of the DEFAULT function, that can handle it: do http://www.rebolforces.com/~ladislav/highfun.r default2: transp-func [ code [block!] fault [block!] /good pass [block!] /local result error code2 ] [ transp-while [not tail? code] [ code: if error? set/any 'error try [ set/any 'code2 second do/next compose [ error? set/any 'result (code) ] skip code (index? code2) - 3 ] [tail code] ] either error? get/any 'error [ fault: func [[throw] error [error!]] fault local-return fault error ] [ do any [pass [local-return get/any 'result]] ] ] block2: head insert copy [] try [first []] default2/good [first block2 1] ["error"] ["pass"] ; == "pass" default2/good [first block2] ["error"] ["pass"] ; == "pass" default2/good [first []] ["error"] ["pass"] ; == "error" Ciao Ladislav -- To unsubscribe from this list, please send an email to [EMAIL PROTECTED] with "unsubscribe" in the subject, without the quotes.