World: r4wp
[!REBOL3] General discussion about REBOL 3
older newer | first last |
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 |
older newer | first last |