fn collect_until_stop(values: TextList) -> Text:
    var result: Text = ""
    for value in values:
        if value == "skip":
            continue
        if value == "stop":
            break
        set result = result + value
    return result

fn find_target(values: TextList) -> Text:
    for value in values:
        if value == "target":
            return value
    return "missing"

fn sum_range(start: Number, stop: Number) -> Number:
    var total: Number = 0
    for value in start..stop:
        set total = total + value
    return total

start:
    let values: TextList = text_split("alpha,skip,beta,stop,unreached", ",")
    say collect_until_stop(values)
    let candidates: TextList = text_split("first,target,last", ",")
    say find_target(candidates)
    say number_text(sum_range(1, 6))
