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

World: r4wp

[!REBOL3] General discussion about REBOL 3

BrianH
7-Feb-2013
[1001x3]
Basically, it allows you to do exactly what DO function allows, since 
it basically *is* DO function.
And, it does break through the APPLY security trick, which I might 
want to review some code about. I think that needs a ticket.
>> apply does [return/redo :add] [1 1] 1 1
== 2
Sorry, this is a better illustration:
>> apply does [return/redo :add] [] 1 1
== 2


If you were using APPLY to protect your code from get-word hacks, 
you're SOL. There's no point in removing the /redo option because 
the same trick could be done with native functions. We just need 
to fix APPLY so it does its /redo to the arguments it takes.
BrianH
8-Feb-2013
[1004x3]
Warning, check your code, http://issue.cc/r3/1763is coming! Make 
sure that SET block! block! uses SET/any when that is what you mean.
Also SET object! block!, since it has the same bug.
If you have any code that uses SET block! block! or SET object! block!, 
and the values block might possibly have unset values in it, then 
*your code is buggy*. If you want the unset values to be assigned, 
you should be using SET/any. If you want the unset values to trigger 
errors (a fair assumption, since you're using SET instead of SET/any), 
those errors are currently *not* being triggered because of a bug 
in R3. Either way, check your code.
GrahamC
8-Feb-2013
[1007]
Buggy until this is fixed?
BrianH
8-Feb-2013
[1008x2]
If you're using SET block! block! or SET object! block! in cases 
where you can get unset values and are expecting errors to be triggered, 
then your code is buggy until this is fixed. If you are expecting 
it to *not* trigger errors, then your code will be buggy until you 
change to using SET/any - it's just accidentally working until this 
is fixed, and then will properly not work after it is fixed.
I was always using SET/any in those cases, not knowing about the 
bug. I still use SET/any in those cases, so my code will continue 
to be correct after the bug is fixed.
AdrianS
11-Feb-2013
[1010]
has much changed wrt bind for Rebol 3? I see, for example that this 
line (under 'Variables') in the Bindology section on rebol.net returns 
true whereas it used to return false with R2. Is that article 

variable? /rebol

Just a bit lower this:

o: make object! [a: none]
o-context: bind? in o 'a
same? o o-context ; == false -> now returns true

Is there an R3 specific explanation of binding?
Ladislav
11-Feb-2013
[1011]
Adrian, I wrote the Bindology article. There are differences in the 
behaviour as you noticed, some of them are quite minor (like the 
latter you mentioned), some may have a more noticeable effect. In 
the future, some revision of the article to adjust it for R3 will 
be needed.
AdrianS
11-Feb-2013
[1012]
So there's no short list (i.e. not something that goes into the kind 
of detail Bindology covers) of documented changes? In the meantime 
I asked this on StackOverflow:

http://stackoverflow.com/questions/14818324/is-there-a-summary-of-the-differences-in-binding-behaviour-between-rebol-2-and-3
BrianH
11-Feb-2013
[1013]
Answered. There's still no short list - it had to be a long answer 
:)
BrianH
14-Feb-2013
[1014]
Question about DO binary here: http://issue.cc/r3/1952
Rebolek
16-Feb-2013
[1015]
There's a bug in SAVE/HEADER when using Unicode characters in header. 
See http://issue.cc/r3/1953
BrianH
16-Feb-2013
[1016]
Not exactly. Instead, SAVE/header is getting caught by a really obscure 
INSERT bug.
Rebolek
17-Feb-2013
[1017]
Ah, I thought you can't insert string directly into binary.
Ladislav
17-Feb-2013
[1018]
can somebody write an example of REWORD usage?
Rebolek
17-Feb-2013
[1019]
>> reword "$1 is $2." [1 "This" 2 "that"]
== "This is that."
Ladislav
17-Feb-2013
[1020]
Thanks
BrianH
17-Feb-2013
[1021x3]
It can do more than that, but that's the basics. And you can have 
words as well, not just numbers.
If you are writing tests, there are a few things you should know 
about the behavior-as-designed of REWORD:

- values is a collection of key/value pairs, like a map. If a block, 
no reduce is done, it's just data.

- Keys are converted to strings if they aren't strings already, and 
are considered equivalent if their strings are equivalent.

- Empty strings don't count, but the check for empty keys is done 
after the string conversion so none is not empty, it's "none".
- If a value is unset or none, the key/value pair is ignored.

- If the same key is specified more than once, the last value of 
that key takes precedence.

- After all of the key/value conflicts are resolved, if there are 
ambiguities between keys (like "ab" vs. "a") then the first key gets 
priority. That means that you probably want to put the longer key 
first, same as with PARSE alternates.


