---
name: "lazyset"
section: "3tcl"
platform: "linux"
package: "tcllib"
version: "2.0+dfsg-4"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/lazyset"
---

# lazyset(3tcl)

Lazy evaluation

```

```

## NAME

lazyset - Lazy evaluation

## SYNOPSIS

package require **Tcl 8.5 9**

package require **lazyset ?1.1?**

**::lazyset::variable** ?*-array boolean*? ?*-appendArgs boolean*? *variableName* *commandPrefix*

```

```

## DESCRIPTION

The **lazyset** package provides a mechanism for deferring execution of code until a specific variable or any index of an array is referenced.

## COMMANDS

- **::lazyset::variable** ?*-array boolean*? ?*-appendArgs boolean*? *variableName* *commandPrefix*

  Arrange for the code specified as *commandPrefix* to be executed when the variable whose name is specified by *variableName* is read for the first time. If the optional argument *-array boolean* is specified as true, then the variable specified as *variableName* is treated as an array and attempting to read any index of the array causes that index to be set by the *commandPrefix* as they are read. If the optional argument *-appendArgs boolean* is specified as false, then the variable name and subnames are not appended to the *commandPrefix* before it is evaluated.  If the argument *-appendArgs boolean* is not specified or is specified as true then 1 or 2 additional arguments are appended to the *commandPrefix*. If *-array boolean* is specified as true, then 2 arguments are appended corresponding to the name of the variable and the index, otherwise 1 argument is appended containing the name of variable. The *commandPrefix* code is run in the same scope as the variable is read.

## EXAMPLES

```
	::lazyset::variable page {apply {{name} {
		package require http
		set token [http::geturl http://www.tcl.tk/]
		set data [http::data $token]
		return $data
	}}}
	puts $page
```

```
	::lazyset::variable -array true page {apply {{name index} {
		package require http
		set token [http::geturl $index]
		set data [http::data $token]
		return $data
	}}}
	puts $page(http://www.tcl.tk/)
```

```
	::lazyset::variable -appendArgs false simple {
		return -level 0 42
	}
	puts $simple
```

## AUTHORS

Roy Keene

## BUGS, IDEAS, FEEDBACK

This document, and the package it describes, will undoubtedly contain bugs and other problems. Please report such in the category *utility* of the *Tcllib Trackers* \[http://core.tcl.tk/tcllib/reportlist\]. Please also report any ideas for enhancements you may have for either package and/or documentation.

When proposing code changes, please provide *unified diffs*, i.e the output of **diff -u**.

Note further that *attachments* are strongly preferred over inlined patches. Attachments can be made by going to the **Edit** form of the ticket immediately after its creation, and then using the left-most button in the secondary navigation bar.

## CATEGORY

Utility

## COPYRIGHT

```
Copyright (c) 2018 Roy Keene
```
