r3wp [groups: 83 posts: 189283]
  • Home
  • Script library
  • AltME Archive
  • Mailing list
  • Articles Index
  • Site search
 

World: r3wp

[!REBOL3]

Ladislav
15-Nov-2010
[6145]
USE3:USE2 = 7:0
ChristianE
15-Nov-2010
[6146]
8:0
BrianH
15-Nov-2010
[6147x2]
Pleasantly surprised, thanks :)
About the annoyance, that is a side effect of two things combined:

- Starting with R2 we got direct binding, rather than dynamic binding, 
for a 30X speedup IIRC.

- Starting with R3 we got stack-relative contexts for functions, 
for security, task safety and better recursion safety.


You can't have the words in functions lose their bindings once the 
function returns because they will need those bindings the next time 
the function is called, and you can't rebind because definitional 
binding depends on the order of binding operations. So instead the 
context becomes invalid. It's an annoyance, sure, but it is more 
of an understandable side effect of some *extremely* useful features.
GrahamC
15-Nov-2010
[6149]
Do we need an oid type?  For instance this is my OID 1.2.826.0.1.3680043.8.1178.
BrianH
15-Nov-2010
[6150]
What is that used for? And do you do math with it?
GrahamC
15-Nov-2010
[6151x2]
it's like an ip address but it's used for real world objects
http://en.wikipedia.org/wiki/Object_identifier
BrianH
15-Nov-2010
[6153x2]
It sounds like we can use the same approach as with the IPv6 addresses: 
string syntax, binary data.
Datatypes aren't necessary as often as you think.
GrahamC
15-Nov-2010
[6155x2]
and that is?
And yes, you will want to do some math on it
BrianH
15-Nov-2010
[6157]
Is it critical that they get syntax? It looks really ambiguous with 
tuple syntax. It looks like a user-defined datatype would help here, 
as they can do math with the actions but won't get syntax.
GrahamC
15-Nov-2010
[6158]
get syntax?
BrianH
15-Nov-2010
[6159x2]
Be loaded in literal form by LOAD. That is the only advantage of 
a datatype! over a utype!.
The same could be done with IPv6 addresses. But both of those could 
have all of their support functions implemented in a module with 
regular functions and commands in it and you would have the same 
functionality now, before utypes start working.
GrahamC
15-Nov-2010
[6161]
no, don't think it's needed
BrianH
15-Nov-2010
[6162]
So we don't need to do an OID type, but having support for OID would 
be helpful. Good catch :)
GrahamC
15-Nov-2010
[6163x3]
I guess the sort of operations you want to do are to compare oids, 
add leafs etc
Here's a possible example of use.  Carl could be assigned an oid, 
and then he could sub assign an oid from his root to Andreas.  Andreas 
can now uniquely identify each of his builds with an oid as can Carl 
with no overlap.  We can tell from the tree where they lie.
And likewise Henrik can release his own GUI builds with his oid set
BrianH
15-Nov-2010
[6166]
We can do that now with names and usernames. Who uses OIDs?
Andreas
15-Nov-2010
[6167x4]
more or less arcane protocols do :)
like snmp
or x.509, or ldap
and most likely some super complex healthcare standards do, which 
is where graham enters the picture :)
GrahamC
15-Nov-2010
[6171]
yeah ... the CDC uses OIDs for everything now
BrianH
15-Nov-2010
[6172]
So, sounds like a good idea for a community utility module :)
GrahamC
15-Nov-2010
[6173x2]
I had to get an OID for my medical app
so I can report anthrax cases :)
BrianH
15-Nov-2010
[6175]
Are they objectifying you at work, Graham?
GrahamC
15-Nov-2010
[6176]
this is object identifer programming
BrianH
15-Nov-2010
[6177]
Nevermind, bad pun :)
GrahamC
15-Nov-2010
[6178x3]
for instance , Y means yes according to the following code system 
2.16.840.1.113883.12.136
which is in the HL7 directory
If you want a free OID, you can apply for one from IANA http://pen.iana.org/pen/PenApplication.page
Pekr
15-Nov-2010
[6181]
IIRC OID is used for snmp (simple network management protocol), and 
this one is really big and important ...
GrahamC
15-Nov-2010
[6182]
As Andreas mentioned above.  MS also use them and I think might issue 
one to you as well.
GrahamC
16-Nov-2010
[6183]
Is this compatible with R3 http://www.yassl.com/yaSSL/Docs_FLOSS_Exception.html
Maxim
16-Nov-2010
[6184]
I think if used as an extension, it would be.
Ladislav
16-Nov-2010
[6185x7]
You can't have the words in functions lose their bindings once the 
function returns!
 - I demonstrated before that it is false
I am able to bind a block to a function even when the function is 
not running, so pretending that it is impossible is just that: pretending.
FYI: the MAKE function does it natively, and when the function is 
not running
Anybody can pretend whatever he likes to pretend, but I do not understand, 
why a blind faith is required from me.
You can't have the words in functions lose their bindings once the 
function returns

 - aha, sorry, I misunderstood, the fact, that I am not a native speaker 
 applied
What I wanted to demonstrate was, that:

block: [a]
g: closure [a] ['a]
f: func [a] ['a]
; this works
bind block g
; this does not work
bind block f
; but it can be replaced by this, doing what was requested:
change block f


, i.e. there is no reason why the operation should not work, except 
for the fact that somebody does not want me to do it (ineffectively, 
since I demonstrated, that it can be done anyway
Thus, a malicious user can do it, while, for a "good intent" it is 
"dead" because the workaround is slower than the native way
BrianH
16-Nov-2010
[6192]
I'm sure it was all a misunderstanding :)
Ladislav
16-Nov-2010
[6193]
you can't rebind because definitional binding depends on the order 
of binding operations

 - there are at least two things I do not understand in this sentence:

* "you can't rebind" - I am not trying to "rebind" above

* "because definitional binding depends on the order of binding operations" 
- sure it does, does that mean, that the BIND function should not 
work at all?
BrianH
16-Nov-2010
[6194]
It was a misunderstanding. Everything I said derived from something 
you said that sounded like you wanted function words to be unbound 
after the function ends. It is now clear that you don't. Ignore the 
rest.