If we're writing tests, we need to write tests for all of those. 
And we probably need tests because it was intended that REWORD be 
converted to a native for speed after we settled on its behavior. 
The current REWORD works as designed, but we might want to tweak 
the design after further discussion.
Oh, and if a value is a function, that function will be called every 
time with an argument of the string at the position of the escape. 
We need to test for that too. This makes *really* flexible replacement 
possible.
AdrianS
17-Feb-2013
[1024]
Just for this, Brian.

http://stackoverflow.com/questions/14924801/what-considerations-should-be-made-when-using-reword-in-rebol
BrianH
17-Feb-2013
[1025]
Damn. Now I have to answer that :-/
AdrianS
17-Feb-2013
[1026x2]
heh
just cut and past - almost
BrianH
17-Feb-2013
[1028]
And edit, because SO is much better for this kind of thing. And maybe 
provide a little context for why the function exists at all.
AdrianS
17-Feb-2013
[1029]
Hey, you downvoted it because of that?
BrianH
17-Feb-2013
[1030]
It's a timing thing. I have other things to do for the next several 
days. This is one more thing.
AdrianS
17-Feb-2013
[1031x2]
And that calls for a downvote? Well, that's a great incentive to 
ask questions.
There's no hurry to have to answer is there?
BrianH
17-Feb-2013
[1033]
One of the problems of SO (generally, not in this case I hope) is 
that the asker chooses which answer is the accepted one, not someone 
who knows enough about the situation to know which answer is better. 
So I tend to try to work around this social bug by answering earlier 
to discourage less-informed people from trying to answer badly. In 
this case, I have to answer because I'm the one who designed and 
wrote the function, at Carl's request.
Andreas
17-Feb-2013
[1034]
AdrianS: I don't think BrianH downvoted your question. But whoever 
did (I didn't either) probably has a point, as it's a very broad 
and open question. SO generally prefers more specific questions based 
on actual problems, so that it's reasonably clear when an answer 
is practical.
AdrianS
17-Feb-2013
[1035x3]
sure, Fork pointed out the same thing
it was just an attempt to capture what Brian had just posted here.
Maybe the question could be re-worded to make it less of lame Jeopardy-like 
'question'.
BrianH
17-Feb-2013
[1038]
I didn't downvote it, and I might have enough reputation to rewrite 
it so it's a better question. Or request that Fork does, because 
he certainly does.
AdrianS
17-Feb-2013
[1039]
If you can't re-write it, let me know how you'd prefer the question.
BrianH
17-Feb-2013
[1040]
I'm working on the answer. Once it's done, we'll know the question. 
Yes, SO is a lot like Jeopardy :)
AdrianS
17-Feb-2013
[1041x2]
From now on, I'll have to be careful in asking question where you're 
the intended answerer since you go overboard in the details. It might 
makes sense in some cases to just put a summary and leave a note 
that there's more to be said somewhere down the road.
Crap, I hate not being able to edit what I just posted. Used to being 
sloppy on the SO chat. I see that I managed two typos above...
BrianH
17-Feb-2013
[1043x3]
Well, we've been encouraged lately to put these up, and we can point 
other pages to SO if need be, or copy the answers to a documentation 
page when we have those. I mostly see it as a place to write short 
documentary articles in a Q&A format, much like Yahoo answers is 
a place to write jokes in Q&A format.
If it were Cracked, I'd be writing numbered lists instead :)
Answered. So, how do we phrase the question?
AdrianS
17-Feb-2013
[1046x2]
It should be something that captures a wider range of searches, for 
example on general purpose template expansion, resolving prepared 
statements, etc.
Even if some of this is not incorporated into the question, it should 
at least be tagged with the appropriate keywords.
Rebolek
22-Feb-2013
[1048]
What are the steps for compiling r3 under Windows using MinGW? Is 
there some documentation I can use?
Ladislav
22-Feb-2013
[1049]
You need MSYS in addition to MinGW
Cyphre
22-Feb-2013
[1050]
yes, the problem is MINGW is using own 'custom' version of MAKE called 
"mingw32-make.exe" which doesn't behave well on the R3 makefile (at 
least from my experience).
So my Windows setup is:
-I installed CodeBlocks with MINGW support

-then I installed MSYS and extracted only 'necessary' files from 
MSYS/bin folder and put it into CodeBlocks\msys\bin\ folder
-then I deleted the MSYS instalation to not have bloat on my disk

-I set paths to CodeBlocks\MinGW\bin CodeBlocks\msys\bin in the WIndows 
console

-from now I can  just type MAKE ALL in the CMD console and R3 builds 
fine


Just in case here is the list of "necessary" MSYS/bin files I extracted 
(around 3MB of data):

cp.exe
make.exe
mkdir.exe
msys-1.0.dll
msys-iconv-2.dll
msys-intl-8.dll
msys-regex-1.dll
msys-termcap-0.dll
rm.exe
rmdir.exe
sh.exe