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

World: r3wp

[Core] Discuss core issues

Ladislav
13-Oct-2006
[5593]
Henrik: could you please do one more test - I updated INCLUDE once 
again
Henrik
13-Oct-2006
[5594x2]
I saw it. The draw block would then be evaluated from the spider 
code and then inserted at that place?
include still works fine in a fresh console
Ladislav
13-Oct-2006
[5596]
yes, you can see the result of it if you do:

probe build/with [
        box 600x600 effect [
            draw [
                spider [
                    size 600x600
                    ; offset 100x100
                    pen black
                    scale 4
                    ; scale [0 150 300 450 600]
                    categories [

                        "Category 1" "Category 2" "Category 3" "Category 4"

                        "Category 5" "Category 6" "Category 7" "Category 8"
                    ]
                    directions
                    pen red
                    data [100 200 300 400 500 600 700 800]
                    pen blue
                    data [100 100 100 100 100 100 100 100]
                ]
            ]
        ]
    ] [spider: :spider*]
Henrik
13-Oct-2006
[5597]
I guess I'm just really hard to impress today. I need a much sexier 
example to be convinced of the raw power of BUILD. :-)
Ladislav
13-Oct-2006
[5598]
:-)
Henrik
13-Oct-2006
[5599]
something like "this takes 100 lines of code to do with regular REBOL 
block construction functions, while BUILD can do it in 20 and make 
much prettier code out of it"
Ladislav
13-Oct-2006
[5600x2]
I have got a similar XYPLOT function creating an XY graph, although 
I did not release it yet
Well, how would you do the

view layout build/with [
        box 600x600 effect [
            draw [
                spider [
                    size 600x600
                    ; offset 100x100
                    pen black
                    scale 4
                    ; scale [0 150 300 450 600]
                    categories [

                        "Category 1" "Category 2" "Category 3" "Category 4"

                        "Category 5" "Category 6" "Category 7" "Category 8"
                    ]
                    directions
                    pen red
                    data [100 200 300 400 500 600 700 800]
                    pen blue
                    data [100 100 100 100 100 100 100 100]
                ]
            ]
        ]
    ] [spider: :spider*]

example without using BUILD?
Pekr
13-Oct-2006
[5602]
Ladislav - will build be part of R3? :-)
Ladislav
13-Oct-2006
[5603]
That is why I am asking here - if there are users who will be using 
it
Henrik
13-Oct-2006
[5604]
by looking at it, SPIDER looks like a regular function to me with 
the following block as input. I guess it can't be, because then the 
layout block could simply be done by enclosing spider [...] in ()'s 
and compose/deep the whole thing.
Ladislav
13-Oct-2006
[5605]
compose/deep - actually it could be used in this case, because I 
didn't use parens anywhere
Henrik
13-Oct-2006
[5606]
well, just getting rid of ()'s isn't enough for me. I would want 
significant code reduction in cases where blocks would be cumbersome 
to build.
Ladislav
13-Oct-2006
[5607x2]
this is not about getting rid of parens, this is about *not clashing 
with parens*
With COMPOSE/DEEP you cannot use parens safely
Henrik
13-Oct-2006
[5609]
by safely you mean selective evaluation?
Ladislav
13-Oct-2006
[5610x2]
yes
imagine I need parens in the layout block. Then I am getting out 
of luck with compose/deep
Henrik
13-Oct-2006
[5612]
I can see that now. I've just not run into a case like that, I guess. 
:-)
Ladislav
13-Oct-2006
[5613]
it is not that rare to use parens in the layout block, I guess
Henrik
13-Oct-2006
[5614]
that would be cases where you need to compose things during runtime 
and not "layout time"
Ladislav
13-Oct-2006
[5615]
another example: if you look at the SPIDER implementation, you will 
see it is implemented using BUILD too. I bet it would be much harder 
with compose, because there *are* parens in the implementation.
Henrik
13-Oct-2006
[5616]
are you going to prepare docs for it?
Ladislav
13-Oct-2006
[5617]
I am not sure I know what to write ;-), maybe I should ask somebody 
else
Henrik
13-Oct-2006
[5618]
well, if some good examples came into place, then I think it would 
be possible to write a little bit around it.
BrianH
13-Oct-2006
[5619]
Well, you know I'm in favor of including BUILD in the default REBOL. 
You clash with parens all the time when building parse rules.
Ladislav
13-Oct-2006
[5620x2]
Brian: right, for parse rules it is much better than compose
Actually, we might use something like REDUCE/DEEP/ONLY, if the /DEEP 
refinement existed and if /ONLY specified the words that should be 
evaluated instead of the unevaluated ones
Pekr
13-Oct-2006
[5622x2]
hmm, what if you have more parens, containing the same words, and 
one you want to evaluate, while second you don't?
just theoretising, not knowing what actually 'build is about ....
Ladislav
13-Oct-2006
[5624x3]
good question, Pekr. Answer: you can choose any new word you want 
to for the evaluation - especially some words you know you cannot 
encounter in the block are good.
For example when I use the word 'spider, I am pretty sure, it cannot 
clash with any "native" DRAW command, because spider isn't native 
DRAW command. Does that make sense?
This is exactly why COMPOSE isn't as comfortable. There are many 
blocks containing parens and you cannot pick any replacement for 
parens in COMPOSE case.
Henrik
13-Oct-2006
[5627]
now would the only advantage to use compose be that it's a native 
function? does build make compose redundant?
Ladislav
13-Oct-2006
[5628]
yes, the only advantage of COMPOSE is, that it is native in my opinion.
Henrik
13-Oct-2006
[5629]
would build be possible to make natively for R3?
Pekr
13-Oct-2006
[5630]
that's what I wanted to ask about - native 'build in R3?
Ladislav
13-Oct-2006
[5631]
I am sure it is possible
Henrik
13-Oct-2006
[5632]
then I would vote for having it done and deprecate the use of compose, 
or is that too drastic?
Ladislav
13-Oct-2006
[5633]
we may make Compose deprecated, but need to keep it for the backward 
compatibility in my opinion
Pekr
13-Oct-2006
[5634]
or could not functionalities of both merge somehow? compose/build 
for e.g.?
Ladislav
13-Oct-2006
[5635]
yes, that is another option Carl is investigating too. We can either 
improve REDUCE (/DEEP, etc.) or COMPOSE
BrianH
13-Oct-2006
[5636]
Compose has its uses. I don't want to go the Perl "there's more than 
one way to do it" path, but flexibilty can be useful.
Henrik
13-Oct-2006
[5637]
http://www.fm.tul.cz/~ladislav/rebol/build.r<--- posting the source 
again for newcomers.
BrianH
13-Oct-2006
[5638x2]
Has anyone implemented some kind of functional-language-style structural 
patten matching and transformation?
In theory you should be able to compile such code to parse rules...
Pekr
13-Oct-2006
[5640]
pattern matching? do you think about improving 'parse?
BrianH
13-Oct-2006
[5641]
All the time - haven't you been paying attention? :)
Henrik
13-Oct-2006
[5642]
I thought parse was already being improved for R3?