flowsamples 0.29.2

A set of sample 'flow' programs
flow = "composites"

[[input]]
name = "limit"
type = "Number"

[[output]]
name = "composites"
type = "Number"

[[output]]
name = "last"
type = "Number"

# Generate a set of divisors from 2 .. SQRT(limit)
[[process]]
alias = "sqrt"
source = "lib://flowstdlib/math/sqrt"

[[connection]]
from = "input/limit"
to = "sqrt"

[[process]]
alias = "divisors"
source = "lib://flowstdlib/math/sequence"
input.start = {once =  2}
input.step = {once =  1}

[[connection]]
from = "sqrt"
to = "divisors/end"

[[process]]
source = "generate_composites"

[[connection]]
from = "divisors/sequence"
to = "generate_composites/start"

[[connection]]
from = "input/limit"
to = "generate_composites/limit"

[[connection]]
from = "generate_composites/composites"
to = "output/composites"

# accumulate a count of sub-sequences generated so we know when we're done - adding an extra 1
[[process]]
alias = "join"
source = "lib://flowstdlib/control/join"
input.data = { always =  1 }

[[connection]]
from = "generate_composites/subsequence-end"
to = "join/control"

[[process]]
alias = "subsequence-count"
source = "lib://flowstdlib/math/add"
input.i1 = { once =  1 }

[[connection]]
from = "join"
to = "subsequence-count/i2"

[[connection]]
from = "subsequence-count/sum"
to = "subsequence-count/i1"

# compare the count of subsequences to how many we expect
[[process]]
alias = "compare"
source = "lib://flowstdlib/control/compare_switch"

[[connection]]
from = "divisors/last"
to = "compare/left"

[[connection]]
from = "subsequence-count/sum"
to = "compare/right"

[[connection]]
from = "compare/equal"
to = "output/last"