World: r3wp
[Core] Discuss core issues
older newer | first last |
BrianH 18-Jun-2005 [1328] | 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. |
Anton 23-Jun-2005 [1377] | I don't remember seeing that in rambo. |
older newer | first last |