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

# lambda(3tcl)

Utility commands for anonymous procedures

```

```

## NAME

lambda - Utility commands for anonymous procedures

## SYNOPSIS

package require **Tcl 8.5 9**

package require **lambda ?1.1?**

**::lambda** *arguments* *body* ?*arg*...?

**::lambda@** *namespace* *arguments* *body* ?*arg*...?

```

```

## DESCRIPTION

This package provides two convenience commands to make the writing of anonymous procedures, i.e. lambdas more **proc**-like. Instead of, for example, to write

```
     set f {::apply {{x} {
        ....
     }}}
```

with its deep nesting of braces, or

```
     set f [list ::apply {{x y} {
        ....
     }} $value_for_x]
```

with a list command to insert some of the arguments of a partial application, just write

```
     set f [lambda {x} {
        ....
     }]
```

and

```
     set f [lambda {x y} {
        ....
     } $value_for_x]
```

## COMMANDS

- **::lambda** *arguments* *body* ?*arg*...?

  The command constructs an anonymous procedure from the list of arguments, body script and (optional) predefined argument values and returns a command prefix representing this anonymous procedure.

  When invoked the *body* is run in a new procedure scope just underneath the global scope, with the arguments set to the values supplied at both construction and invokation time.

- **::lambda@** *namespace* *arguments* *body* ?*arg*...?

  The command constructs an anonymous procedure from the namespace name, list of arguments, body script and (optional) predefined argument values and returns a command prefix representing this anonymous procedure.

  When invoked the *body* is run in a new procedure scope in the *namespace*, with the arguments set to the values supplied at both construction and invokation time.

## AUTHORS

Andreas Kupries

## BUGS, IDEAS, FEEDBACK

This document, and the package it describes, will undoubtedly contain bugs and other problems. Please report such in the category *lambda* 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.

## SEE ALSO

[apply(3tcl)](/apply/3tcl.md), [proc(3tcl)](/proc/3tcl.md)

## KEYWORDS

anonymous procedure, callback, command prefix, currying, lambda, partial application, proc

## CATEGORY

Utility

## COPYRIGHT

```
Copyright (c) 2011 Andreas Kupries, BSD licensed
```
