I-Beam: Difference between revisions

Jump to navigation Jump to search
1,024 bytes added ,  11:16, 14 September 2022
no edit summary
mNo edit summary
No edit summary
Line 1: Line 1:
{{Built-in|I-Beam|⌶}} is a [[primitive operator|primitive]] [[monadic operator]] that takes a numeric code as it's [[operand]] and [[derived function|derives]] an [[ambivalent]] function which provides a range of ad-hoc operations. This range covers non-[[primitive function]]s - for example: experimental features, interpreter-level control, access to the environment, and information about APL itself.
{{Built-in|I-Beam|⌶}} is a [[primitive operator|primitive]] [[ambivalent function]] or [[monadic operator]] that takes a numeric code as an [[argument]]/[[operand]] and provides a range of ad-hoc operations. This range covers non-[[primitive function]]s, for example experimental features, interpreter-level control, access to the environment, and information about APL itself.


== History ==  
== History ==  
I-Beam was introduced in [[APL\360]] by implementers to execute [[wikipedia:IBM System/360|System/360]] instructions from program control. The convenience of this lead to I-Beam becoming directly available for use by anyone.<ref>[https://dl.acm.org/doi/pdf/10.1145/585923.585925 The Design of APL]</ref>
I-Beam was introduced in [[APL\360]] as an [[ambivalent function]] for implementers to execute [[wikipedia:IBM System/360|IBM System/360]] (''I-Beam'' being pronounced very similarly to ''IBM'') instructions from program control. The convenience of this lead to I-Beam becoming directly available for use by anyone.<ref>[https://dl.acm.org/doi/pdf/10.1145/585923.585925 The Design of APL]</ref> However, modern IBM-derived APLs replace all I-Beams with [[quad name]]s. For example, <syntaxhighlight lang=apl inline>5⌶</syntaxhighlight> became <syntaxhighlight lang=apl inline>⎕DL</syntaxhighlight> ([[Delay]]) while changing time unit from [[wikipedia:jiffy|jiffies]] of 1⁄300<sup>th</sup> of a second to a whole second.
 
Later, after it became common to use arrays as operands, [[Dyalog APL]] began using the [[glyph]] as an operator where the operand selects functionality. It is used for testing experimental features, some of which may eventually become primitives or quad name. For example, <syntaxhighlight lang=apl inline>819⌶</syntaxhighlight> became <syntaxhighlight lang=apl inline>⎕C</syntaxhighlight> ([[Case Convert]]), while introducing distinction between case folding (for case insensitive comparisons) and case mapping (for human presentation forms).


== Mnemonics ==
== Mnemonics ==
In general, I-Beam's numeric operand isn't intended to be easily recalled. But some are given meaningful names.
In general, I-Beam's numeric operand isn't intended to be easily recalled. But some are given meaningful names.


One method is to devise a name from the [[wikipedia:Roman numerals|Roman numeral]] letters I, V, X, L, C, D, and M<ref>[https://www.dyalog.com/blog/2016/06/i-beam-mnemonics/ I-Beam Mnemonics]</ref>
One method is to devise a name from the [[wikipedia:Roman numerals|Roman numeral]] letters I, V, X, L, C, D, and M:<ref>[https://www.dyalog.com/blog/2016/06/i-beam-mnemonics/ I-Beam Mnemonics]</ref>


{|class=wikitable
{|class=wikitable
! I-Beam !! Numeral
! I-Beam !! Numeral
|-
| Colour Coding || CC (200)
|-
| Colour Coding Information || CCI (201)
|-
|-
| Called Monadically || CM (900)
| Called Monadically || CM (900)

Navigation menu