I: Difference between revisions

From APL Wiki
Jump to navigation Jump to search
(Created page with "{{Infobox array language | array model = lists | index origin = 0 | function styles = tacit | numeric types = 6...")
 
No edit summary
(One intermediate revision by one other user not shown)
Line 8: Line 8:
| developer                = [[Marshall Lochbaum]]
| developer                = [[Marshall Lochbaum]]
| latest release version  = 2018 (unversioned)
| latest release version  = 2018 (unversioned)
| implementation languages = [[wikipedia:C_(programming_language)|C]]
| implementation language  = [[wikipedia:C_(programming_language)|C]]
| source                  = [https://github.com/mlochbaum/ILanguage GitHub]
| source                  = [https://github.com/mlochbaum/ILanguage GitHub]
| platforms                = Unix x86-64
| platforms                = Unix x86-64
Line 19: Line 19:
'''I''' is an experimental language by [[Marshall Lochbaum]], based on the concept of extending the implicit mapping used by array languages to all datatypes including functions. Lochbaum has described the language as "not usable" and stated that he tried to avoid the constraining nature of I's design decisions in his later langauge [[BQN]].<ref>[[Marshall Lochbaum]]. [https://mlochbaum.github.io/BQN/commentary/history.html "BQN's development history"].</ref>
'''I''' is an experimental language by [[Marshall Lochbaum]], based on the concept of extending the implicit mapping used by array languages to all datatypes including functions. Lochbaum has described the language as "not usable" and stated that he tried to avoid the constraining nature of I's design decisions in his later langauge [[BQN]].<ref>[[Marshall Lochbaum]]. [https://mlochbaum.github.io/BQN/commentary/history.html "BQN's development history"].</ref>


Like [[K]], the langauge uses nested lists rather than arrays in order to simplify the design. Although a related paper defines mapping over [[Dictionary|associative arrays]], references, and sets, as of 2021 the I implementation only supports lists and functions as datatypes. I uses a left-to-right syntax that allows whitespace to indicate precedence in addition to parentheses. Every value can be called as a function, and every function takes two arguments, with the function <code>.</code> used to call functions of one argument. Primitive functions are written with single ASCII characters, while identifiers are surrounded with single quotes. I has no function definition syntax; instead functions must be defined using [[tacit programming]]. As a result there is only a single global scope for variables.
Like [[K]], the langauge uses nested lists rather than arrays in order to simplify the design. Although a related paper defines mapping over [[Dictionary|associative arrays]], references, and sets, as of 2021 the I implementation only supports lists and functions as datatypes. I uses a left-to-right syntax that allows whitespace to indicate [[precedence]] in addition to parentheses. Every value can be called as a function, and every function takes two arguments, with the function <code>.</code> used to call functions of one argument. Primitive functions are written with single ASCII characters, while identifiers are surrounded with single quotes. I has no function definition syntax; instead functions must be defined using [[tacit programming]]. As a result there is only a single global scope for variables.


I is implemented using soft typing and [[wikipedia:Just-in-time compilation|JIT compilation]] for many operations, targetting [[wikipedia:x86-64|x86-64]] directly.
I is implemented using soft typing and [[wikipedia:Just-in-time compilation|JIT compilation]] for many operations, targetting [[wikipedia:x86-64|x86-64]] directly.

Revision as of 06:14, 10 March 2021


I is an experimental language by Marshall Lochbaum, based on the concept of extending the implicit mapping used by array languages to all datatypes including functions. Lochbaum has described the language as "not usable" and stated that he tried to avoid the constraining nature of I's design decisions in his later langauge BQN.[2]

Like K, the langauge uses nested lists rather than arrays in order to simplify the design. Although a related paper defines mapping over associative arrays, references, and sets, as of 2021 the I implementation only supports lists and functions as datatypes. I uses a left-to-right syntax that allows whitespace to indicate precedence in addition to parentheses. Every value can be called as a function, and every function takes two arguments, with the function . used to call functions of one argument. Primitive functions are written with single ASCII characters, while identifiers are surrounded with single quotes. I has no function definition syntax; instead functions must be defined using tacit programming. As a result there is only a single global scope for variables.

I is implemented using soft typing and JIT compilation for many operations, targetting x86-64 directly.

References


APL dialects [edit]
Maintained APL+WinAPL2APL64APL\ivApletteAprilCo-dfnsDyalog APLDyalog APL Visiondzaima/APLGNU APLKapNARS2000Pometo
Historical A Programming LanguageA+ (A) ∙ APL#APL2CAPL\360APL/700APL\1130APL\3000APL.68000APL*PLUSAPL.jlAPL.SVAPLXExtended Dyalog APLIverson notationIVSYS/7090NARSngn/aplopenAPLOperators and FunctionsPATRowanSAXSHARP APLRationalized APLVisualAPL (APLNext) ∙ VS APLYork APL
Derivatives AHPLBQNCoSyELIGleeIIvyJJellyK (Goal, Klong, Q) ∙ KamilaLispLang5LilNialRADUiua
Overviews Comparison of APL dialectsTimeline of array languagesTimeline of influential array languagesFamily tree of array languages