{
  "id": "fn-core-sput",
  "dataComponent": "core",
  "heading": {
    "title": "sput",
    "badges": ["Core", "Print"]
  },
  "synopsis": "Prints a value in bracketed form, then returns that same value unchanged. If given an InkIterator or InkTransform, prints items asynchronously as they become available.",
  "codeBlocks": [
    "############################################\n# Example usage:\n############################################\n\n# 1) Provide any single argument to sput.\nsput(123)            # prints '123', returns 123\n\nnums = [1,2,3]\nsput(nums)           # prints '[1, 2, 3]', returns the original [1,2,3]\n\n# 2) Non-blocking iteration (InkIterator or InkTransform)\niter = ink(0,5)\nsput(iter)\n# => prints 0, 1, 2, 3, 4 as they become available (async)\n# returns the iterator/transform immediately\n\n# 3) The function does not support partial usage or placeholders.\n# 4) If multiple arguments are provided, an error is raised.\n"
  ],
  "notes": [
    "Requires exactly one argument (of any Value type).",
    "Prints a bracketed or typed representation of that argument to stdout, then returns it unchanged.",
    "If the argument is an InkIterator or InkTransform, sput will not block—items are printed as they are yielded during poller/event cycles.",
    "Use `sput` for debugging or quick prints. If your environment logs to console, you’ll see the output immediately.",
    "For ordinary (non-iterator/transform) values, sput prints synchronously as before."
  ]
}
