# Iota and Jot

> Mediated Wiki article. Canonical URL: https://mediated.wiki/source/Iota_and_Jot
> Markdown URL: https://mediated.wiki/source/Iota_and_Jot.md
> Source: https://en.wikipedia.org/wiki/Iota_and_Jot
> Source revision: 1337422469
> License: Creative Commons Attribution-ShareAlike 4.0 International (https://creativecommons.org/licenses/by-sa/4.0/)

In [formal language](/source/Formal_language) theory and [computer science](/source/Computer_science), **Iota** and **Jot** (from [Greek](/source/Greek_language) [iota](/source/Iota) ι, [Hebrew](/source/Hebrew) [yodh](/source/Yodh) י, the smallest letters in those two alphabets) are languages, extremely minimalist [formal systems](/source/Formal_system), designed to be even simpler than other more popular alternatives, such as [lambda calculus](/source/Lambda_calculus) and [SKI combinator calculus](/source/SKI_combinator_calculus). Thus, they can also be considered minimalist computer [programming languages](/source/Programming_language), or [Turing tarpits](/source/Turing_tarpit), [esoteric programming languages](/source/Esoteric_programming_language) designed to be as small as possible but still [Turing-complete](/source/Turing-complete). Both systems use only two symbols and involve only two operations. Both were created by professor of linguistics [Chris Barker](/source/Chris_Barker_(linguist)) in 2001. **Zot** (2002) is a successor to Iota that supports input and output.[1]

Note that this article uses [Backus–Naur form](/source/Backus%E2%80%93Naur_form) to describe syntax.

## Universal iota

Chris Barker's universal iota combinator ι has the very simple λ*f*.*f*SK structure defined here, using [denotational semantics](/source/Denotational_semantics) in terms of the [lambda calculus](/source/Lambda_calculus),

From this, one can recover the usual [SKI expressions](/source/SKI_combinator_calculus#SKI_expressions), thus:

Because of its minimalism, it has influenced research concerning [Chaitin's constant](/source/Chaitin's_constant).[2]

## Iota

Iota is the [LL(1)](/source/LL_parser) language that uses [prefix notation](/source/Polish_notation) to denote trees constructed from the aforementioned [universal iota](#Universal_iota) ι combinator (at leaves), and [function application](/source/Function_application) (denoted 0),

iota = "1" | "0" iota iota

so that for example 0,011,011 denotes ((\iota\iota)(\iota\iota)), whereas 0,101,011 denotes (\iota(\iota(\iota\iota))).

## Jot

Jot is the [regular language](/source/Regular_language) consisting of all sequences of 0 and 1,

jot = "" | jot "0" | jot "1"

The semantics is given by translation to SKI expressions. The empty string denotes I, w0 denotes (([w]S)K), where [w] is the translation of w, and w1 denotes (S(K[w])).

The point of the w1 case is that the translation satisfies (([w1]A)B) = ([w](A B)) for arbitrary SKI terms A and B. For example,

[w11100] = (([w1110]S)K) = (((([w111]S)K)S)K) = ((([w11](SK))S)K) = (([w1]((SK)S))K) = ([w](((SK)S)K)) = ([w]K)

holds for arbitrary strings w. Similarly,

[w11111000] = (((((([w11111]S)K)S)K)S)K) = ([w](((((SK)S)K)S)K)) = ([w]S)

holds as well. These two examples are the base cases of the translation of arbitrary SKI terms to Jot given by Barker, making Jot a natural [Gödel numbering](/source/G%C3%B6del_numbering) of all [algorithms](/source/Algorithm).

Jot is connected to Iota by the fact that [w0] = (\iota[w]) and by using the same identities on SKI terms for obtaining the basic combinators K and S.

## Zot

The Zot and Positive Zot languages command [Iota](#Iota) [computations](/source/Computation), from [inputs](/source/Input_(computer_science)) to [outputs](/source/Input/output) by [continuation-passing style](/source/Continuation-passing_style), in [syntax](/source/Syntax) resembling [Jot](#Jot),

zot = pot | ""
pot = iot | pot iot
iot = "0" | "1"

where 1 produces the continuation \lambda cL.L(\lambda lR.R(\lambda r.c(lr))), and 0 produces the continuation \lambda c.c\iota, and wi consumes the final input digit i by continuing through the continuation w.

## See also

- [Lambda calculus](/source/Lambda_calculus)
- [Combinatory logic](/source/Combinatory_logic)
- [Binary combinatory logic](/source/Binary_combinatory_logic)
- [SKI combinator calculus](/source/SKI_calculus)

## References

1. Barker, Chris. ["Zot"](https://web.archive.org/web/20160312050150/http://semarch.linguistics.fas.nyu.edu/barker/Iota/zot.html). *The Esoteric Programming Languages Webring*. Archived from [the original](https://www.nyu.edu/projects/barker/Iota/zot.html) on 12 March 2016. Retrieved 4 October 2016.

1. Stay, Michael (August 2005). ["Very Simple Chaitin Machines for Concrete AIT"](http://content.iospress.com/articles/fundamenta-informaticae/fi68-3-03). *[Fundamenta Informaticae](/source/Fundamenta_Informaticae)*. **68** (3): 231–247. IOS Press. [arXiv:cs/0508056](https://arxiv.org/abs/cs/0508056). [Bibcode:2005cs........8056S](https://ui.adsabs.harvard.edu/abs/2005cs........8056S). [doi:10.3233/FUN-2005-68303](https://doi.org/10.3233/FUN-2005-68303). Retrieved 20 February 2011.

## External links

- [Official website](http://www.nyu.edu/projects/barker)
- Barker, Chris. ["Iota and Jot: the simplest languages?"](https://web.archive.org/web/20160823182917/http://semarch.linguistics.fas.nyu.edu/barker/Iota). *The Esoteric Programming Languages Webring*. Archived from [the original](https://www.nyu.edu/projects/barker/Iota/) on 23 August 2016. Retrieved 13 August 2004.
- [https://esolangs.org/wiki/Iota](https://esolangs.org/wiki/Iota)
- [https://esolangs.org/wiki/Jot](https://esolangs.org/wiki/Jot)
- [https://esolangs.org/wiki/Zot](https://esolangs.org/wiki/Zot)

---
Adapted from the Wikipedia article [Iota and Jot](https://en.wikipedia.org/wiki/Iota_and_Jot) by Wikipedia contributors ([contributor history](https://en.wikipedia.org/wiki/Iota_and_Jot?action=history)). Available under [Creative Commons Attribution-ShareAlike 4.0 International](https://creativecommons.org/licenses/by-sa/4.0/). Changes may have been made.
