World: r3wp
[Core] Discuss core issues
older newer | first last |
Volker 30-Oct-2005 [2594] | to path -> to pass .. |
BrianH 30-Oct-2005 [2595x3] | It's pretty easy to figure out when you realize that second on an action! returns an integer. Everything else follows from there. |
At this point, I can't imagine what the path action! would be good for. Perhaps it is part of the object! internals? | |
Volker, by protocol do you mean a port type? | |
Volker 30-Oct-2005 [2598x3] | Cant have a use, else i had heard of it :) Practical use: it blocks mold. Recursive data, Code-obfuscation? !> a: context[b: 1 c: 2] path a 'b ?? a a: make object! [ b: end c: 2 ] |
Yes. | |
Would be able to implement find on a port that way. | |
BrianH 30-Oct-2005 [2601] | I'm going to copy my path question to RT Q&A. |
OneTom 30-Oct-2005 [2602] | let us know the answer! paste it here if u got any! |
Gabriele 31-Oct-2005 [2603] | path is internal, and should probably not be exposed. my guess is that it has to do with path evaluation. |
BrianH 31-Oct-2005 [2604x3] | You are probably right that it wasn't intended to be exposed, but you got my curiosity going. What is it used for internally? |
I mean, it says "Path selection." right in the doc comment so that's a good guess :) But how does it help with path selection? How is it used? Just for implementing set-path assignment? | |
For that matter, what types implement the path action? | |
Gabriele 1-Nov-2005 [2607] | i don't have answers. when i noticed it months ago and asked carl, he said it was an internal thing. no more details. |
Geomol 1-Nov-2005 [2608x3] | I had a problem with SWITCH, and it turned out to be a funny thing with SELECT (see source switch). If you've got a block like this: blk: [1 word "string" 1.2 01:00:00 1-11-2005 any-type! 4] you can do things like this: >> select blk 1 == word >> select blk 1.2 == 1:00 >> select blk 'word == "string" >> select blk 1:00 == 1-Nov-2005 >> select blk 1-11-2005 == any-type! And now the fun (or strange) part: >> select blk any-type! == word It's possible to select on a datatype. The first element in the block (1) is of type any-type!, so I get: word. It's possible to do things like: >> select blk date! == any-type! >> select blk time! == 1-Nov-2005 So how do I select a datatype in a block? I could do this: >> select blk to-word any-type! == 4 or something like this: >> select reduce [file! 1 url! 2] url! == 2 I can cope with this in my code, just found it peculiar. |
In the last part, what I'm trying to do, is selecting a datatype word in a block. | |
It all came from the include function in Canvas. I wanted it to be able to include modules both from diskfiles and URLs. So I did something like: switch type? object [ file! [...] url! [...] ] But this wont work, and I ended up doing: switch to-word type? object [ Maybe there should be some notes about this behaviour of SELECT in the wikibook? | |
Ladislav 1-Nov-2005 [2611] | see switch type?/word ... |
Geomol 1-Nov-2005 [2612] | Brilliant! Of course Carl've thought about that. :-) |
DideC 2-Nov-2005 [2613] | Yeah, this one catch me too some times ago ;-) |
Allen 2-Nov-2005 [2614] | Searching for datatype works with FIND as well. It's very handy |
Graham 4-Nov-2005 [2615] | I wonder if it would be possible to implement a dialect to get at parts of a series as in python. With rebcode? instead of copy/part string 4 ... , string/[:4], or if I want the 5 and 6 elements, then string/[5,6] |
JaimeVargas 4-Nov-2005 [2616] | Very posible |
Graham 4-Nov-2005 [2617] | that seems easier than copy/part skip string 4 2 |
JaimeVargas 4-Nov-2005 [2618] | I believe Greg already has something like that he named his function slice. |
Graham 4-Nov-2005 [2619x2] | But now we can use rebcode to speed it up ? |
Is Gregg's function dialected ? | |
JaimeVargas 4-Nov-2005 [2621x2] | Lost me there. |
This type of function is quite fast in native rebol. | |
Graham 4-Nov-2005 [2623x2] | it's just a pain to write. |
the power of a language can be measured by how few symbols are required to perform a given task. | |
JaimeVargas 4-Nov-2005 [2625x2] | I don't think so. It all depends on the functionality you want. |
Well you can create your on slice function. | |
Graham 4-Nov-2005 [2627x2] | don't want to :) |
I want native handling that is expressive, and short | |
BrianH 4-Nov-2005 [2629] | Graham, I don't think that's a very good measure. REBOL isn't Perl, you know, but that doesn't make it less powerful. |
Graham 4-Nov-2005 [2630] | But also it assists in debugging programs. It is well known that the number of errors per line is fairly constant. You reduce the number of words you use with a powerful language, and this leads automatically to reduced number of errors since you need fewer lines. |
JaimeVargas 4-Nov-2005 [2631x3] | substring: func [ [catch] source [string!] spec [block!] /local start stop rule ][ rule: [set start integer! '.. set stop integer!] unless parse spec rule [ throw make error! "Invalid range spec." ] copy/part skip source start stop ] |
You can create your own dialects and grammar. But don't ask for everything to be written to your liking. | |
substring "abcd" [2 .. 3] | |
BrianH 4-Nov-2005 [2634x2] | ; 1-based indexing slice: func [str start len] [copy/part at str start len] ; 0-based indexing slice: func [str start len] [copy/part skip str start len] |
Fill in with doc strings and [catch] attributes, but the algorithm doesn't have to be hard. | |
Graham 4-Nov-2005 [2636] | which is briefer ? substring "abcd" [ 2 .. 3 ] and "abcd"/[2 .. 3] |
BrianH 4-Nov-2005 [2637] | The first one, because you can tell what it's doing without having to remember more syntax. |
Graham 4-Nov-2005 [2638] | I'm not saying that Rebol should be Python, just that it could be useful this way. |
BrianH 4-Nov-2005 [2639] | How about: slice "abcd" 2 3 |
JaimeVargas 4-Nov-2005 [2640x2] | The '.. in my small dialect block is pure syntax sugar and un-necessary but easy to remember for some people. |
[2 .. 3] hints that it is a range. | |
Graham 4-Nov-2005 [2642] | yeah so, "abcd"/[ 2 3 ] |
BrianH 4-Nov-2005 [2643] | You don't need a dialect processor and its overhead for what is essentially a library function. |
older newer | first last |