• Home
  • Script library
  • AltME Archive
  • Mailing list
  • Articles Index
  • Site search
 

World: r4wp

[!REBOL3] General discussion about REBOL 3

Marco
16-Mar-2013
[2110]
on Rebol 2.7.8.3.1 :
>> do [cfor [num: 0] [num <= 3] [num: num + 1] [num]]
** ERROR: ret has no value 
** Near: :ret
BrianH
16-Mar-2013
[2111x4]
Wait, R3 rules, :ret is get/any 'ret in R3. Change it to run in R2.
Why are you testing this in R2? It's written for R3.
I would have to change it for R2/Forward.
In R3:

>> cfor [num: 0] [num <= 3] [num: num + 1] [num]
== 3
>> unset? cfor [num: 0] [num <= 3] [num: num + 1] []
== true
Marco
16-Mar-2013
[2115]
Better to test it in R2 then to not test it at all. (By the way on 
R2 mine is a little faster).
I changed :ret to get/any 'ret and it works but in R3 :
>> do [cfor [num: 0] [num <= 3] [num: num + 1] [num]] ; works?


and why is it important to keep the local binding ?(I am not an expert 
of binding)
BrianH
16-Mar-2013
[2116x3]
Yours is faster because it doesn't do the binding. That binding is 
necessary.
The entire difference between CFOR and WHILE is that local binding. 
If you didn't need the local binding you should use WHILE.
Benefits to the local binding:

- You define new words that go away when the function ends, *if you 
want them to*

- The context created is an object context, which makes word lookup 
faster (O(1) instead of O(n))

- The context created can be references safely after the function 
ends

- All series in the loop body are copied, which makes them safe to 
modify during and after the loop, making binding loops even more 
task and recursion safe than non-binding loops.
Gregg
16-Mar-2013
[2119x3]
Sunanda, agreed on not export complexity. Words are supported directly, 
and we can look at making everything easy that it should support. 
Today, words are supported. e.g.:

a: 1
b: 5
loop [i a b 1] [print i]


Series values, as in your first bug report, are the thing I have 
to look into. Beyond that, should it just evaluate everything it 
gets?


Marco, FOR-STEP sounds too close to FORSKIP to me. Have to think 
about how FORSKIP fits in to the model. For that, and IN-RANGE, the 
main question is what their purpose is. On your first CFOR tests, 
I get these results:

>> probe cfor [num: 1] [num <= 3] [num: num + 1] [print num "a"]
1
2
3
4
== 4

