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

World: r3wp

[!REBOL3]

Henrik
22-Jul-2010
[4032]
In fact, I suggested SINGLE? (see R3 chat #4330) and Carl took it 
up immediately. I use SINGLE? a lot.
Maxim
22-Jul-2010
[4033]
not saying single be removed... its just like   empty? and tail? 
  they have different semantic meanings, but in rebol are equal in 
implementation.
BrianH
22-Jul-2010
[4034x2]
...more or less :)
Good suggestion, Henrik :)
Maxim
22-Jul-2010
[4036x2]
as I stated in the ticket, 'LAST? should be none tolerant, whereas 
'SINGLE?  could stay strict as it is.
hum...  I thought ordinal functions had become none safe in R3?

>> first none
** Script error: cannot use pick on none! value
** Where: first
** Near: first none

(this is in A96)
BrianH
22-Jul-2010
[4038]
No, they are bounds safe. We want FIRST none to trigger an error.
Ladislav
26-Jul-2010
[4039]
Originally I thought, that the FUNCT function was quite adventurous 
doing a deep search for set-words. But, after using it a couple of 
times, it really looks like it does what is useful most of the time.
Graham
26-Jul-2010
[4040]
saves time ..
Henrik
26-Jul-2010
[4041]
FUNCT is very nice. I love it.
Graham
26-Jul-2010
[4042]
I wonder if we can do the same for use ... uset
Henrik
26-Jul-2010
[4043]
CONTEXT would be close.
Endo
26-Jul-2010
[4044]
@Graham: context [...] is not enough?
Graham
26-Jul-2010
[4045x2]
Hmm.. could work :)
so what advantage is there for  use [ ] [ ... ] as opposed to context 
[ ] ?
Endo
26-Jul-2010
[4047]
use doesn't return an object, so its overhead is less I guess.
Henrik
26-Jul-2010
[4048]
and you can specify a list of words, thus being entirely independent 
of the code inside.
Endo
26-Jul-2010
[4049x2]
So, you can define a global variable without using set 'xxx = yyy.
Here is my benchmarks:

benchmark [use [a b c d] [a: 1 b: "xyz" c: 3 d: a * c]] ; == 0:00:01.094
benchmark [context [a: 1 b: "xyz" c: 3 d: a * c]] ; ==0:00:01.484
my benchmark function runs the block 1.000.000 times.
Henrik
26-Jul-2010
[4051]
interesting
Endo
26-Jul-2010
[4052]
benchmark: func [b][s: now/precise loop 1000000 [do b] difference 
now/precise s]
Graham
26-Jul-2010
[4053x2]
miniscule difference
I should use this for my web pages ...
sqlab
26-Jul-2010
[4055]
I get different results
>> benchmark [context [a: 1 b: "xyz" c: 3 d: a * c]]
== 0:00:01.455
>> benchmark [use [a b c d] [a: 1 b: "xyz" c: 3 d: a * c]]
== 0:00:03.753
Endo
26-Jul-2010
[4056x2]
strange..
>>  benchmark [context [a: 1 b: "xyz" c: 3 d: a * c]]
== 0:00:01.468
>> benchmark [context [a: 1 b: "xyz" c: 3 d: a * c]]
== 0:00:01.469
>> benchmark [context [a: 1 b: "xyz" c: 3 d: a * c]]
== 0:00:01.469
>> benchmark [context [a: 1 b: "xyz" c: 3 d: a * c]]
== 0:00:01.5
>> benchmark [use [a b c d] [a: 1 b: "xyz" c: 3 d: a * c]]
== 0:00:01.093
>> benchmark [use [a b c d] [a: 1 b: "xyz" c: 3 d: a * c]]
== 0:00:01.094
>> benchmark [use [a b c d] [a: 1 b: "xyz" c: 3 d: a * c]]
== 0:00:01.094
>> benchmark [use [a b c d] [a: 1 b: "xyz" c: 3 d: a * c]]
== 0:00:01.094
@sqlab: try to bigger value.
sqlab
26-Jul-2010
[4058]
>> benchmark [context [a: 1 b: "xyzdddddddd" c: 3 d: a * c]]
== 0:00:14.423


>> benchmark [use [a b c d] [a: 1 b: "xyzdddddddd" c: 3 d: a * c]]
== 0:00:37.302
Endo
26-Jul-2010
[4059]
very strange.. I guess it's because of OS, hardware etc.
>> benchmark [context [a: 1 b: "xyz" c: 3 d: a * c]]
== 0:00:15.048
>> benchmark [use [a b c d] [a: 1 b: "xyz" c: 3 d: a * c]]
== 0:00:11.11
for 10.000.000 times.
Ladislav
26-Jul-2010
[4060]
Endo, the thing is much simpler than that. I bet, that you are using 
R2
Endo
26-Jul-2010
[4061]
ofcourse :)
Ladislav
26-Jul-2010
[4062]
then, read the name of this group
sqlab
26-Jul-2010
[4063]
That explains it.
Endo
26-Jul-2010
[4064x2]
oh, yes, sorry, I just wanted to reply Grahams question..
so, use and context are really different in R3.
BrianH
26-Jul-2010
[4066x2]
USE is a wrapper around a closure!. CONTEXT creates an object. Very 
different.
USE is mezzanine in R3 - source it.
Endo
26-Jul-2010
[4068]
Sure, I would think that USE would be faster than CONTEXT (as in 
R2) but it is not.
BrianH
26-Jul-2010
[4069x3]
USE is just a helper function in R3. We use modules as the primary 
structuring model now.
Or objects.
Now if you created the closure yourself ahead of time, instead of 
creating a new closure every time (as USE does) then it would be 
faster.
Oldes
26-Jul-2010
[4072]
Can you show how?
BrianH
26-Jul-2010
[4073]
blah: closure [a b c d] [a: 1 b: "xyzdddddddd" c: 3 d: a * c]
benchmark [apply :blah []]
RobertS
26-Jul-2010
[4074x3]
HTML of new R3 doc pages has similar problems on most pages due to 
no urlencode of ampersand in urls and invald <th> declarations using 
old <tr> attrib values for vertical-align in a <th> element.  I would 
gladly fix ad hoc and you can fix your page gen tools (?) later
test: 42 ;  test:none  ;  comment { test remains 42 but no error 
unlike, say, simple undefined  testnone   That missing space looks 
nasty when test:none should have been    test: none           Is 
this a bug in R3?    test:none does not return none but instead returns 
  test:none
>> test: 42
== 42
>> test:none
== test:none
>> testnone
** Script error: testnone has no value
Oldes
26-Jul-2010
[4077x2]
that's a bug:
>> test:none: 1
== 1

>> test:none
== test:none
And it's bug in R2 as well.
Endo
26-Jul-2010
[4079]
I don't think it is a bug, test:none: is a url.
>> test:none: print "x"
== x

if it would a set-word then it should give an error like "test:none 
needs a value"
x: print "a"; == x needs a value
>> ? test:none:
== test:none: is an url
Oldes
26-Jul-2010
[4080]
probably you are right.. maybe it's for cases like>  mailto:[carl-:-rebol-:-xxx] 
 <not very useful imho :)
RobertS
26-Jul-2010
[4081]
a tolerated bug in R2 becomes a revered feature in R3, no?   If that 
is not a bug, then I may be the pope.  Or is it "the caprice of the 
colon", otherwise known as 'the big C" ?  You must excuse me, Jon 
Stwarrt just explained that science is faith and I am still in awe.