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

World: r3wp

[Core] Discuss core issues

Steeve
21-Dec-2008
[11817]
seems there is more indirect links between an object and his properties
[unknown: 5]
21-Dec-2008
[11818x2]
But it is checking values.
Self has to be evaluated in that sense to see what value it is in 
each context.
Steeve
21-Dec-2008
[11820x2]
i don't think it's checking values, we have the proof now
2 distinct objects, so that same values in the same memory location 
are not taking in account
[unknown: 5]
21-Dec-2008
[11822]
The description of same? is this:

Returns TRUE if the values are identical.


if it isn't checking values in each context then how do you believe 
it would be checking the values?
Steeve
21-Dec-2008
[11823]
identical means the inner pointers (in memory) are the same
[unknown: 5]
21-Dec-2008
[11824]
I'm not sure how you can see that the self of one could be the same 
value as a self of another?
Steeve
21-Dec-2008
[11825]
in R3 they do
[unknown: 5]
21-Dec-2008
[11826]
I thought we were talking about R2. Sorry I got confused.  I don't 
know regarding R3.  That indeed could be the case.
Steeve
21-Dec-2008
[11827x2]
i said previously that in R3 (comparing to R2) the bind? function 
returns the same object, not a different one.
i used the first alpha release
[unknown: 5]
21-Dec-2008
[11829]
I'll yield to those that have used the Alpha a bit more as I really 
couldn't speculate at this point even.
Anton
21-Dec-2008
[11830x2]
Steeve, it does look odd, like a bug.
These are ok.
>> same? o do bind [self] o
== true
>> same? o do bind [self] in o 'b
== true
[unknown: 5]
21-Dec-2008
[11832]
If you think it is a bug Anton, then you should report it to Rambo 
assuming your talking about R2.
Anton
21-Dec-2008
[11833]
I leave this honour to Steeve. :)
Steeve
21-Dec-2008
[11834]
boring...
Anton
21-Dec-2008
[11835]
There are no tickets that match a search for "bind?" in Rambo.
Steeve
21-Dec-2008
[11836]
so you are the one who will fill the hole ;-)
Anton
21-Dec-2008
[11837]
Aha! I like your style of humour! :)
Steeve
21-Dec-2008
[11838]
especialy when we know that the word humour has a greek root  meaning 
FLUID
Gabriele
22-Dec-2008
[11839x2]
Steeve, o and the result of bind? are the same context but not the 
same object. this is an implementation detail of R2.
I do not think this is a bug, and it may not be trivial to fix it 
if it was (which means, it'll never get fixed as Carl is not going 
to spend that much time on R2 for something not important)
Steeve
22-Dec-2008
[11841]
i agree Gab, for me, it's not a bug but a functionnality
Anton
22-Dec-2008
[11842]
What use does it have ?
Steeve
22-Dec-2008
[11843x5]
none for the moment... ;-)
i
in R3 it would be usefull combined with the ability to expand an 
object
it would be something like an inheritance link
a dynamic one
[unknown: 5]
22-Dec-2008
[11848]
Sure it does - it allows Gabriele's function to work.
Steeve
22-Dec-2008
[11849]
don't think it's related
Steeve
23-Dec-2008
[11850x3]
Gabriele's func would work without this
be
besides in R3, the bind? func doen't return a cloned object anymore
Gabriele
23-Dec-2008
[11853]
Anton, it's not that it has any use, it's that there is no "object" 
internally, just a "context", and the bind? function creates an "object" 
for the "context" so that it can return it (there is no way to access 
a context directly). bind? does not know whether the context is already 
referenced by an existing object or not, nor has any way to get to 
any such existing objects, so it just always creates a new one.
Anton
23-Dec-2008
[11854]
Ahh that makes sense. So yes, an implementation detail of R2.
Geomol
23-Dec-2008
[11855x2]
Has anyone noticed a max length for filenames giving to EXISTS? under 
Windows? I get a false reply, if the length of the full path is more 
than some 54 characters.
Ah, my bad. It works! I had my dir in another place. doh! ;-)
Geomol
25-Dec-2008
[11857]
When using local blocks in functions, that is called many times, 
I often define them as:

my-block: clear []

instead of

my-block: copy []


The idea is to reuse the block (the memory area), so the garbage 
collection has less to do. Could there be any drawback in this?
Henrik
25-Dec-2008
[11858]
I do the same thing, so I would be interested in hearing about draw 
backs. But it may also be important to specify the size of the block, 
when it's first created. That gives the garbage collector even less 
to do.
[unknown: 5]
25-Dec-2008
[11859x8]
Yeah, you don't want to do that.  Because with each loop that evaluates 
the command you actually recreating the pointer.  Instead do this:

my-block: []
...
clear my-block
This way your doing less evaluation.
However, it allows you to be more flexible and possibly save some 
evaluation depending on how you implement it.
Let me give some examples.
Example 1
>> stats/evals/clear
== [1 1 1]
>> my-block: []
== []
>> loop 100 [insert my-block "somedata" clear my-block]
== []
>> stats/evals
== [506 202 103]

Example 2
>> stats/evals/clear
== [507 203 104]
>> loop 100 [my-block: clear [] insert my-block "somedata"]
== []
>> stats/evals
== [604 202 102]

Example 3
>> stats/evals/clear
== [605 203 103]
>>
>> loop 100 [insert my-block: clear [] "somedata"]
== []
>> stats/evals
== [504 202 102]
Notice that example1 is more efficient than example 2.  However, 
Example 3 takes the flexibility of setting my-block to a cleared 
block and actually is more efficient than example 1.
So unless your gonna utilize that method as in Example 3 then your 
better off with Example 1.
Am I missing something or should this function be like an operator 
or something?:

family?: func [arg1 arg2][
    if equal? type? arg1 type? arg2 [return true]
    false
]


Maybe convert >< into op! that performs that task.  Maybe there is 
another function I overlooked.