>> probe cfor [num: 1] [num <= 3] [num: num + 1] [if num = 2 [throw 
make error! "what 2?"] "a"]
** Throw Error: ** User Error: what 2?
** Near: throw make error! "what 2?"
Brian, on efficiency, LOOP (right now) just does this at the top:

  either integer? spec [native-loop spec body] [...


So that's all the overhead there is to delegate to the native loop.
But, yes, the interface is the idea here. The current implementation 
is just to test that out.
Marco
17-Mar-2013
[2122]
@Gregg: >> probe cfor [num: 1] [num <= 3] [num: num + 1] [print num 
"a"]

for me it should print: 1 2 3 and give "a" as the result (as it does 
#884 NOW ;) )
Gregg
17-Mar-2013
[2123x3]
Ah, yes. Thanks Marco.
I will let Ladislav correct me where I'm wrong, but it may just be 
due to him trying to keep CFOR simple. That is, it inserts the bump/incr 
block at the tail of the body, but doesn't want to return the result 
of that, so it returns the head instead, but what it should return 
is the result of the original body tail.
More clearly, it should return the last thing evaluated in the original 
body.
MaxV
19-Mar-2013
[2126]
Can anyone solve the following bug  https://github.com/angerangel/r3bazaar/issues/3
?
MarcS
19-Mar-2013
[2127x2]
q
Proposed fix for cc#1967, https://github.com/rebol/r3/pull/106
Gregg
19-Mar-2013
[2129x2]
@BrianH, when you say "And any loop construct that requires any kind 
of manual reducing of its arguments in order to have it take the 
result of an expression is a definite no-go.", does "manual reducing" 
mean having the user do it? e.g., if I get a spec passed to my dialected 
LOOP func, and I REDUCE it or DO/NEXT internally, is that a no-go? 
If so, where should I look for the reasons and guidelines about it?
e.g., in order to support Sunanda's example:

    loop [i ser skip ser 5 2] [print mold i]

Can I do this in my func:

    spec: repend reduce [spec/1] next spec
MarcS
21-Mar-2013
[2131x7]
Provisional SHA-2 implementation, https://github.com/0branch/r3/commits/sha2-experimental
I haven't committed an updated Makefile, so even if you're on Linux 
be sure to 'make make' first.
Tested on Linux and OSX, interested in hearing whether it functions 
correctly on Windows.
Usage,
>> checksum/method to-binary "A simple SHA-2 test." 'sha256

== #{E57EBDB51368F9A7ACE63E115193AEAD5E377742E0B4CD6B735CF5AAD49E67EB}
SHA2_Series could switch on width (224, 256, ... -- perhaps defined 
in an enum) rather than a symbol, but this made the logic in N_checksum 
cleaner.
Anyway, this is just a draft.
Ladislav
21-Mar-2013
[2138]
Thanks for your activity, Marc much appreciated.
MarcS
21-Mar-2013
[2139]
No problem; thanks for saying so.
Ladislav
21-Mar-2013
[2140x2]
Arnold wrote (Red group): "R3 should follow this. " - I guess it 
might make sense to write it as a CC ticket (wish). Otherwise, I 
am neutral on this, not needing a shortcut for quit, but a user poll 
(opinions, please?) my reveal that preferences are against Q being 
a shortcut for QUIT.
Also, Marc, I think you can use Announce for your new pull requests. 
(but they can be here too, no problem)
MarcS
21-Mar-2013
[2142]
Oh, sure; sorry if I've been misusing this room.
Ladislav
21-Mar-2013
[2143]
No, you have not, in fact (at least IMO).
Cyphre
21-Mar-2013
[2144]
MarcS: cool stuff! I planned to add SHA256 myself to enhance TLS 
scheme so your work will be useful, thanks!
MarcS
21-Mar-2013
[2145]
Neat, glad to hear it. Again, this is just a test; feedback appreciated.
Gregg
21-Mar-2013
[2146]
I use q in the console a lot.
Maxim
21-Mar-2013
[2147]
q should not be set by default.  anyone can add shortcuts for such 
stuff easily in their %user.r   

maybe we could even add a function which define all the "command-line" 
shortcuts, thus allowing them to be undefined by default.
NickA
21-Mar-2013
[2148]
@MarcS:  I'll try sha256 with Amazon AWS - very helpful, thank you!
Endo
22-Mar-2013
[2149]
Q is not necessary in scripts but it is very useful on console.
Ladislav
23-Mar-2013
[2150]
Continuing the discussion from "Rebol School". What if we changed 
(simplified) R3 functions to have O(1) variable access? I have got 
an idea how to do it sacrificing some of the features. That should 
not be painful taking into account that closures are available.
Gregg
23-Mar-2013
[2151x2]
I think we should consider this heavily. Ladislav's points, and Brian's 
analysis in http://issue.cc/r3/1946make it clear that we need to 
understand the differences, and that we can probably get a large 
gain with very small tradeoffs.
The average user shouldn't know. R2 users will need to know about 
behavior differences, but I think the long term benefits are worth 
the small pain it may cause.
MaxV
25-Mar-2013
[2153]
Hello, here you can find a user that have difficulties to build Rebol3 
on Solaris, please mayyou help him?

http://rebol.informe.com/forum/rebol-3-f9/building-rebol-r3-on-solaris-t40.html
Ladislav
25-Mar-2013
[2154x2]
tell him he shall use r3 for r3-make, not R2 (but, maybe, r2-forward 
would help? )
otherwise, he could probably make make on a different machine, where 
he can get an r3 interpreter
Cyphre
26-Mar-2013
[2156]
Important message for all R3 graphics fans:


I have finished IMAGE datatype(including all image codecs and other 
related code) change so it uses 'standard' alphachannel values (ie. 
0-trasparent 255-opaque)to be compatible with the 'rest of world'.

Without this change we would have problems to connect r3 with graphics 
systems on misc platforms/graphics frameworks etc.

This change will be in the upcoming revised R3 graphics code which 
is being worked on. So that is just FYI to avoid any duplicated efforts(in 
case you wanted to work on that in the feature).
Pekr
26-Mar-2013
[2157]
Cool news ideed!
Endo
26-Mar-2013
[2158]
Cool!! Great work Cyphre!
Henrik
26-Mar-2013
[2159]
cool :-)