Jot (programming Language)
   HOME

TheInfoList



OR:

In
formal language In logic, mathematics, computer science, and linguistics, a formal language consists of words whose letters are taken from an alphabet and are well-formed according to a specific set of rules. The alphabet of a formal language consists of symb ...
theory and
computer science Computer science is the study of computation, automation, and information. Computer science spans theoretical disciplines (such as algorithms, theory of computation, information theory, and automation) to Applied science, practical discipli ...
, Iota and Jot (from
Greek Greek may refer to: Greece 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 ...
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 alphabet, Latin I and J, the Cyrillic І (І, і), Yi (Cy ...
ι,
Hebrew Hebrew (; ; ) is a Northwest Semitic language of the Afroasiatic language family. Historically, it is one of the spoken languages of the Israelites and their longest-surviving descendants, the Jews and Samaritans. It was largely preserved ...
yodh Yodh (also spelled jodh, yod, or jod) is the tenth letter of the Semitic abjads, including Phoenician Yōd /𐤉, Hebrew Yōd , Aramaic Yod , Syriac Yōḏ ܝ, and Arabic . Its sound value is in all languages for which it is used; in many lan ...
י, the smallest letters in those two alphabets) are languages, extremely minimalist
formal system A formal system is an abstract structure used for inferring theorems from axioms according to a set of rules. These rules, which are used for carrying out the inference of theorems from axioms, are the logical calculus of the formal system. A form ...
s, designed to be even simpler than other more popular alternatives, such as the
lambda calculus Lambda calculus (also written as ''λ''-calculus) is a formal system in mathematical logic for expressing computation based on function abstraction and application using variable binding and substitution. It is a universal model of computation ...
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. Most programming languages are text-based formal languages, but they may also be graphical. They are a kind of computer language. The description of a programming ...
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 1982 ...
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 computer's instruction set, a programming language, or a cellular automaton) is said to be Turing-complete or computationally universal if it can be used to simulate any Tur ...
. Both systems use only two symbols and involve only two operations. Both were created by professor of linguistics
Chris Barker Christopher Andrew Barker (2 March 1980 – 1 January 2020) was an English professional footballer who played as a defender. He represented Alfreton Town, Barnsley, Cardiff City, Stoke City, Colchester United, Queens Park Rangers, Plymouth Arg ...
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 Lambda calculus (also written as ''λ''-calculus) is a formal system in mathematical logic for expressing computation based on function abstraction and application using variable binding and substitution. It is a universal model of computation ...
, 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) In computer science, an LL parser (Left-to-right, leftmost derivation) is a top-down parser for a restricted context-free language. It parses the input from Left to right, performing Leftmost derivation of the sentence. An LL parser is called an ...
language that prefix orders trees of the aforementioned
Universal iota Universal is the adjective for universe. Universal may also refer to: Companies * NBCUniversal, a media and entertainment company ** Universal Animation Studios, an American Animation studio, and a subsidiary of NBCUniversal ** Universal TV, a t ...
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 abst ...
, 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 (link will display the full calendar) of the Julian calendar. Events By date * May 5: Lunar eclipse, in which the moon became totally dark according to the Peterborough Chronicle, d ...
)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. The concept was developed by Kurt Gödel for the proof of his ...
of all
algorithm In mathematics and computer science, an algorithm () is a finite sequence of rigorous instructions, typically used to solve a class of specific Computational problem, problems or to perform a computation. Algorithms are used as specificat ...
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 alphabet, Latin I and J, the Cyrillic І (І, і), Yi (Cy ...
computation Computation is any type of arithmetic or non-arithmetic calculation that follows a well-defined model (e.g., an algorithm). Mechanical or electronic devices (or, historically, people) that perform computations are known as ''computers''. An es ...
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 value of ...
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 Suss ...
, 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 ( constituency) ...
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 Lambda calculus (also written as ''λ''-calculus) is a formal system in mathematical logic for expressing computation based on function abstraction and application using variable binding and substitution. It is a universal model of computation ...
*
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 comput ...
*
Binary combinatory logic Binary combinatory logic (BCL) is a computer programming language that uses binary terms 0 and 1 to create a complete formulation of combinatory logic using only the symbols 0 and 1.. Using the S and K combinators, complex boolean algebra functio ...
*
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 {{DEFAULTSORT:Iota and Jot Esoteric programming languages Combinatory logic Algorithmic information theory