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

World: r3wp

[Core] Discuss core issues

Pekr
20-May-2010
[16810]
http://technet.microsoft.com/en-us/sysinternals/default.aspx... 
look at RAM Map, Process Manager, etc.
Terry
20-May-2010
[16811x2]
Q. how to use a word as a string value in path?
ie: ["a" 1 "b" 2]
n: "b"
ie/(n)
>> 2
nvm
Claude
20-May-2010
[16813x2]
very strange    a: true      logic? a  => true
but a:[true]  logic? a/1 => false
Sunanda
20-May-2010
[16815]
That's because [true] is a word, not a value. Try this:
     a: reduce [true]  logic? a/1  >> true
Claude
20-May-2010
[16816]
oki thanks
Terry
24-May-2010
[16817x2]
What's the advantage of using words in blocks? 
ie: [a "one b "two] vs ie2: ["a" "one" "b" "two"]
seeing you run out global word space very quickly?
Henrik
24-May-2010
[16819]
dialects and selection
Terry
24-May-2010
[16820x2]
ie2/("a")
>> "one"
so dialects then?
Pekr
24-May-2010
[16822]
yes, and the code readability maybe - ie2/("a") vs ie2/a
Henrik
24-May-2010
[16823]
using words as table keys is probably not a good idea.
Pekr
24-May-2010
[16824]
why? because of word limit? or any other consequences?
Henrik
24-May-2010
[16825]
limit, forbidden chars, etc.
Ladislav
24-May-2010
[16826x3]
word comparison is faster than string comparison
(word comparison is O(1), while string comparison is O(n))
moreover, words have context, strings don't
Geomol
24-May-2010
[16829]
Is it a benefit, that SWITCH is case insensitive?

>> s: "aA"
== "aA"
>> switch s/1 [#"A" [print "A"] #"a" [print "a"]]
A
Steeve
24-May-2010
[16830]
use strings not chars
Gregg
24-May-2010
[16831x2]
On words in blocks, if you use strings they may be duplicated as 
you copy blocks, which words aren't.
On SWITCH, I think it's consistent with REBOL in general.
Geomol
24-May-2010
[16833x3]
Steeve, no, doesn't work with strings:

>> switch s/1 ["A" [print "A"] "a" [print "a"]]
== none

s/1 is a char! And SWITCH won't find it with a string.
Gregg, "consistent"? Ahh... ;)


I was thinking about changing the string into a binary. What would 
you think FIRST used on a binary returns? I would expect a binary, 
but it's actually an integer. I sometimes have a hard time seeing 
the consistency in REBOL. But I know, it's hard to find the logic 
way in all this. So many datatypes. :)
Also changing s/1 to a string gives unwanted result:

>> s
== "aA"
>> switch to string! s/1 ["A" [print "A"] "a" [print "a"]]
A


So I end up with getting the integer value of a char to make this 
work:

>> switch to integer! s/1 [65 [print "A"] 97 [print "a"]]
a

Not so good, as I see it.
Steeve
24-May-2010
[16836x2]
Ah! it's probably impossible to convert a char! into a string!, so 
forget it...
hmmm. I just realized that you asked for insensitive case
Geomol
24-May-2010
[16838x2]
Yes, I need to test on chars in a string, and #"a" should be different 
from #"A".
The only way using SWITCH, I see, is to operate with ascii values, 
and that isn't good.
Steeve
24-May-2010
[16840]
well, just use parse instead, its mostly the same structure than 
a switch.

parse/case s [
	#"A" (do something)
           | #"a" (...)
           | ...
]
Geomol
24-May-2010
[16841]
Yes, parse can be used. My motivation was thoughts about switch. 
It seems, it could be improved.
Andreas
24-May-2010
[16842x4]
REBOL3 is pretty consistently case-ignorant in this regard:
>> #"a" = #"A"
== true
And the SWITCH behaviour is just consistent with that.
(R2 is more inconsistent in this regard, as #"a" = #"A" is false, 
but SWITCH behaves case-insensitively, as you described.)
PeterWood
25-May-2010
[16846]
>> #"a" == #"A" 
 
== false

Perhaps SWITCH needs a /Strictly refinement?
Gregg
25-May-2010
[16847x2]
SWITCH used to be a mezzanine, so you could easily patch it if you 
want. This is the old mezz source.

switch: func [
    [throw]
    value
    cases [block!]
    /default case
][
    either value: select cases value [do value] [
        either default [do case] [none]]
]
I use SWITCH very rarely, but I don't know about others.
Izkata
25-May-2010
[16849]
/case would be more consistent with 'find, 'parse, and 'select than 
/strictly would
Geomol
25-May-2010
[16850]
The char! datatype has many similarities to numbers. The following 
is from R3 and looks strange to me:

>> var - 32 = var
== true


What variable is equal to it's original value, even if you subtract 
32 from it?

>> var: #"a"
== #"a"
>> var - 32 = var
== true


A bit strange. I would prefer SWITCH to distinguish between #"a" 
and #"A".
Rebolek
25-May-2010
[16851]
>> (var - 32) = var
== false
Geomol
25-May-2010
[16852x2]
This can be even more complicated when talking UTF encoding. Hm, 
who knows how R3 do this...
Rebolek, do it in R3.
Rebolek
25-May-2010
[16854x4]
I'm not sure what exactly [var - 32 = var
Ah, ok, this was R2.
Yes, in R3, it's true.
I agree with you, this is strange.
Steeve
25-May-2010
[16858]
>> #"a" - 32
== #"A"

>> #"a" - 32 == #"a"
== false

>> #"a" - 32 = #"a"
== true

it's ok to my mind
PeterWood
25-May-2010
[16859]
Izkata: /strict could also striclty equal to numbers to give an alternative 
to :

>> number: 1

== 1
>> switch number [1 [print 1] 1.0 [print 1.0]]

1

>> number: 1.0

== 1.0

>> switch number [1 [print 1] 1.0 [print 1.0]]

1