Proc has broad support for interacting with enumerable values like arrays and cursors.

In the simplest use-cases, enumerators are used to iterate over and mutate enumerable values.

something went wrong :(
Upcasing an array of strings
require "proc"

client = Proc.connect("PROCAUTH")
const Proc = require("@proc.dev/client");
const client = Proc.connect("PROCAUTH");
client.enum.map.call(["foo", "bar", "baz"]) do
client.enum.map.call(["foo", "bar", "baz"], {}, () => {
  return client.type.string.upcase;
curl "https://proc.run/enum/map" --silent \
--header "authorization: bearer $authorization" \
--header "content-type: application/vnd.proc+json" \
--header "accept: text/plain" \
--data '[[">>", ["%%", ["foo", "bar", "baz"]]], ["$$", "proc", ["{}", ["()", "type.string.upcase"]]]]'

["FOO", "BAR", "BAZ"]

Most enum.* procs can be chained together to perform more complex enumerations in a single call.

Cursors are also fully supported by enum.* procs, providing patterns for iterating and mutating large datasets from the key-value store. Learn more about how to interact with cursors in the cursor docs.

Stuck? Want to chat about an idea? Join the community on Discord.