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

World: r3wp

[I'm new] Ask any question, and a helpful person will try to answer.

sqlab
15-May-2009
[2460]
should read  "you cannot  .."  .)
Henrik
15-May-2009
[2461]
mhinson, for your next scripts, maybe you should work a bit more 
on things that are completely unrelated to parse. it helps to get 
away from it a while and then get back to it later.
BrianH
15-May-2009
[2462x4]
ARRAY can take a function as the initial parameter, and that function 
will be called. Try this:
port-proto: make object! [

 vlan: copy []     ;; will hold a number or perhaps a list of numbers 
 e.g. 20 or 3,5,7
	UpState: copy []  ;; none or "disabled"
	name: copy []     ;; any string
]


switch-module: array/initial [13 48] does [make object! port-proto]
That will give you 13x48 unique objects in nested blocks.
>> x: 0
== 0
>> array/initial [2 3] does [x: x + 1]
== [[1 2 3] [4 5 6]]
One interesting thing to note is that because the data in the objects 
is blocks, MAKE will bind/copy the blocks to the new object. This 
is why you don't have to copy the blocks explicitly when you make 
a new object based on the proto.
Steeve
15-May-2009
[2466]
i should use array too now, i didn't noticed those usefull evolutions
Henrik
15-May-2009
[2467]
oh, I didn't know that one.
Izkata
15-May-2009
[2468]
Wow, I was looking for something like that..
mhinson
15-May-2009
[2469x2]
Have I broken REBOL ?
>> print round 2
** Script Error: Cannot use subtract on decimal! value
** Where: throw-on-error
I put  Protect-System on & found what I had done...  It was a bit 
confusing what I was seeing till I worked this out.
Maxim
15-May-2009
[2471]
did you replace the value of round by any chance?
mhinson
15-May-2009
[2472]
no mod
Steeve
15-May-2009
[2473]
SHAME ON YOU ;-)
mhinson
15-May-2009
[2474x2]
I used mod to recieve date from copy in a parse
I almost didnt because I know mod is maths term...  I supose modifying 
the system is not on your mind till you are more of a Rebol.
BrianH
15-May-2009
[2476]
I made that change to ARRAY over a year ago for R3, then backported 
it to R2 for the 2.7.6 release. EXTRACT/default and REPLACE too.
Steeve
15-May-2009
[2477]
SHAME ON US :-)
BrianH
15-May-2009
[2478]
Hey, if I hadn't written it myself I wouldn't have noticed either 
:)
mhinson
15-May-2009
[2479]
I like the sound of that Brian, but as your example dosn't work I 
dont really understand the syntax..

>> switch-module: array/initial [13 48] does [make object! port-proto]
** Script Error: Invalid argument: object
BrianH
15-May-2009
[2480x2]
First, which version of REBOL are you using? If not 2.7.6, it won't 
work.
Oh wait, it's the contents of the does. Try this: does [make port-proto 
[]]
mhinson
15-May-2009
[2482x2]
2.7.6.3.1
it is new like me
That works, thank you.
BrianH
15-May-2009
[2484]
Even the old guard makes newbie mistakes sometimes :)
Steeve
15-May-2009
[2485]
10 push-ups for Brian
mhinson
15-May-2009
[2486]
I nearly guessed it, but as a noob there are so many options that 
I could be a while wondering if it is my typing or something too 
basic to notice.
BrianH
15-May-2009
[2487]
Clearly the latter :)
mhinson
15-May-2009
[2488]
These hordes of newbies, always asking foolish questions & never 
looking at the documentation. ;-)
Steeve
15-May-2009
[2489]
they are not so much (newbies) there, they faint after some days 
usually
BrianH
15-May-2009
[2490]
I'm not sure how well-documented the change to ARRAY is. I didn't 
handle the documentation of the 2.7.6 release.
Maxim
15-May-2009
[2491]
someone did?   ;-)
mhinson
15-May-2009
[2492]
if I have this
mike: array/initial 3 array/initial 3 array/initial 3 none
modAndPort: "2/2"
UpState: 2
data: "disabled"

How do I use the variables to create this logic please
mike/2/2/:UpState: data

mike/ModAndPort/:UpState: data

Something like this I was hoping
mike/(ModAndPort)/:UpState: data
** Script Error: Invalid path value: 2/2
BrianH
15-May-2009
[2493x2]
I don't know, Maxim. We have to do better about that in future R2 
releases.
Mhinson, your first line can be this: ARRAY [3 3 3]

The none value is the default, and the multiple calls can be replaced 
by the [3 3 3].
mhinson
15-May-2009
[2495]
More typing saved, thats good.
BrianH
15-May-2009
[2496]
As for the path stuff, you may be out of luck. Try this:
m: 2
p: 2
u: 2

mike/:m/:p/:u: "disabled"
mhinson
15-May-2009
[2497]
ok, so I have to split it into integers.. Nice to hear it from the 
developer of the ARRAY  :-)
BrianH
15-May-2009
[2498x2]
It's not just more typing saved. The value passed to array/initial 
is not copied, it is referenced. Your version would have aliasing 
issues.
If you specify multiple dimensions instead it creates unique nested 
blocks instead of multiple references.
mhinson
15-May-2009
[2500]
Thanks for point this out, I see it is very important.

I will try to use your new function passing once I get it working 
in a basic form.  Thanks.
BrianH
15-May-2009
[2501x2]
Learn to love the SOURCE function :)
>> source array
array: func [
    "Makes and initializes a series of a given size."

    size [integer! block!] "Size or block of sizes for each dimension"
    /initial "Specify an initial value for all elements"
    value "Initial value"
    /local block rest
][
    if block? size [
        rest: next size
        if tail? rest [rest: none]
        size: first size

        if not integer? size [make error! "Integer size required"]
    ]
    block: make block! size
    case [
        block? rest [

            loop size [block: insert/only block array/initial rest :value]
        ]
        series? :value [
            loop size [block: insert/only block copy/deep value]
        ]
        any-function? :value [
            loop size [block: insert/only block value]
        ]
        insert/dup block value size
    ]
    head block
]
mhinson
15-May-2009
[2503]
I often look at it but lak the skill to interpret it very well.
Maxim
15-May-2009
[2504]
help & source are so powerfull a feature in rebol
BrianH
15-May-2009
[2505]
They're how I learned this stuff :)
Maxim
15-May-2009
[2506]
people don't realise that the console provides many features visual 
IDEs dont provide
Steeve
15-May-2009
[2507]
oh was that a RTFD coming from Brian ? so mean...
BrianH
15-May-2009
[2508]
Wait, it does copy/deep the initial value. It's been a while since 
I looked at that function :(
mhinson
15-May-2009
[2509]
array [x x x] is much neater though