Jot (programming Language)
   HOME

TheInfoList



OR:

In
formal language In logic, mathematics, computer science, and linguistics, a formal language is a set of strings whose symbols are taken from a set called "alphabet". The alphabet of a formal language consists of symbols that concatenate into strings (also c ...
theory and
computer science Computer science is the study of computation, information, and automation. Computer science spans Theoretical computer science, theoretical disciplines (such as algorithms, theory of computation, and information theory) to Applied science, ...
, Iota and Jot (from
Greek Greek may refer to: Anything of, from, or related to Greece, a country in Southern Europe: *Greeks, an ethnic group *Greek language, a branch of the Indo-European language family **Proto-Greek language, the assumed last common ancestor of all kno ...
iota Iota (; uppercase Ι, lowercase ι; ) is the ninth letter of the Greek alphabet. It was derived from the Phoenician letter Yodh. Letters that arose from this letter include the Latin I and J, the Cyrillic І (І, і), Yi (Ї, ї), and J ...
ι,
Hebrew Hebrew (; ''ʿÎbrit'') is a Northwest Semitic languages, Northwest Semitic language within the Afroasiatic languages, Afroasiatic language family. A regional dialect of the Canaanite languages, it was natively spoken by the Israelites and ...
yodh Yodh (also spelled jodh, yod, or jod) is the tenth letter of the Semitic abjads, including Phoenician ''yōd'' 𐤉, Hebrew ''yod'' , Aramaic ''yod'' 𐡉, Syriac ''yōḏ'' ܝ, and Arabic ''yāʾ'' . It is also related to the Ancient Nort ...
י, the smallest letters in those two alphabets) are languages, extremely minimalist
formal system A formal system is an abstract structure and formalization of an axiomatic system used for deducing, using rules of inference, theorems from axioms. In 1921, David Hilbert proposed to use formal systems as the foundation of knowledge in ma ...
s, designed to be even simpler than other more popular alternatives, such as
lambda calculus In mathematical logic, the lambda calculus (also written as ''λ''-calculus) is a formal system for expressing computability, computation based on function Abstraction (computer science), abstraction and function application, application using var ...
and
SKI combinator calculus The SKI combinator calculus is a combinatory logic system and a computational system. It can be thought of as a computer programming language, though it is not convenient for writing software. Instead, it is important in the mathematical theory o ...
. Thus, they can also be considered minimalist computer
programming language A programming language is a system of notation for writing computer programs. Programming languages are described in terms of their Syntax (programming languages), syntax (form) and semantics (computer science), semantics (meaning), usually def ...
s, or
Turing tarpit A Turing tarpit (or Turing tar-pit) is any programming language or computer interface that allows for flexibility in function but is difficult to learn and use because it offers little or no support for common tasks. The phrase was coined in 198 ...
s,
esoteric programming language An esoteric programming language (sometimes shortened to esolang) is a programming language designed to test the boundaries of computer programming language design, as a proof of concept, as software art, as a hacking interface to another language ...
s designed to be as small as possible but still
Turing-complete In computability theory, a system of data-manipulation rules (such as a model of computation, a computer's instruction set, a programming language, or a cellular automaton) is said to be Turing-complete or computationally universal if it can be ...
. Both systems use only two symbols and involve only two operations. Both were created by professor of linguistics Chris Barker in 2001. Zot (2002) is a successor to Iota that supports input and output. Note that this article uses Backus-Naur form to describe syntax.


Universal iota

Chris Barker's universal iota combinator has the very simple λf.fSK structure defined here, using
denotational semantics In computer science, denotational semantics (initially known as mathematical semantics or Scott–Strachey semantics) is an approach of formalizing the meanings of programming languages by constructing mathematical objects (called ''denotations'' ...
in terms of the
lambda calculus In mathematical logic, the lambda calculus (also written as ''λ''-calculus) is a formal system for expressing computability, computation based on function Abstraction (computer science), abstraction and function application, application using var ...
, From this, one can recover the usual SKI expressions, thus: Because of its minimalism, it has influenced research concerning
Chaitin's constant In the computer science subfield of algorithmic information theory, a Chaitin constant (Chaitin omega number) or halting probability is a real number that, informally speaking, represents the probability that a randomly constructed program will ...
.


Iota

Iota is the LL(1) language that prefix orders trees of the aforementioned Universal iota combinator leafs,
cons In computer programming, ( or ) is a fundamental function in most dialects of the Lisp programming language. ''constructs'' memory objects which hold two values or pointers to two values. These objects are referred to as (cons) cells, conses, ...
ed by
function application In mathematics, function application is the act of applying a function to an argument from its domain so as to obtain the corresponding value from its range. In this sense, function application can be thought of as the opposite of function abs ...
, iota = "1" , "0" iota iota so that for example denotes ((\iota\iota)(\iota\iota)), whereas denotes (\iota(\iota(\iota\iota))).


Jot

Jot is the
regular language In theoretical computer science and formal language theory, a regular language (also called a rational language) is a formal language that can be defined by a regular expression, in the strict sense in theoretical computer science (as opposed to ...
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 (( )K), where /math> is the translation of w, and w1 denotes (S(K ). The point of the w1 case is that the translation satisfies (( 1)B) = ( A B)) for arbitrary SKI terms A and B. For example, 11100= ((
1110 Year 1110 ( MCX) was a common year starting on Saturday of the Julian calendar. Events By date * May 5: Lunar eclipse, in which the moon becomes totally dark (according to the ''Peterborough Chronicle''), due to an earlier volcanic erupti ...
)K) = (((( 111)K)S)K) = ((( 11SK))S)K) = (( 1(SK)S))K) = ( ((SK)S)K)) = ( ) holds for arbitrary strings w. Similarly, 11111000= (((((( 11111)K)S)K)S)K) = ( ((((SK)S)K)S)K)) = ( ) 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 In mathematical logic, a Gödel numbering is a function that assigns to each symbol and well-formed formula of some formal language a unique natural number, called its Gödel number. Kurt Gödel developed the concept for the proof of his incom ...
of all
algorithm In mathematics and computer science, an algorithm () is a finite sequence of Rigour#Mathematics, mathematically rigorous instructions, typically used to solve a class of specific Computational problem, problems or to perform a computation. Algo ...
s. Jot is connected to Iota by the fact that 0= (\iota 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 (; uppercase Ι, lowercase ι; ) is the ninth letter of the Greek alphabet. It was derived from the Phoenician letter Yodh. Letters that arose from this letter include the Latin I and J, the Cyrillic І (І, і), Yi (Ї, ї), and J ...
computation A computation is any type of arithmetic or non-arithmetic calculation that is well-defined. Common examples of computation are mathematical equation solving and the execution of computer algorithms. Mechanical or electronic devices (or, hist ...
s, from inputs to
output Output may refer to: * The information produced by a computer, see Input/output * An output state of a system, see state (computer science) * Output (economics), the amount of goods and services produced ** Gross output in economics, the valu ...
s by
continuation-passing style In functional programming, continuation-passing style (CPS) is a style of programming in which control is passed explicitly in the form of a continuation. This is contrasted with direct style, which is the usual style of programming. Gerald Jay S ...
, in
syntax In linguistics, syntax ( ) is the study of how words and morphemes combine to form larger units such as phrases and sentences. Central concerns of syntax include word order, grammatical relations, hierarchical sentence structure (constituenc ...
resembling Jot, zot = pot , "" pot = iot , pot iot iot = "0" , "1" where produces the continuation \lambda cL.L(\lambda lR.R(\lambda r.c(lr))), and produces the continuation \lambda c.c\iota, and consumes the final input digit by continuing through the continuation .


See also

*
Lambda calculus In mathematical logic, the lambda calculus (also written as ''λ''-calculus) is a formal system for expressing computability, computation based on function Abstraction (computer science), abstraction and function application, application using var ...
*
Combinatory logic Combinatory logic is a notation to eliminate the need for quantified variables in mathematical logic. It was introduced by Moses Schönfinkel and Haskell Curry, and has more recently been used in computer science as a theoretical model of com ...
* Binary combinatory logic *
SKI combinator calculus The SKI combinator calculus is a combinatory logic system and a computational system. It can be thought of as a computer programming language, though it is not convenient for writing software. Instead, it is important in the mathematical theory o ...


References


External links

* * * https://esolangs.org/wiki/Iota * https://esolangs.org/wiki/Jot * https://esolangs.org/wiki/Zot Esoteric programming languages Combinatory logic Algorithmic information theory {{Esoteric programming languages