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

World: r3wp

[Core] Discuss core issues

BrianH
18-Jun-2005
[1327x2]
Which of the other series functions also work on none, instead of 
just returning it?
I like the current behavior, because in my experience with null and 
unknown in SQL, tracking the cause of the unknown to its source can 
be tricky. It is easier to find out where that none came from if 
it doesn't propagate very far unintentionally. A meaningless none 
should be converted to a meaningful default while you can still tell 
where it came from.
Volker
18-Jun-2005
[1329x2]
remove was changed to work with none. about propagation versus comfort, 
i am undecided in case of 'index? . good flow makes programs easier 
to understand. OTOH you are right about eraly error-trapping.
also working with none: 'select (retuns none instead if throwing). 
pick returns it when out of range.
BrianH
18-Jun-2005
[1331]
I meant accepting none, not returning it.
Volker
18-Jun-2005
[1332]
remove accepts none. the others are examples for "give a good value 
for 'if instead of throwing an error".
BrianH
18-Jun-2005
[1333]
Well, if you consider index? find to be another way of saying find/index 
(if such a thing existed) then I can see why you would let it accept 
none. If you consider index? to be a seperate function, then accepting 
none would just be propagating an erroneous condition. Remove should 
definitely accept none because it's not much of a stretch to change 
its meaning from "remove here" to "remove here if there is something 
to remove, no-op if inapplicable", the same behavior it has as in 
 remove tail series.
Ammon
18-Jun-2005
[1334]
But Remove Tail Series is programatically different than Remove None 
as Tail returns an apparently empty series, not none.
BrianH
18-Jun-2005
[1335]
Except in a more abstract sense that  remove tail x  and  remove 
none  both return what they were passed, unmodified :)
PhilB
19-Jun-2005
[1336x3]
is this a bug or am I doing something wrong?

t: func [ip-val [word!]] [
    switch/default ip-val
    [
        'From [print "A"]
        'To [print "B"]
    ]
    [print "C1"]
]

t 'From ; should print "A"
Compared to 

t1: func [ip-val [string!]] [
    switch/default ip-val
    [
        "From" [print "A1"]
        "To" [print "B1"]
    ]
    [print "C1"]
]

t1 "From" ; should print "A1"

which correctly prints "A1"
The first example prints "C1" rather than "A"
Graham
19-Jun-2005
[1339]
t 'From => ?
PhilB
19-Jun-2005
[1340x2]
>> t: func [ip-val [word!]] [
[        switch/default ip-val
[        [
[                'From [print "A"]
[                'To [print "B"]
[            ]
[        [print "C1"]
[    ]
>>
>> t 'From ; should print "A"
C1
>>
shouldnt that have printed A rather than C1
Graham
19-Jun-2005
[1342]
>> t: func [ip-val [word!]] [
[        switch/default ip-val
[        [
[                From [print "A"]
[                To [print "B"]
[            ]
[        [print "C1"]
[    ]
>> t 'from
A
PhilB
19-Jun-2005
[1343]
OK ... so I dont need the "'" before the word ..... thanks
Graham
19-Jun-2005
[1344x3]
I remember being caught on that one once before.
I note that the parts of  dates, times, tuples etc are accessible 
using path notation.
Why not email! as well?
I would suggest that email/1 should be the part before the "@", and 
email/2 the bit after.
Then email/2/1 would access the first bit before the "." etc.
Allen
19-Jun-2005
[1347]
Graham: Are you asking for  email/1 & email/2 to map to the current 
email/user and email/host  refinements ?
Graham
19-Jun-2005
[1348x2]
oh no!
where was this documented??
Tomc
19-Jun-2005
[1350]
under datatypes  http://www.rebol.com/docs/core23/rebolcore-16.html#section-2.3
Anton
20-Jun-2005
[1351]
:)
DideC
20-Jun-2005
[1352]
No doc ? We even don't read the one we have ;-)
DideC
21-Jun-2005
[1353]
Q: is there something to flatten a block of block ?
ie: 
>>> probe a
=== [[1 toto] [2 "this is text" 5.63] [#as12 none]]
>>> magic-code! a
=== [1 toto 2 "this is text" 5.63 #as12 none]
Tomc
21-Jun-2005
[1354x2]
Yes this just came up again recently,
27 april  chat & parse
DideC
21-Jun-2005
[1356]
Thanks, didn't remember that
Pekr
23-Jun-2005
[1357x2]
how is find/match supposed to work on blocks? I thought following 
will work? 

find/match ["Petr Krenzelok"] "Petr"
what I have in mind is very simple kind of select, not needing to 
enter whole search key ...
Henrik
23-Jun-2005
[1359x3]
with blocks, I don't think that'll work with match, because it searches 
for the full element in a series, thus you need to search in two 
levels...
the block level and the string level
a find/deep would be very useful... recursive searching of blocks 
and objects. it could allow you to find a value in large objects 
and blocks quickly
Pekr
23-Jun-2005
[1362x2]
find/deep is long requested feature, but it was said as not being 
as trivial, as blocks can contain self-references etc ...
and what is find/only about?
Volker
23-Jun-2005
[1364x6]
with find/match you can check for abbreviations
>> find/match "Hello World" "W"    
== none
>> find/match "Hello World" "H"
== "ello World"
>> find/match ["Pekr" "Krenzelok"] "Pekr"
== ["Krenzelok"]
>> find/match ["Pekr" "Krenzelok"] "Krenzelok"
== none
/only is for this:
>> find ["Pekr" "Krenzelok" "asking"] ["Pekr" "Krenzelok"]
== ["Pekr" "Krenzelok" "asking"]
>> find/only ["Pekr" "Krenzelok" "asking"] ["Pekr" "Krenzelok"]
>> find/only [["Pekr" "Krenzelok"] "asking"] ["Pekr" "Krenzelok"]
== [["Pekr" "Krenzelok"] "asking"]
Ladislav
23-Jun-2005
[1370]
I wrote some functions of this kind, but anyway, what is "the shortest" 
reverse of:

    y: to integer! x: #{80000000}
Anton
23-Jun-2005
[1371x2]
Maybe this ?
>> reverse third make struct! [i [int]] reduce [y]
== #{80000000}
; quick testing looks good

>> foreach v [-1 0 1 1000 7777 2000000][print same? v to-integer 
reverse third make struct! [i [int]] reduce [v]]
true
true
true
true
true
true
Gabriele
23-Jun-2005
[1373x3]
hmm, a "short" way could be:
>> to binary! reduce [y / 16777216 y / 65536 y / 256 y]
== #{80000000}
btw, is this on rambo? i really think that to binary! should work 
with integers.
JaimeVargas
23-Jun-2005
[1376]
I second that.