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

World: r3wp

[!REBOL3-OLD1]

Geomol
17-Nov-2009
[19693]
I could of course use == instead of =, and then none of the above 
tests would be true. The reason I find the behaviour strange might 
be the way, PRINT output the numbers.
Ladislav
17-Nov-2009
[19694]
Geomol: you did not read the decimal! documentation. The fact, that 
(print i) prints 5.99999999999999 does not mean you know what I is.
Geomol
17-Nov-2009
[19695]
I probably read it and forgot. I'll read it again. :-)
Ladislav
17-Nov-2009
[19696x2]
after a slight modification I get:


for i 4.0 6.0 0.1 [print i if i = 6.0 [print [mold/all i "= 6.0"]]]
5.9999999999999929 = 6.0
doesn't it look different now?
Geomol
17-Nov-2009
[19698]
I'm questioning the "nearness" in equal. Another example:

>> 0.1 + 0.1 + 0.1 = 0.3
== true
>> 0.1 + 0.1 + 0.1 - 0.3 = 0.0
== false


STRICT-EQUAL returns false for both of these. Is the "nearness" a 
good thing to have from a language design point of view?
Ladislav
17-Nov-2009
[19699]
nearness

 is not equality, it is just symmetric and reflexive (no transitivity)
Geomol
17-Nov-2009
[19700]
I just came across this yet again, when I was preparing scientific 
data using R2. I can deal with it fairly easily in R2 by using money! 
datatype with the FOR function.
Ladislav
17-Nov-2009
[19701]
money! datatype in R2? What is the advantage, when you ignore the 
ability to express the denomination?
Geomol
17-Nov-2009
[19702x2]
I got all the decimals after a while with this:

for a 4.0 5.9 0.1 [print a]

so I changed it to:

for ma $4.0 $5.9 0.1 [a: load next form ma print a]
I'm not sure, why it isn't allowed to write this in R2:

to decimal! $4.0

Maybe just missed. It's fixed in R3.
Paul
17-Nov-2009
[19704x2]
I'm actually messing around with REBOL (actually R2) and been away 
from it so long I forgot a lot of stuff.  Anyway, was wondering how 
R3 is progressing.  I was just using parse and thought about rejoin. 
 For example, if we can parse something such as:

blk: parse "this, simple, csv, string" "," 


wouldn't it be cool to just come back along and rebuild it with something 
such as:

rejoin/csv blk ","
or have any deliminater you specify.
BrianH
17-Nov-2009
[19706x2]
Geomol: "FOR doesn't allow money! as its start argument in R3. It 
does in R2." - Write it up as a wish in CureCode please :)
Paul, that function has been proposed as DELIMIT - not as REJOIN 
because that function needs to be low-level - but hasn't been added 
yet since there is no consensus about the feature set. No consensus 
means it goes in the library rather than the mezzanines. If you can 
make a version that is so awesome that everyone will agree with your 
feature set, we'll add it :)
Pekr
18-Nov-2009
[19708x2]
I don't agree with such fundamental functionality of R2 to go into 
some optional library. Better to have some standard, than not. The 
same goes for easy read/lines equivalence. Dunno how current read/as 
turns out, if it will end-up as separate read-text or so, but we 
need easy way of having R2 analogy here. Those working with CSV data 
on a daily basis will greatly miss such features ....
hmm, there is a 'delimit function ... it seems to be renamed to 'split 
....
Chris
18-Nov-2009
[19710x2]
'dehex does not work as I'd anticpated:

	dehex "em%E2%80%94dash" ; s/b "em--dash" (where -- is em-dash)
