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

World: r3wp

[!REBOL3]

Geomol
5-May-2011
[8549]
The R2 doc for "get arguments" is here:
http://www.rebol.com/docs/core23/rebolcore-9.html#section-3.3
onetom
5-May-2011
[8550]
thanks a lot. i thought i know the core docs in and out :)
Geomol
5-May-2011
[8551x3]
:) I look in them now and then, as it's easy to forget many of the 
features in the language.
About unevaluated lit arguments (or literal arguments, as Carl call 
them), the functions FOR, FOREACH, REPEAT and maybe more use them 
(I couldn't remember earlier when I posted). And yes, it's more convenient 
to write
	repeat i 10 [...]
than
	repeat 'i 10 [...]


But used in some cases, it's probably easier to create less readable 
code. I can imagine a language, where this is different. About the 
other type of unevaluated arguments (get arguments as Carl call them), 
I haven't found other functions than QUOTE, that use it. There must 
be others!?
there is no LIT-LIT-WORD argument, so, to obtain a lit-word, the 
most natural way is to use: quote 'a

Some thoughts:

So one use of this is to make it easier to e.g. insert a lit-word 
in a block. I come to think of how to insert a block in a block. 
We can't do:

	insert blk [a b c]


as that will insert the 3 words, a, b and c, in blk. So I can write:

	insert blk [[a b c]]
or
	insert/only blk [a b c]


Why not use the same kind of thinking, when dealing with lit-words? 
So I can write:

	insert blk ['a]
or maybe
	insert/only blk 'a


(maybe the refinement should be called something else than /only). 
Now, the rule for INSERT should then be, that if it get a word (the 
lit-word, 'a, will be translated to the the word, a), it should change 
that to a lit-word, if it got the refinement too.


Result is, that unevaluated get arguments can be avoided making the 
REBOL scanner/parser simpler.
BrianH
5-May-2011
[8554x2]
Geomol, if you agree with this model:
>> do quote 'a/i
== a/1
, put your agreement in http://issue.cc/r3/1434where it counts.
As for functions with get-word arguments, the DO dialect used to 
need more of them, but in R3 most of those needs are handled by QUOTE. 
For other dialects though it is much more useful, as it prevents 
evaluation by the DO dialect when it is unwanted. It can be used 
on occasion in security situations if you want to block calculated 
values. Also, it could be used in a statically compilable subset 
of REBOL for the block arguments of all control and loop functions 
like IF and WHILE.
Geomol
5-May-2011
[8556]
No need, Ladislav already put it there. If that's for Carl to read 
through, it's an awful lot of information.
BrianH
5-May-2011
[8557x4]
Consensus adds to the strength of an argument. Chiming in with an 
"I agree with Ladislav" on a potentially controversial issue reduces 
the controversy that might otherwise block it, especially if you 
are sometimes someone who disagrees with Ladislav effectively (which 
is pretty difficult to do).
This has worked very well before with CureCode tickets and such. 
If Carl doesn't have a strong opinion either way, he will wait for 
consensus.
Back to QUOTE and get-word arguments...


We need something like QUOTE, especially for set-*, *-paths, and 
functions, because these block an evaluation that may have side effects, 
or at least cause a value copy. Even if QUOTE is the only function 
with this evaluation model, it depends on DO supporting something 
like get-word argument evaluation in order to work at all. The alternative 
is to make 'quote a keyword in the DO dialect, which decidedly doesn't 
have keywords. So we can't get rid of get-word arguments altogether 
without ridding ourselves of QUOTE, and you'd get a bit of resistence 
from anyone who's used it if you want to do that.
If you want a SECURE 'get-word constraint that you can apply after 
QUOTE is defined, that will block some but not all function hacking 
attempts using function values. The "but not all" part is critical 
though, so we are better off from a security standpoint if developers 
aren't allowed to think of function values as being safe to call 
without precautions, since the consistency of the need for that precaution 
makes it more commonly applied.
Geomol
12-May-2011
[8561]
Is this because string implementation isn't finished?

>> next "abc"
== "^@^

Maybe related to UTF?
Rebolek
12-May-2011
[8562]
This is on OSX? If yes, it's probably this bug http://curecode.org/rebol3/ticket.rsp?id=1870&cursor=1
Geomol
12-May-2011
[8563]
Yes, on OSX. Thanks!
GiuseppeC
12-May-2011
[8564]
Are we still alone ? No news from/about Carl ?
Geomol
12-May-2011
[8565x3]
Carl posted in that bug at 22-Mar-2011.
Carl's latest REBOL blog is dated 28-Mar-2011:
http://www.rebol.com/cgi-bin/blog.r
So seem to be 1 month 2 weeks since last REBOL blip.
GiuseppeC
12-May-2011
[8568x2]
They are all information I have. I monitor those channels.
We are still at buil A111
Geomol
12-May-2011
[8570]
Yes, and I don't put my expectations up. But I feel, people are hard 
at work with alternatives to REBOL.
GiuseppeC
12-May-2011
[8571]
RED...
Geomol
12-May-2011
[8572]
That's one, yes.
GiuseppeC
12-May-2011
[8573x2]
It is great but a Waste of time. If only REBOL was open sorced DOC 
could put his offorts on it.
Insteda we are reinventing the wheel
Geomol
12-May-2011
[8575x3]
If the first wheel can't run, reinvension can be a good thing.
Think "reinvention" is with a t.
Also with all other languages, you have more than one implementation. 
I don't think, all those are waste of time. How many different C 
compilers have been made over the years?
Kaj
12-May-2011
[8578x2]
One of the nice things about Red is that it's not really the new 
wheel, but quite different
Still, I wonder why people object so strongly against new wheels. 
Do you employ wooden donkey cart wheels on your electric automobile?
Geomol
12-May-2011
[8580]
Yeah, there might come many new great developments from some of the 
REBOL ideas. Some of them will be very much like REBOL, but others 
will be something new.
Kaj
12-May-2011
[8581]
Like all good operating systems are strongly inspired by Amiga
Henrik
12-May-2011
[8582]
Red, I think, could complement R3 quite well.
TomBon
12-May-2011
[8583]
would it be possible (in general) to encapsulate the whole R2/3 GUI 
functionality incl. antigrain etc. into a lib, usable for other languages 

 as a out of the box GUI generator? communication & event handling 
 e.g. via TCP?
Kaj
12-May-2011
[8584x2]
R3 is that lib
However, it still fails to be as easy to integrate as for example 
a 0MQ library
amacleod
12-May-2011
[8586]
I've been out of the loop here the last few months but it seems like 
R3 is stalled again. And I do not see any signs of Carl. What's the 
overall status here?
Maxim
12-May-2011
[8587]
there has been a lot of work going on with a few R3 projects.  a 
few extensions, the gui, etc.

there has also been quite a bit of work done on Red.
Robert
13-May-2011
[8588]
Any HAM-Radio guys here? Maybe this is the best channel to get in 
contact with Carl.
onetom
13-May-2011
[8589]
:D
Pekr
13-May-2011
[8590]
My brother did it in the past, but sold the equipment. I really wonder, 
what are Carl's thoughts, as even my dog understands, that REBOL 
situation is in deep .... :-)
Geomol
13-May-2011
[8591]
I notice ++ and --, which was discussed here:
http://www.rebol.net/cgi-bin/r3blog.r?view=0057#comments

Would it be ok to let NEXT and BACK do the job, like this:

next: func [series] [
	either word? series [
		set series system/contexts/lib/next get series
	][
		system/contexts/lib/next series
	]
]

Examples of use:

>> blk: [a b c]
== [a b c]
>> next blk
== [b c]
>> blk
== [a b c]
>> next 'blk
== [b c]
>> blk
== [b c]
Maxim
13-May-2011
[8592]
it would break a lot of code, and in fact, I prefer it like it is. 
  


this being said, if we have ++/--, then I expect *these* to work 
as you just depicted
Geomol
13-May-2011
[8593]
WIll it break code? Hmm, what kind of code?
Maxim
13-May-2011
[8594]
all of my code  ;-)
Geomol
13-May-2011
[8595x2]
I don't see how. Notice, NEXT in my example works just like today 
with all arguments beside words, which gives an error today.
The first part of my examples above use the new NEXT just like the 
old NEXT, we have today.
Maxim
13-May-2011
[8597]
ahhh.. I just re-read your code... and was bitten by the lit-word 
evaluation again.

I didn't realize that:

either word? series [

triggers when you give a lit-word.

in this case, you are right.


except in implementation.   words carry their binding, you don't 
need (in fact shoudn't) acess it via system   

set word next get word

should be enough.
Geomol
13-May-2011
[8598]
If just using NEXT instead of full path, R3 will create a stack overflow. 
The function is called NEXT, you know! ;)

But anyway, this should be changed in the native.