bend-visgraph Releases (3): 2.0.0.0 0xe3a7f78ee5245da17fe27e3556f94e74 indexed https://jend.leeeet.dev/files.txt?path=bend-visgraph@2.0.0.0 1.0.1.0 0xa7606adc225be7b0e88389ca594e0d14 unindexed https://jend.leeeet.dev/files.txt?path=bend-visgraph@1.0.1.0 1.0.0.0 0xe3f5cb14a0b4bd4d5826a0042d3c3d23 unindexed https://jend.leeeet.dev/files.txt?path=bend-visgraph@1.0.0.0 Definitions (237, 1 to 100 shown): BendVisgraph.Mode (https://jend.leeeet.dev/definition.txt?path=bend-visgraph@2.0.0.0/bend_visgraph.bend&name=Mode) type Mode is Data: EdgeList{} DegreeSequence{} DegreeDistribution{} DegreeCounts{} BendVisgraph.Flag (https://jend.leeeet.dev/definition.txt?path=bend-visgraph@2.0.0.0/bend_visgraph.bend&name=Flag) type Flag is Data: Output{} XFile{} GraphType{} Directed{} Weighted{} Limit{} OutputMode{} BendVisgraph.Entry (https://jend.leeeet.dev/definition.txt?path=bend-visgraph@2.0.0.0/bend_visgraph.bend&name=Entry) type Entry<-A: Data> is Data: Entry{name: String, value: A} BendVisgraph.Config (https://jend.leeeet.dev/definition.txt?path=bend-visgraph@2.0.0.0/bend_visgraph.bend&name=Config) type Config is Data: Config{output: String, xs: String, g: VG.Visibility, dir: VG.Direction, k: VG.Weight, limit: U32, mode: Mode} Usage{msg: String} BendVisgraph.Outcome (https://jend.leeeet.dev/definition.txt?path=bend-visgraph@2.0.0.0/bend_visgraph.bend&name=Outcome) type Outcome is Data: Ok{text: String} Err{msg: String} BendVisgraph.usage (https://jend.leeeet.dev/definition.txt?path=bend-visgraph@2.0.0.0/bend_visgraph.bend&name=usage) def usage() -> String: BendVisgraph.flags (https://jend.leeeet.dev/definition.txt?path=bend-visgraph@2.0.0.0/bend_visgraph.bend&name=flags) def flags() -> List<&2, Entry>: BendVisgraph.graphs (https://jend.leeeet.dev/definition.txt?path=bend-visgraph@2.0.0.0/bend_visgraph.bend&name=graphs) def graphs() -> List<&2, Entry>: BendVisgraph.directions (https://jend.leeeet.dev/definition.txt?path=bend-visgraph@2.0.0.0/bend_visgraph.bend&name=directions) def directions() -> List<&2, Entry>: BendVisgraph.weights (https://jend.leeeet.dev/definition.txt?path=bend-visgraph@2.0.0.0/bend_visgraph.bend&name=weights) def weights() -> List<&2, Entry>: BendVisgraph.modes (https://jend.leeeet.dev/definition.txt?path=bend-visgraph@2.0.0.0/bend_visgraph.bend&name=modes) def modes() -> List<&2, Entry>: BendVisgraph.lookup.hit (https://jend.leeeet.dev/definition.txt?path=bend-visgraph@2.0.0.0/bend_visgraph.bend&name=lookup.hit) def lookup.hit(-A: Data, hit: Bool, v: A, rest: Maybe<&2, A>) -> Maybe<&2, A>: BendVisgraph.lookup.entry (https://jend.leeeet.dev/definition.txt?path=bend-visgraph@2.0.0.0/bend_visgraph.bend&name=lookup.entry) def lookup.entry(-A: Data, +s: String, e: Entry, rest: Maybe<&2, A>) -> Maybe<&2, A>: BendVisgraph.lookup (https://jend.leeeet.dev/definition.txt?path=bend-visgraph@2.0.0.0/bend_visgraph.bend&name=lookup) def lookup(-A: Data, +s: String, table: List<&2, Entry>) -> Maybe<&2, A>: BendVisgraph.defaults (https://jend.leeeet.dev/definition.txt?path=bend-visgraph@2.0.0.0/bend_visgraph.bend&name=defaults) def defaults() -> Config: BendVisgraph.bad (https://jend.leeeet.dev/definition.txt?path=bend-visgraph@2.0.0.0/bend_visgraph.bend&name=bad) def bad(name: String, value: String) -> Config: BendVisgraph.with_graph (https://jend.leeeet.dev/definition.txt?path=bend-visgraph@2.0.0.0/bend_visgraph.bend&name=with_graph) def with_graph(found: Maybe<&2, VG.Visibility>, name: String, value: String, o: String, x: String, d: VG.Direction, k: VG.Weight, l: U32, m: Mode) -> Config: BendVisgraph.with_direction (https://jend.leeeet.dev/definition.txt?path=bend-visgraph@2.0.0.0/bend_visgraph.bend&name=with_direction) def with_direction(found: Maybe<&2, VG.Direction>, name: String, value: String, o: String, x: String, g: VG.Visibility, k: VG.Weight, l: U32, m: Mode) -> Config: BendVisgraph.with_weight (https://jend.leeeet.dev/definition.txt?path=bend-visgraph@2.0.0.0/bend_visgraph.bend&name=with_weight) def with_weight(found: Maybe<&2, VG.Weight>, name: String, value: String, o: String, x: String, g: VG.Visibility, d: VG.Direction, l: U32, m: Mode) -> Config: BendVisgraph.with_limit (https://jend.leeeet.dev/definition.txt?path=bend-visgraph@2.0.0.0/bend_visgraph.bend&name=with_limit) def with_limit(found: Maybe<&2, U32>, name: String, value: String, o: String, x: String, g: VG.Visibility, d: VG.Direction, k: VG.Weight, m: Mode) -> Config: BendVisgraph.with_mode (https://jend.leeeet.dev/definition.txt?path=bend-visgraph@2.0.0.0/bend_visgraph.bend&name=with_mode) def with_mode(found: Maybe<&2, Mode>, name: String, value: String, o: String, x: String, g: VG.Visibility, d: VG.Direction, k: VG.Weight, l: U32) -> Config: BendVisgraph.set (https://jend.leeeet.dev/definition.txt?path=bend-visgraph@2.0.0.0/bend_visgraph.bend&name=set) def set(cfg: Config, flag: Maybe<&2, Flag>, +name: String, +value: String) -> Config: BendVisgraph.parse (https://jend.leeeet.dev/definition.txt?path=bend-visgraph@2.0.0.0/bend_visgraph.bend&name=parse) def parse(opts: List, cfg: Config) -> Config: BendVisgraph.output (https://jend.leeeet.dev/definition.txt?path=bend-visgraph@2.0.0.0/bend_visgraph.bend&name=output) def output(mode: Mode, +k: VG.Weight, g: VG.Graph, +n: U32) -> String: BendVisgraph.only_degrees (https://jend.leeeet.dev/definition.txt?path=bend-visgraph@2.0.0.0/bend_visgraph.bend&name=only_degrees) def only_degrees(mode: Mode) -> Bool: BendVisgraph.graph_of (https://jend.leeeet.dev/definition.txt?path=bend-visgraph@2.0.0.0/bend_visgraph.bend&name=graph_of) def graph_of(+g: VG.Visibility, +dir: VG.Direction, +k: VG.Weight, +limit: U32, ys: Array, xs: VG.Xs, +n: U32) -> VG.Graph: BendVisgraph.XSource (https://jend.leeeet.dev/definition.txt?path=bend-visgraph@2.0.0.0/bend_visgraph.bend&name=XSource) # Where x comes from: the index, or the values of the -x file, last first. type XSource is Data: ByIndex{} Given{rev: List<&2, F32>} BendVisgraph.xs_of (https://jend.leeeet.dev/definition.txt?path=bend-visgraph@2.0.0.0/bend_visgraph.bend&name=xs_of) def xs_of(x: XSource, +n: U32) -> VG.Xs: BendVisgraph.report.built (https://jend.leeeet.dev/definition.txt?path=bend-visgraph@2.0.0.0/bend_visgraph.bend&name=report.built) def report.built(weighted_degrees: Bool, +g: VG.Visibility, +dir: VG.Direction, +k: VG.Weight, +limit: U32, mode: Mode, rev: List<&2, F32>, x: XSource, +n: U32) -> Outcome: BendVisgraph.report.sized (https://jend.leeeet.dev/definition.txt?path=bend-visgraph@2.0.0.0/bend_visgraph.bend&name=report.sized) # x as the index is an F32, which holds every index below 2^24 exactly. def report.sized(too_long: Bool, +g: VG.Visibility, +dir: VG.Direction, +k: VG.Weight, +limit: U32, +mode: Mode, rev: List<&2, F32>, +n: U32) -> Outcome: BendVisgraph.report.xs (https://jend.leeeet.dev/definition.txt?path=bend-visgraph@2.0.0.0/bend_visgraph.bend&name=report.xs) def report.xs(x: Series.XsCheck, +g: VG.Visibility, +dir: VG.Direction, +k: VG.Weight, +limit: U32, +mode: Mode, rev: List<&2, F32>, +n: U32) -> Outcome: BendVisgraph.XsIn (https://jend.leeeet.dev/definition.txt?path=bend-visgraph@2.0.0.0/bend_visgraph.bend&name=XsIn) # The x coordinates of the -x file, if one was given. type XsIn is Data: NoXs{} XsRead{p: Series.Parsed} BendVisgraph.report (https://jend.leeeet.dev/definition.txt?path=bend-visgraph@2.0.0.0/bend_visgraph.bend&name=report) def report(p: Series.Parsed, x: XsIn, +g: VG.Visibility, +dir: VG.Direction, +k: VG.Weight, +limit: U32, +mode: Mode) -> Outcome: BendVisgraph.write_text.done (https://jend.leeeet.dev/definition.txt?path=bend-visgraph@2.0.0.0/bend_visgraph.bend&name=write_text.done) def write_text.done(m: File & Result<&1, &1, U32 & String, Unit>) -> IO(Unit): BendVisgraph.write_text (https://jend.leeeet.dev/definition.txt?path=bend-visgraph@2.0.0.0/bend_visgraph.bend&name=write_text) def write_text(path: String, text: String) -> IO(Unit): BendVisgraph.emit.to (https://jend.leeeet.dev/definition.txt?path=bend-visgraph@2.0.0.0/bend_visgraph.bend&name=emit.to) def emit.to(stdout: Bool, path: String, text: String) -> IO(Unit): BendVisgraph.emit (https://jend.leeeet.dev/definition.txt?path=bend-visgraph@2.0.0.0/bend_visgraph.bend&name=emit) def emit(+path: String, outcome: Outcome) -> IO(Unit): BendVisgraph.read_xs (https://jend.leeeet.dev/definition.txt?path=bend-visgraph@2.0.0.0/bend_visgraph.bend&name=read_xs) def read_xs(none: Bool, path: String) -> IO(XsIn): BendVisgraph.run (https://jend.leeeet.dev/definition.txt?path=bend-visgraph@2.0.0.0/bend_visgraph.bend&name=run) def run(input: String, cfg: Config) -> IO(Unit): BendVisgraph.start (https://jend.leeeet.dev/definition.txt?path=bend-visgraph@2.0.0.0/bend_visgraph.bend&name=start) def start(args: List) -> IO(Unit): BendVisgraph.main (https://jend.leeeet.dev/definition.txt?path=bend-visgraph@2.0.0.0/bend_visgraph.bend&name=main) def main() -> IO(Unit): Parallel.fork3 (https://jend.leeeet.dev/definition.txt?path=bend-visgraph@2.0.0.0/parallel.bend&name=fork3) def fork3(a: Array & Array, b: Array & Array, c: Array & Array) -> VG.Cols & VG.Cols: Parallel.fork_cols (https://jend.leeeet.dev/definition.txt?path=bend-visgraph@2.0.0.0/parallel.bend&name=fork_cols) def fork_cols(c: VG.Cols) -> VG.Cols & VG.Cols: Parallel.Blocks (https://jend.leeeet.dev/definition.txt?path=bend-visgraph@2.0.0.0/parallel.bend&name=Blocks) # The stack runs on blocks in parallel; a merge then walks the blocks in # order. type Blocks is Data: BOne{b: VG.Block} BJoin{a: Blocks, b: Blocks} Parallel.block_of (https://jend.leeeet.dev/definition.txt?path=bend-visgraph@2.0.0.0/parallel.bend&name=block_of) def block_of(l: VG.Local) -> Blocks: Parallel.block_leaf (https://jend.leeeet.dev/definition.txt?path=bend-visgraph@2.0.0.0/parallel.bend&name=block_leaf) # It forks nothing, so the runtime runs it once the tree has grown, on any # idle thread; work done before a fork runs while the tree grows, on a few # threads. def block_leaf(+s: U32, +e: U32, c: VG.Cols) -> Blocks: Parallel.block_tree (https://jend.leeeet.dev/definition.txt?path=bend-visgraph@2.0.0.0/parallel.bend&name=block_tree) def block_tree(depth: Nat, +s: U32, +e: U32, cc: VG.Cols & VG.Cols) -> Blocks: Parallel.merge (https://jend.leeeet.dev/definition.txt?path=bend-visgraph@2.0.0.0/parallel.bend&name=merge) def merge(bs: Blocks, m: VG.Merged) -> VG.Merged: Parallel.Chunks (https://jend.leeeet.dev/definition.txt?path=bend-visgraph@2.0.0.0/parallel.bend&name=Chunks) type Chunks is Data: CNil{} CCon{start: U32, count: U32, next: Chunks} Parallel.close (https://jend.leeeet.dev/definition.txt?path=bend-visgraph@2.0.0.0/parallel.bend&name=close) def close(full: Bool, +start: U32, +end: U32, cs: Chunks) -> Chunks: Parallel.Cut (https://jend.leeeet.dev/definition.txt?path=bend-visgraph@2.0.0.0/parallel.bend&name=Cut) type Cut is Type: Cut{lefts: Array, rights: Array, cs: Chunks, m: U32} Parallel.cut (https://jend.leeeet.dev/definition.txt?path=bend-visgraph@2.0.0.0/parallel.bend&name=cut) def cut(count: Nat, +i: U32, lr: Array & U32, rr: Array & U32, +start: U32, +acc: U32, +target: U32, cs: Chunks, +m: U32) -> Cut: Parallel.fork_depth (https://jend.leeeet.dev/definition.txt?path=bend-visgraph@2.0.0.0/parallel.bend&name=fork_depth) def fork_depth() -> Nat: Parallel.block_depth (https://jend.leeeet.dev/definition.txt?path=bend-visgraph@2.0.0.0/parallel.bend&name=block_depth) # At most 512 blocks, and at least 32 points in each unless n is below 64. def block_depth(+n: U32) -> Nat: Parallel.target (https://jend.leeeet.dev/definition.txt?path=bend-visgraph@2.0.0.0/parallel.bend&name=target) # About two chunks for each of the tree's leaves. def target(+visits: F32) -> U32: Parallel.Halves (https://jend.leeeet.dev/definition.txt?path=bend-visgraph@2.0.0.0/parallel.bend&name=Halves) type Halves is Data: Halves{a: Chunks, na: U32, b: Chunks, nb: U32} Parallel.halve (https://jend.leeeet.dev/definition.txt?path=bend-visgraph@2.0.0.0/parallel.bend&name=halve) def halve(k: Nat, cs: Chunks, +na: U32, +total: U32, acc: Chunks) -> Halves: Parallel.halves (https://jend.leeeet.dev/definition.txt?path=bend-visgraph@2.0.0.0/parallel.bend&name=halves) def halves(cs: Chunks, +m: U32) -> Halves: Parallel.chunks (https://jend.leeeet.dev/definition.txt?path=bend-visgraph@2.0.0.0/parallel.bend&name=chunks) def chunks(cs: Chunks, o: VG.Out, +index: Bool, +g: VG.Visibility, +dir: VG.Direction, +k: VG.Weight, +lo: F32, +hi: F32) -> VG.Out: Parallel.leaf (https://jend.leeeet.dev/definition.txt?path=bend-visgraph@2.0.0.0/parallel.bend&name=leaf) def leaf(cs: Chunks, c: VG.Cols, xs: Array, +index: Bool, +g: VG.Visibility, +dir: VG.Direction, +k: VG.Weight, +lo: F32, +hi: F32) -> VG.Edges: Parallel.tree (https://jend.leeeet.dev/definition.txt?path=bend-visgraph@2.0.0.0/parallel.bend&name=tree) def tree(depth: Nat, h: Halves, cc: VG.Cols & VG.Cols, xx: Array & Array, +index: Bool, +g: VG.Visibility, +dir: VG.Direction, +k: VG.Weight, +lo: F32, +hi: F32) -> VG.Edges: Parallel.split (https://jend.leeeet.dev/definition.txt?path=bend-visgraph@2.0.0.0/parallel.bend&name=split) def split(+index: Bool, +g: VG.Visibility, +dir: VG.Direction, +k: VG.Weight, +lo: F32, +hi: F32, ys: Array, xs: Array, c: Cut) -> VG.Edges: Parallel.cut_all (https://jend.leeeet.dev/definition.txt?path=bend-visgraph@2.0.0.0/parallel.bend&name=cut_all) def cut_all(+index: Bool, +g: VG.Visibility, +dir: VG.Direction, +k: VG.Weight, +lo: F32, +hi: F32, +n: U32, ys: Array, xs: Array, lefts: Array, r: Array & F32) -> VG.Edges: Parallel.merged (https://jend.leeeet.dev/definition.txt?path=bend-visgraph@2.0.0.0/parallel.bend&name=merged) def merged(+index: Bool, +g: VG.Visibility, +dir: VG.Direction, +k: VG.Weight, +lo: F32, +hi: F32, +n: U32, ys: Array, xs: Array, m: VG.Merged) -> VG.Edges: Parallel.passed (https://jend.leeeet.dev/definition.txt?path=bend-visgraph@2.0.0.0/parallel.bend&name=passed) def passed(+index: Bool, +g: VG.Visibility, +dir: VG.Direction, +k: VG.Weight, +lo: F32, +hi: F32, +n: U32, xs: Array, cc: VG.Cols & VG.Cols) -> VG.Edges: Parallel.built (https://jend.leeeet.dev/definition.txt?path=bend-visgraph@2.0.0.0/parallel.bend&name=built) def built(+index: Bool, +g: VG.Visibility, +dir: VG.Direction, +k: VG.Weight, +lo: F32, +hi: F32, ys: Array, xs: Array, +n: U32) -> VG.Edges: Parallel.visibility (https://jend.leeeet.dev/definition.txt?path=bend-visgraph@2.0.0.0/parallel.bend&name=visibility) # VG.build on every thread: the stack runs on blocks, then the sweeps on # chunks of equal work. def visibility(+g: VG.Visibility, +dir: VG.Direction, +k: VG.Weight, +lo: F32, +hi: F32, ys: Array, xs: VG.Xs, +n: U32) -> VG.Edges: Parallel.chosen (https://jend.leeeet.dev/definition.txt?path=bend-visgraph@2.0.0.0/parallel.bend&name=chosen) def chosen(is_visibility: Bool, +g: VG.Visibility, +dir: VG.Direction, +k: VG.Weight, +lo: F32, +hi: F32, +limit: U32, ys: Array, xs: VG.Xs, +n: U32) -> VG.Edges: Parallel.build (https://jend.leeeet.dev/definition.txt?path=bend-visgraph@2.0.0.0/parallel.bend&name=build) # VG.build on every thread. def build(o: VG.Options, s: VG.Series) -> VG.Graph: Parallel.degrees_tree (https://jend.leeeet.dev/definition.txt?path=bend-visgraph@2.0.0.0/parallel.bend&name=degrees_tree) # Forks down the build's tree of EJoin into VG.degrees.into, which # forks nothing, so the runtime spreads the tallies over every thread. def degrees_tree(depth: Nat, es: VG.Edges, dd: Array & Array) -> Array: Parallel.degrees (https://jend.leeeet.dev/definition.txt?path=bend-visgraph@2.0.0.0/parallel.bend&name=degrees) # VG.degrees on every thread. def degrees(g: VG.Graph) -> Array: Report.weight_text (https://jend.leeeet.dev/definition.txt?path=bend-visgraph@2.0.0.0/src/report.bend&name=weight_text) def weight_text(weighted: Bool, w: F32) -> String: Report.edge_line (https://jend.leeeet.dev/definition.txt?path=bend-visgraph@2.0.0.0/src/report.bend&name=edge_line) def edge_line(+weighted: Bool, s: U32, t: U32, w: F32) -> String: Report.edges_text (https://jend.leeeet.dev/definition.txt?path=bend-visgraph@2.0.0.0/src/report.bend&name=edges_text) def edges_text(+weighted: Bool, es: VG.Edges, acc: String) -> String: Report.is_weighted (https://jend.leeeet.dev/definition.txt?path=bend-visgraph@2.0.0.0/src/report.bend&name=is_weighted) def is_weighted(k: VG.Weight) -> Bool: Report.bump.set (https://jend.leeeet.dev/definition.txt?path=bend-visgraph@2.0.0.0/src/report.bend&name=bump.set) def bump.set(+i: U32, r: Array & U32) -> Array: Report.bump (https://jend.leeeet.dev/definition.txt?path=bend-visgraph@2.0.0.0/src/report.bend&name=bump) def bump(d: Array, +i: U32) -> Array: Report.sequence_text (https://jend.leeeet.dev/definition.txt?path=bend-visgraph@2.0.0.0/src/report.bend&name=sequence_text) # The degree sequence, one per line. `r` is the degree array with the # degree of node `i`; the `f` nodes below `i` are still to print. def sequence_text(f: Nat, r: Array & U32, +i: U32, acc: String) -> String: Report.degree_sequence.from (https://jend.leeeet.dev/definition.txt?path=bend-visgraph@2.0.0.0/src/report.bend&name=degree_sequence.from) def degree_sequence.from(empty: Bool, +n: U32, d: Array) -> String: Report.degree_sequence (https://jend.leeeet.dev/definition.txt?path=bend-visgraph@2.0.0.0/src/report.bend&name=degree_sequence) # The degree sequence of the `n` nodes whose degrees `d` holds. def degree_sequence(+n: U32, d: Array) -> String: Report.count_loop (https://jend.leeeet.dev/definition.txt?path=bend-visgraph@2.0.0.0/src/report.bend&name=count_loop) # How many nodes have each degree: `r` is the degree array with the degree # of node `i`; the `f` nodes above `i` are still to count. def count_loop(f: Nat, r: Array & U32, +i: U32, c: Array) -> Array: Report.count_value (https://jend.leeeet.dev/definition.txt?path=bend-visgraph@2.0.0.0/src/report.bend&name=count_value) # Degree counts or the degree distribution: `k count` or `k count/n` for # each degree k some node has, from the smallest k. def count_value(share: Bool, +v: U32, +n: U32) -> String: Report.count_line (https://jend.leeeet.dev/definition.txt?path=bend-visgraph@2.0.0.0/src/report.bend&name=count_line) def count_line(zero: Bool, +share: Bool, +k: U32, +v: U32, +n: U32, acc: String) -> String: Report.counts_text (https://jend.leeeet.dev/definition.txt?path=bend-visgraph@2.0.0.0/src/report.bend&name=counts_text) def counts_text(f: Nat, +share: Bool, +n: U32, r: Array & U32, +k: U32, acc: String) -> String: Report.degree_counts.text (https://jend.leeeet.dev/definition.txt?path=bend-visgraph@2.0.0.0/src/report.bend&name=degree_counts.text) def degree_counts.text(+share: Bool, +n: U32, c: Array) -> String: Report.degree_counts.from (https://jend.leeeet.dev/definition.txt?path=bend-visgraph@2.0.0.0/src/report.bend&name=degree_counts.from) def degree_counts.from(empty: Bool, +share: Bool, +n: U32, d: Array) -> String: Report.degree_counts (https://jend.leeeet.dev/definition.txt?path=bend-visgraph@2.0.0.0/src/report.bend&name=degree_counts) def degree_counts(+share: Bool, +n: U32, d: Array) -> String: Report.edge_list (https://jend.leeeet.dev/definition.txt?path=bend-visgraph@2.0.0.0/src/report.bend&name=edge_list) # The edge list of `g`. def edge_list(+weighted: Bool, g: VG.Graph) -> String: Series.Parsed (https://jend.leeeet.dev/definition.txt?path=bend-visgraph@2.0.0.0/src/series.bend&name=Parsed) type Parsed is Data: Values{rev: List<&2, F32>, n: U32} Bad{line: U32} Series.add (https://jend.leeeet.dev/definition.txt?path=bend-visgraph@2.0.0.0/src/series.bend&name=add) def add(blank: Bool, m: Maybe<&2, F32>, +line: U32, rev: List<&2, F32>, +n: U32) -> Parsed: Series.step (https://jend.leeeet.dev/definition.txt?path=bend-visgraph@2.0.0.0/src/series.bend&name=step) def step(s: String, +line: U32, st: Parsed) -> Parsed: Series.scan (https://jend.leeeet.dev/definition.txt?path=bend-visgraph@2.0.0.0/src/series.bend&name=scan) # Base's String.lines recurses once per character, too deep for the JS # lane's stack, so this walks the text with tail calls. `h` is the character # before `s`, `nl` whether it is a newline, and `cur` the line before `h`, # last character first. def scan(s: String, nl: Bool, +h: Char, cur: String, +line: U32, st: Parsed) -> Parsed: Series.parse (https://jend.leeeet.dev/definition.txt?path=bend-visgraph@2.0.0.0/src/series.bend&name=parse) # The values of `text`, last first, and how many there are; or the first # line, counted from 1, that holds no number. def parse(text: String) -> Parsed: Series.column (https://jend.leeeet.dev/definition.txt?path=bend-visgraph@2.0.0.0/src/series.bend&name=column) def column(rev: List<&2, F32>, +i: U32, ys: Array) -> Array: Series.ys (https://jend.leeeet.dev/definition.txt?path=bend-visgraph@2.0.0.0/src/series.bend&name=ys) # The `n` values `rev`, last first, as an array indexed from 0. def ys(rev: List<&2, F32>, +n: U32) -> Array: Series.read_text.done (https://jend.leeeet.dev/definition.txt?path=bend-visgraph@2.0.0.0/src/series.bend&name=read_text.done) def read_text.done(m: File & Result<&1, &1, U32 & String, String>) -> IO(String): Series.read_text.sized (https://jend.leeeet.dev/definition.txt?path=bend-visgraph@2.0.0.0/src/series.bend&name=read_text.sized) def read_text.sized(m: File & Result<&1, &1, U32 & String, U32>) -> IO(String): Series.read_text (https://jend.leeeet.dev/definition.txt?path=bend-visgraph@2.0.0.0/src/series.bend&name=read_text) def read_text(path: String) -> IO(String): Series.XsCheck (https://jend.leeeet.dev/definition.txt?path=bend-visgraph@2.0.0.0/src/series.bend&name=XsCheck) # The x coordinates of a file, last first, if they suit a series; or why # they do not. type XsCheck is Data: XsOk{rev: List<&2, F32>} XsBad{msg: String} Series.increasing (https://jend.leeeet.dev/definition.txt?path=bend-visgraph@2.0.0.0/src/series.bend&name=increasing) # Whether each value of `rest`, last first, is below `a`, as ts2vg checks # that x increases. def increasing(rest: List<&2, F32>, +a: F32, ok: Bool) -> Bool: More: https://jend.leeeet.dev/packages/bend-visgraph.txt?definitions_offset=100