Titles: name: Name inputs: 'Input Ranges*' acc: Accumulator outputs: Output ops: 'Operations' defaults: Default operations order: In-order basis: Based on family: '' Catamorphisms: - {name: 'accumulate', lib: 'std', inputs: '1', acc: 'Arg', outputs: 'Value', ops: 'A', defaults: 'plus', order: 'Yes', iter: '(x:[T], a:U, o:A) -> a{n} = o(a, x{i}) -> a', basis: '', family: '0'} - {name: 'sum', lib: 'kblib', inputs: '1', acc: 'First', outputs: 'Value', ops: 'A', defaults: 'plus', order: 'Yes', iter: '(x:[T], o:A) (a = head x, y = tail x) -> a{n} = o(a, y{i}) -> a', basis: 'std::accumulate', family: '0'} - {name: 'reduce', lib: 'std', inputs: '1', acc: 'Arg', outputs: 'Value', ops: 'acR', defaults: 'plus', order: 'No', iter: '(x:[T], b:T, o:acR) (y: cat b x) -> a{n} = o(a, y{i}) -> a', basis: '', family: '0'} - {name: 'inner_product', lib: 'std', inputs: '2', acc: 'Arg', outputs: 'Value', ops: 'A, bT', defaults: 'plus, multiplies', order: 'Yes', iter: '(x:[T1], y:[T1], a:U, s:A, p:bT) -> a{n} = s(a, p(x{i}, y{i})) -> a', basis: '', family: '1'} - {name: 'adjacent_reduce', lib: 'CH', inputs: '1s', acc: 'Arg', outputs: 'Value', ops: 'A, bT', defaults: '-', order: 'Yes', iter: '(x:[T], a:U, s:A, p:bT) -> a{n} = s(a, p(x{i}, x{i+1})) -> a', basis: 'std::inner_product', family: '1'} - {name: 'transform_reduce(1)', lib: 'std', inputs: '1', acc: 'Arg', outputs: 'Value', ops: 'acR, uT', defaults: 'plus, multiplies', order: 'No', iter: '(x:[T], a:U, o:R, p:uT) -> a{n} = o(a, p(x{i})) -> a', basis: '', family: '3'} - {name: 'transform_reduce(2)', lib: 'std', inputs: '2', acc: 'Arg', outputs: 'Value', ops: 'acR, bT', defaults: 'plus, multiplies', order: 'No', iter: '(x:[T1], y:[T2], a:U, o:R, p:bT) -> a{n} = o(a, p(x{i}, y{i})) -> a', basis: '', family: '3'} - {name: 'adjacent_find', lib: 'std', inputs: '1s', acc: 'No', outputs: 'Position', ops: 'bP', defaults: 'equal_to', order: 'Yes (short-circuits)', iter: '(x:[T], p:bP) -> p(x{i}, x{i+1}) ? -> x+i', basis: '', family: '7'} - {name: 'find(1)', lib: 'std', inputs: '1', acc: 'No', outputs: 'Position', ops: 'Value', defaults: '-', order: 'Yes (short-circuits)', iter: '(x:[T], a:U) -> x{i} == a ? -> x+i', basis: '', family: '9'} - {name: 'find(2)', lib: 'std', inputs: '1', acc: 'No', outputs: 'Position', ops: 'Value / uP', defaults: '-', order: 'Yes (short-circuits)', iter: '(x:[T], p:uP) -> p(x{i}) ? -> x+i', basis: '', family: '9'} Anamorphisms: - {name: 'transform_inclusive_scan(1)', lib: 'std', inputs: '1', acc: 'First', ops: 'aR, uT', defaults: '-', order: 'No', iter: '(x:[T], d:[U], o:aR, p:uT) a=head x -> d{i} = a{n} = o(a, p(x{i})) -> d', basis: '', family: '3'} - {name: 'transform_inclusive_scan(2)', lib: 'std', inputs: '1', acc: 'Arg', ops: 'aR, uT', defaults: '-', order: 'No', iter: '(x:[T], d:[U], o:aR, p:uT, a:U) -> d{i} = a{n} = o(a, p(x{i})) -> d', basis: '', family: '3'} - {name: 'transform_exclusive_scan', lib: 'std', inputs: '1', acc: 'Arg', ops: 'aR, uT', defaults: '-', order: 'No', iter: '(x:[T], d:[U], o:aR, p:uT, a:U) d{0} = a -> d{i} = a{n} = o(a, p(x{i+1})) -> d', basis: '', family: '3'} - {name: 'partial_sum', lib: 'std', inputs: '1', acc: 'First', ops: 'A', defaults: 'plus', order: 'Yes', iter: '(x:[T], d:[U], o:A) a = x{0} -> d{i} = a{n} = o(a, x{i}) -> d', basis: '', family: '4'} - {name: 'inclusive_scan(1)', lib: 'std', inputs: '1', acc: 'First', ops: 'aR', defaults: 'plus', order: 'No', iter: '(x:[T], d:[U], o:aR) a = x{0} -> d{i} = a{n} = o(a, x{i}) -> d', basis: '', family: '4'} - {name: 'inclusive_scan(2)', lib: 'std', inputs: '1', acc: 'Arg', ops: 'aR', defaults: 'plus', order: 'No', iter: '(x:[T], d:[U], o:aR, a:U) -> d{i} = a{n} = o(a, x{i}) -> d', basis: '', family: '4'} - {name: 'exclusive_scan', lib: 'std', inputs: '1', acc: 'Arg', ops: 'aR', defaults: 'plus', order: 'No', iter: '(x:[T], d:[U], o:aR) a = x{0} -> d{i} = a{n} = o(a, x{i+1}) -> d', basis: '', family: '4'} - {name: 'adjacent_difference', lib: 'std', inputs: '1s', acc: 'Quasi', ops: 'fD', defaults: 'minus', order: 'Yes / No', iter: '(x:[T], d:[U], o:fD) d{0} = x{0} -> d{i+1} = o(x{i+1}, x{i}) -> d', basis: '', family: '5'} - {name: 'adjacent_transform', lib: 'CH', inputs: '1s', acc: 'Quasi', ops: 'D', defaults: '-', order: 'Yes / No', iter: '(x:[T], d:[U], o:D) d{0} = x{0} -> d{i+1} = o(x{i}, x{i+1}) -> d', basis: 'std::adjacent_difference', family: '5'} - {name: 'adjacent_inclusive_scan', lib: 'CH', inputs: '1s', acc: 'First', ops: 'A, fD', defaults: '-', order: 'Yes', iter: '(x:[T], d:[U], o:A, p:D) d{0} = a = x{0} -> d{i+1} = a = o(a, p(x{i+1}, x{i})) -> d', basis: '', family: '6'} - {name: 'transform(1)', lib: 'std', inputs: '1', acc: 'No', ops: 'uT', defaults: '-', order: 'Yes', iter: '(x:[T], d:[U], o:uT) -> d{i} = o(x{i}) -> d', basis: '', family: '8'} - {name: 'transform(2)', lib: 'std', inputs: '2', acc: 'No', ops: 'uT / bT', defaults: '-', order: 'Yes', iter: '(x:[T], y:[U], d:[V], o:bT) -> d{i} = o(x{i}, y{i}) -> d', basis: '', family: '8'} - {name: 'iota', lib: 'std', inputs: 'Value', acc: 'Arg', ops: '-', defaults: '%R%increment%', order: 'Yes', iter: '(d:[U], a:T) -> d{i} = ++a -> ()', basis: '', family: '10'} # ^(.+)@(.+)@(.+)@(.+)@(.+)@(.+)@(.+)@(.+)@(.+)$ urls: common: std: ['https://en.cppreference.com/w/cpp/', '([a-z_])(_if|_if_not)?', 'algorithm/\1'] kblib: ['', ''] exceptions: std: ['all_of', 'any_of', 'none_of']: @/all_any_none_of ['ranges::starts_with']: @/ranges/starts_with ['ranges::ends_with']: @/ranges/ends_with ['shift_left', 'shift_right']: @/shift ['shuffle']: @/random_shuffle