World: r3wp
[!REBOL3]
older newer | first last |
BrianH 12-Mar-2010 [1556] | We use THROW/name to write sandboxed replacements for the unwind functions, non-local dynamic escape functions, etc. But that only works if CATCH doesn't catch it. |
Gregg 12-Mar-2010 [1557] | If that was the original design intent, then I agree. |
BrianH 12-Mar-2010 [1558x4] | Reported in bug#1518. |
Andreas, the meaning of "non-local" we have been using is code that is *not* in a nested block or paren. Instead, the code is in another function, a block defined elsewhere, whatever. Definitional scoping will only work for local code, meaning code that is in nested blocks. We have to define locality relative to the catch, not the throw, because the catch function is what defines the scoping. | |
Gregg, CATCH is not a general catch: There is already the /quit option that makes it catch more than it normally would. | |
Steeve, you might be amused to find out that the DO intrinsic currently depends on bug#1509 and does need a [throw] attribute. Though it still wouldn't work with definitional RETURN because of binding issues. C'est la vie. | |
Steeve 12-Mar-2010 [1562] | I'm working on an FIRE effect for R3, that's how I might be amused :) |
Gabriele 13-Mar-2010 [1563] | Brian, if a simple CATCH should not catch named throws then we need a CATCH/ALL (not sure if /QUIT should be it). |
Andreas 13-Mar-2010 [1564x2] | Gabriele, Brian requested such a thing (CATCH/ALL) as bug#1520. |
Though he wants bug#1520 to catch all other unwinds (BREAK, CONTINUE, RETURN, EXIT) as well, to which I see no merit. | |
BrianH 13-Mar-2010 [1566x3] | The advantage to that is because on those rare occasions when you actually need to catch all THROW and THROW/name unwinds, you most likely need to catch the rest too. You might note that the emergency exceptions - HALT, QUIT/now, errors - aren't proposed to be caught, because the cleanup code would likely interfere with error recovery code or the debugging process. |
Most of the time you really don't want THROW/name caught by code that it isn't intended for. When you really want to catch off-topic stuff, you want to catch everything. | |
However, HALT is used for debugging (which is why CATCH/quit doesn't catch it), QUIT/now is supposed to always quit, and you want errors to get through so you see them, so those make sensible exceptions. | |
Paul 14-Mar-2010 [1569x2] | Can someone else confirm if they get a problem with the following ajoin [newline "blah" crlf] |
I don't get the problem on windows but do get it on my webhost (linux) | |
BrianH 14-Mar-2010 [1571] | It looks good here on Windows. What problem do you see? |
Paul 14-Mar-2010 [1572] | yeah works find on windows |
BrianH 14-Mar-2010 [1573x2] | Can you copy the Linux output here? |
(I have a theory, but need confirmation) | |
Paul 14-Mar-2010 [1575x4] | recreating - hold on |
weird - this time it works. | |
before I would get "^^/blah^M^/" | |
I would get a double ^ | |
BrianH 14-Mar-2010 [1579] | Strange. |
Paul 14-Mar-2010 [1580] | yeah not sure why |
BrianH 14-Mar-2010 [1581] | Heisenbug? |
Paul 14-Mar-2010 [1582] | ? |
BrianH 14-Mar-2010 [1583] | It means a bug that goes away when you observe it (or go looking for it). Referring to Heisenberg's Uncertainty Principle. |
Paul 14-Mar-2010 [1584] | ahhh yeah |
BrianH 14-Mar-2010 [1585] | Andreas, I put a comment in bug#1520 that should deal with your concerns. Take a look. |
Gregg 15-Mar-2010 [1586] | R2 console allows this: %"_%test%_.r" But R3 does not. You have to use the escaped version: %"_%25test%25_.r" |
BrianH 16-Mar-2010 [1587] | Right. That was fixed in R3 recently. |
Gregg 16-Mar-2010 [1588] | Cool. Thanks. |
BrianH 16-Mar-2010 [1589x4] | Just to make it clear: The behavior you describe in R3 was the result of the fix :) |
bug#1443 to be specific. | |
Though for file! literals it was like that before, afaik. #1443 extended that to email! and url! literals. | |
I understand your take on Carl's proposal for a change in RETURN and EXIT scoping, but it needs some work before it can do the job. For one thing, if you have dynamic as an option (or a default) there is still the need for something like R2's [throw] attribute. And if definitional is an option, not the default, then I'm having a lot of trouble justifying that option, especially since it doesn't solve the [throw] issue or bug#1506. It seems to me that the main reason for definitional is to make a simpler default for less advanced developers. If it's an option that the user has to chose, it doesn't serve that purpose. And if it's an option that gets conflated with the option to specify a typespec for the return value of the function, then this is going to get Fork furious about making REBOL more confusing, and he'll be right this time. | |
Ladislav 16-Mar-2010 [1593x2] | how about this, is it intended? >> f: func [self] [self] ** Script error: duplicate variable specified: self ** Where: make func ** Near: make function! copy/deep reduce [spec body] |
(that looks like illustrating your note, that 'self is a keyword) | |
BrianH 16-Mar-2010 [1595x2] | Nope, it is not intended, it is a bug. Report it. |
Only closures and FUNCT/with should define 'self; regular functions shouldn't. | |
Ladislav 16-Mar-2010 [1597x2] | Why closures, is it of advantage for closures? |
(I do not see it as an advantage, maybe overlooking something...) | |
BrianH 16-Mar-2010 [1599] | The contexts of closures persist outside of the scope of their execution, like objects. The contexts of functions don't. |
Ladislav 16-Mar-2010 [1600x2] | yes, I know that, but does it need to use 'self because of that? |
(my closures originally did not use 'self) | |
BrianH 16-Mar-2010 [1602] | Not unless the closure has no arguments, but it doesn't hurt enough to get rid of it. On the other hand, we should probably get rid of 'self binding from FOR, REPEAT, FOREACH, MAP-EACH and REMOVE-EACH (it's already been reported). |
Ladislav 16-Mar-2010 [1603] | yes, that looks inappropriate |
BrianH 16-Mar-2010 [1604x2] | I would be willing to accept getting rid of 'self binding from closures if that is the choice, no big deal. |
The 'self bound by FUNCT/with is bound to the object context, so it should stay. | |
older newer | first last |