A Programming Language: Difference between revisions

Jump to navigation Jump to search
m
Text replacement - "</code>" to "</source>"
Miraheze>Adám Brudzewsky
m (Text replacement - "<code>" to "<source lang=apl inline>")
Miraheze>Adám Brudzewsky
m (Text replacement - "</code>" to "</source>")
Line 12: Line 12:
''A Programming Language'' features precursors of many APL [[primitive functions]]. These include:
''A Programming Language'' features precursors of many APL [[primitive functions]]. These include:
* The [[shape]] vector is not used, but dimension functions are present: ν gives the length of a vector, and ν and μ give the row length and column length of a matrix.
* The [[shape]] vector is not used, but dimension functions are present: ν gives the length of a vector, and ν and μ give the row length and column length of a matrix.
* [[Comparison functions]] are defined using the symbols <source lang=apl inline><</code>, <source lang=apl inline>></code>, and <source lang=apl inline>=</code> and the rules that a vertical bar negates a relation and that an underline combines it with <source lang=apl inline>=</code> (relations are combined by or-ing them together).
* [[Comparison functions]] are defined using the symbols <source lang=apl inline><</source>, <source lang=apl inline>></source>, and <source lang=apl inline>=</source> and the rules that a vertical bar negates a relation and that an underline combines it with <source lang=apl inline>=</source> (relations are combined by or-ing them together).
* The arithmetic [[scalar functions]] [[Sum]] (<source lang=apl inline>+</code>), [[Difference]] (<source lang=apl inline>-</code>), [[Product]] (×), and [[Quotient]] (÷) are defined as in mathematics.
* The arithmetic [[scalar functions]] [[Sum]] (<source lang=apl inline>+</source>), [[Difference]] (<source lang=apl inline>-</source>), [[Product]] (×), and [[Quotient]] (÷) are defined as in mathematics.
* The logical functions [[And]] (<source lang=apl inline>∧</code>) and [[Or]] (<source lang=apl inline>∨</code>) also match mathematical usage. [[Logical negation]] is denoted with an overbar.
* The logical functions [[And]] (<source lang=apl inline>∧</source>) and [[Or]] (<source lang=apl inline>∨</source>) also match mathematical usage. [[Logical negation]] is denoted with an overbar.
* The functions [[Absolute Value]], [[Ceiling]], and [[Floor]] use paired symbols. The paired symbols for ceiling and floor were adopted by mathematicians (absolute value was already in use), but APL implementations dropped the closing symbol for consistency with monadic function syntax.
* The functions [[Absolute Value]], [[Ceiling]], and [[Floor]] use paired symbols. The paired symbols for ceiling and floor were adopted by mathematicians (absolute value was already in use), but APL implementations dropped the closing symbol for consistency with monadic function syntax.
* [[Residue]] uses <source lang=apl inline>|</code> as in APL, but allows a subscript to indicate the smallest value allowed—mirroring [[index origin]].
* [[Residue]] uses <source lang=apl inline>|</source> as in APL, but allows a subscript to indicate the smallest value allowed—mirroring [[index origin]].
* [[Iota]] is called "Interval" and uses the letter <source lang=apl inline>⍳</code> with an optional [[index origin]] subscript.
* [[Iota]] is called "Interval" and uses the letter <source lang=apl inline>⍳</source> with an optional [[index origin]] subscript.
* [[Index-Of]] is also written with <source lang=apl inline>⍳</code> and an [[index origin]] subscript. It is defined on vector left arguments and vector or scalar right arguments.
* [[Index-Of]] is also written with <source lang=apl inline>⍳</source> and an [[index origin]] subscript. It is defined on vector left arguments and vector or scalar right arguments.
* [[Membership]] is <source lang=apl inline>∊</code> as in APL.
* [[Membership]] is <source lang=apl inline>∊</source> as in APL.
* [[Reduction]] (<source lang=apl inline>/</code>, or <source lang=apl inline>//</code> instead of <source lang=apl inline>⌿</code>) starts from the left rather than the right. For reductions of [[empty]] arrays, the [[identity element]] is returned.
* [[Reduction]] (<source lang=apl inline>/</source>, or <source lang=apl inline>//</source> instead of <source lang=apl inline>⌿</source>) starts from the left rather than the right. For reductions of [[empty]] arrays, the [[identity element]] is returned.
* [[Rotate]] is written with arrows: <source lang=apl inline>↑</code> for left rotation and <source lang=apl inline>↓</code> for right rotation.
* [[Rotate]] is written with arrows: <source lang=apl inline>↑</source> for left rotation and <source lang=apl inline>↓</source> for right rotation.
* [[Reverse]] is written with an arrow in some direction above the argument.
* [[Reverse]] is written with an arrow in some direction above the argument.
* [[Transpose]] is written with a tilde <source lang=apl inline>~</code> above a matrix.
* [[Transpose]] is written with a tilde <source lang=apl inline>~</source> above a matrix.
* [[Compress|Compression]] and [[Expand|Expansion]] use <source lang=apl inline>/</code> and <source lang=apl inline>\</code> as in APL.
* [[Compress|Compression]] and [[Expand|Expansion]] use <source lang=apl inline>/</source> and <source lang=apl inline>\</source> as in APL.
* [[Catenate]] uses a circled comma.
* [[Catenate]] uses a circled comma.
* [[Indexing]] is written with a subscript, or <source lang=apl inline>∫<sub>j</sub></code> to allow [[index origin]] specification.
* [[Indexing]] is written with a subscript, or <source lang=apl inline>∫<sub>j</sub></source> to allow [[index origin]] specification.
* [[Grade]] is called "ordering", and the Grade of <source lang=apl inline>x</code> with [[index origin]] <source lang=apl inline>j</code> is written <source lang=apl inline>0<sub>j</sub>/x</code>
* [[Grade]] is called "ordering", and the Grade of <source lang=apl inline>x</source> with [[index origin]] <source lang=apl inline>j</source> is written <source lang=apl inline>0<sub>j</sub>/x</source>
* [[Base]] (<source lang=apl inline>⊥</code>) on vectors works like in APL. On matrices, rows are paired up, or columns with a doubled base symbol.
* [[Base]] (<source lang=apl inline>⊥</source>) on vectors works like in APL. On matrices, rows are paired up, or columns with a doubled base symbol.
* The [[Intersection]] and [[Union]] are written with <source lang=apl inline>∩</code> and <source lang=apl inline>∪</code>, and the [[Set Difference]] with <source lang=apl inline>∆</code>.
* The [[Intersection]] and [[Union]] are written with <source lang=apl inline>∩</source> and <source lang=apl inline>∪</source>, and the [[Set Difference]] with <source lang=apl inline>∆</source>.
* The [[Inner Product]] is written by placing one scalar function above another, and the [[Outer Product]] by using <source lang=apl inline>∘</code> in place of the top function with two vector arguments.
* The [[Inner Product]] is written by placing one scalar function above another, and the [[Outer Product]] by using <source lang=apl inline>∘</source> in place of the top function with two vector arguments.

Navigation menu