A Programming Language: Difference between revisions
Jump to navigation
Jump to search
Miraheze>Adám Brudzewsky m (Text replacement - "</code>" to "</source>") |
Miraheze>Adám Brudzewsky (mathify) |
||
Line 11: | Line 11: | ||
''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: <math>ν</math> gives the length of a vector, and <math>ν</math> and <math>μ</math> give the row length and column length of a matrix. | ||
* [[Comparison functions]] are defined using the symbols < | * [[Comparison functions]] are defined using the symbols <math><</math>, <math>></math>, and <math>=</math> and the rules that a vertical bar negates a relation and that an underline combines it with <math>=</math> (relations are combined by or-ing them together). | ||
* The arithmetic [[scalar functions]] [[Sum]] (< | * The arithmetic [[scalar functions]] [[Sum]] (<math>+</math>), [[Difference]] (<math>-</math>), [[Product]] (<math>×</math>), and [[Quotient]] (<math>÷</math>) are defined as in mathematics. | ||
* The logical functions [[And]] (< | * The logical functions [[And]] (<math>∧</math>) and [[Or]] (<math>∨</math>) 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 (<math>|a|</math>, <math>⌈a⌉</math>, and <math>⌊a⌋</math>). 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 < | * [[Residue]] uses <math>|</math> as in APL, but allows a subscript to indicate the smallest value allowed—mirroring [[index origin]]. | ||
* [[Iota]] is called "Interval" and uses the letter < | * [[Iota]] is called "Interval" and uses the letter <math>\iota</math> with an optional [[index origin]] subscript. | ||
* [[Index-Of]] is also written with < | * [[Index-Of]] is also written with <math>\iota</math> and an [[index origin]] subscript. It is defined on vector left arguments and vector or scalar right arguments. | ||
* [[Membership]] is < | * [[Membership]] is <math>\epsilon</math> as in APL. | ||
* [[Reduction]] (< | * [[Reduction]] (<math>/</math>, or <math>//</math> 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: < | * [[Rotate]] is written with arrows: <math>↑</math> for left rotation and <math>↓</math> 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 < | * [[Transpose]] is written with a tilde (<math>\tilde{}</math>) above a matrix, e.g. <math>\tilde M</math>. | ||
* [[Compress|Compression]] and [[Expand|Expansion]] use < | * [[Compress|Compression]] and [[Expand|Expansion]] use <math>/</math> and <math>\backslash</math> as in APL. | ||
* [[Catenate]] uses a circled comma. | * [[Catenate]] uses a circled comma. | ||
* [[Indexing]] is written with a subscript, or < | * [[Indexing]] is written with a subscript, or <math>∫_j</math> to allow [[index origin]] specification. | ||
* [[Grade]] is called "ordering", and the Grade of < | * [[Grade]] is called "ordering", and the Grade of <math>x</math> with [[index origin]] <math>j</math> is written <math>0_j/x</math> | ||
* [[Base]] (< | * [[Base]] (<math>⊥</math>) 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 < | * The [[Intersection]] and [[Union]] are written with <math>∩</math> and <math>∪</math>, and the [[Set Difference]] with <math>\Delta</math>. | ||
* The [[Inner Product]] is written by placing one scalar function above another, and the [[Outer Product]] by using < | * The [[Inner Product]] is written by placing one scalar function above another, e.g. <math>u\,^+_×v</math>, and the [[Outer Product]] by using <math>∘</math> in place of the top function with two vector arguments. |