Hi Charles,

if I understood correctly, you would like to have:

    set-words: function [
        {Get all set-words from a block}
        block [block!]
    ] [elem words] [
        words: make block! length? block
        parse block [
            any [
                set elem set-word! (
                    insert tail words to word! :elem
                ) | skip
            ]
        ]
        words
    ]

    cfor: function [
        {a C-like for function}
        [throw]
        init [block!]
        test [block!]
        inc [block!]
        body [block!]
    ] [use-words cont] [
        use-words: append set-words init [continue]
        body: append reduce [:catch body] inc
        cont: reduce [does [throw none]]
        use use-words reduce [
            :set [continue] cont
            :do init
            :while test body
        ]
    ]

Usage:

    cfor [i: 1] [i <= 3] [i: i + 1] [
        if i = 2 [continue]
        print i
    ]

1
3

-L

----- Original Message -----
From: "Charles"

   Howdy folks.  Got a bit of a difficulty here.  Say I'm evaluating a for
loop, like reading lines of text from a file.  At the beginning of my for
loop,
I have it check to see if the line is commented, blank, or neither.  If it's
commented or blank, I want it to just skip to the next iteration of the for
loop; however, if it's neither, let it keep going.  I would prefer to do
this
with a simple if [] as opposed to a heavy either [][]...  'break' doesn't do
what I need - it kills the for loop entirely, instead of skipping to the
next
iteration.  If I use either [][], I have to do:
either condition? [
    if true do this
][
    if false
    do these
    next 20 lines
    all indented
    with more indentation
    yet to come
    very long lines
]

   You follow me?  It's a coding habit I've picked up from another language.
Thanks folks.

--Charles


-- 
To unsubscribe from this list, please send an email to
[EMAIL PROTECTED] with "unsubscribe" in the 
subject, without the quotes.

Reply via email to