More like:

	dehex: use [hx ch][
		hx: charset [#"0" - #"9" #"a" - #"f" #"A" - #"F"]
		func [text][
			parse/all text: to-binary text [
				any [
					to #"%" remove [#"%" copy ch 2 hx] ; change <> remove insert
					(ch: debase/base ch 16) insert ch
				] to end
			]
			to-string text
		]
	]
Jerry
18-Nov-2009
[19712]
I need a map! with 60'000'000 entries. But in R3, I cannot do that:

>> make map! 500'000
** Script error: maximum limit reached: 500000

Why the limit is so small?
Pekr
18-Nov-2009
[19713x2]
CC it, please ...
I think that some things are settable, via enchant or so function, 
e.g. stack size, but not sure ...
Jerry
18-Nov-2009
[19715]
Ok, I will CC it.
Paul
18-Nov-2009
[19716]
Thanks Brian, I'll try to look up the discussions regarding DELMIT 
tonight if I have some time.
Henrik
18-Nov-2009
[19717]
This:

parse "this, simple, csv, string" ","


I believe was meant to be removed, because it's too obscure. I think 
the intended function for this is SPLIT.
Paul
18-Nov-2009
[19718]
I didn't know that.
Henrik
18-Nov-2009
[19719]
I don't know if it has been removed yet or if that will be a 3.1 
feature.
Arie
18-Nov-2009
[19720]
Back to my question (a long time ago :-) May I assume that the behaviour 
I wrote about in my question is a bug? A probe works, but anyhow 
the window won't move anymore.
Henrik
18-Nov-2009
[19721x2]
what happens if you change show-later to show?
seems host code work is now continuing. Something with a MinGW C 
target.
Jerry
18-Nov-2009
[19723]
how can I remove an entry from a map! in R3? BTW, I use string! (not 
word!) as index here, so I cannot just say:  my-map/my-word: none
btiffin
18-Nov-2009
[19724x2]
Geomol; I have to go with Gregg on this one.  I'd much rather have 
to deal with grenade close on output than NOT seeing your for example 
fire true on the if i = 6.0.  Is that attitude good for REBOL or 
rocket science?  Perhaps not.  Small business owner/hobbyist?  Yep. 
 In my humble, liable to blow up rockets, opinion.
oops, didn't notice how far back the scroll bar was...  "this one" 
being the post re decimal! with base 2 conversion precision.   this 
line in particular.    for i 4.0 6.0 0.1 [print i if i = 6.0 [print 
[i "= 6.0"]]]f
Izkata
18-Nov-2009
[19726]
Jerry: try my-map/( my-string ): none
Jerry
19-Nov-2009
[19727]
thanks Izkata
Geomol
19-Nov-2009
[19728x4]
btiffin, did you notice, that the i = 7.0 test in my other example 
fails? Try:

for i 4.0 7.0 0.1 [print i if i = 7.0 [print [i "= 7.0"]]]


The problem is, that you can make examples, where the "nearness" 
works. So the small business owner/hobbyist will come to think, the 
language actually handle those base-2 precision problems, but it 
doesn't. The only way, as I see it, to really handle this problem 
is by using true decimal arithmetic (e.g. some kind of binary-coded 
decimal as in money!). I believe, the current behaviour will only 
lead to more confusion.
How will you explain this behaviour to someone learning how to program?

>> 0.1 + 0.1 + 0.1 = 0.3
== true
>> 0.1 + 0.1 + 0.1 > 0.3
== true


I can explain this next behaviour, even it seems illogical at first:

>> 0.1 + 0.1 + 0.1 == 0.3
== false
>> 0.1 + 0.1 + 0.1 > 0.3
== true
even *if* it seems ...
Do or do not... there is no try.

REBOL try to solve the base-2 precision problem.
Arie
19-Nov-2009
[19732x2]
Henrik: the behaviour is the same when I use show instead of show-later.
For the record; I am using: Windows XP Pro SP3
Rebol3 2.100.94.3.1
GUI 0.2.1
Henrik
19-Nov-2009
[19734]
arie, ok. I don't have a solution, but this needs to be looked into 
once GUI work continues. While the Core of R3 has moved forward a 
lot, GUI has not moved in the past year. it could be that a feature 
is broken in the GUI now because of this.
Ladislav
19-Nov-2009
[19735]
>> 0.1 + 0.1 + 0.1 > 0.3
 - this differs from the behaviour in R2, maybe an error?
Geomol
19-Nov-2009
[19736x2]
If you change it, then you'll have problem with < > and ==, because 
you can have situations, where all those 3 return false.
Then you can add strict-lesser? and strict-greater?, but I wouldn't 
recommend it. :-)
Chris
19-Nov-2009
[19738]
R2 difference:

	R2
	>> join url:: "%23"
	== url::%23

	R3
	>> join url:: "%23"
	== url::%2523
Geomol
19-Nov-2009
[19739x2]
The "%" is encoded as "%25" for urls in R3, which is correct, I think.

>> to char! #"^(25)"
== #"%"
See e.g. http://en.wikipedia.org/wiki/Percent-encoding#Percent-encoding_reserved_characters
Chris
19-Nov-2009
[19741x2]
This isn't helpful either:

	>> load join "url::" "%23"
	== url::#
I know, but my string is already percent encoded...