Uiua: Difference between revisions

Jump to navigation Jump to search
206 bytes added ,  13:06, 10 October 2023
Add strucure and wiki links, and mention AC feature
m (forth influence)
(Add strucure and wiki links, and mention AC feature)
Line 20: Line 20:
}}
}}


'''Uiua''' is a stack-based array language designed by Kai Schmidt. It uses concatenative evaluation (a [[wikipedia:context-free grammar|context-free grammar]]) with a right-to-left ordering as in [[wikipedia:Polish notation|Polish notation]]. Like the [[SHARP APL]] family, arrays are flat with a homogeneous type; however, functions in Uiua are first-class values, and instead of [[boxes]], [[niladic]] constant-valued functions are used to provide array nesting. The language supports [[tacit programming]] using stack manipulation primitives, and all complex functions must be defined this way as there is no explicit function form that allows local variables. Functions have a fixed number of input and output values, meaning the overloading of [[ambivalent function]]s is removed. Because of this, Uiua often splits APL primitives into two functions. Its primitives use [[Unicode]] glyphs including many not found in other languages. To avoid the need for a keyboard layout containing these, each primitive can also be spelled using a name that consists of lowercase letters (user-defined names must have at least one uppercase letter). By default, the language formats source files when run to convert these names into the corresponding glyphs.
'''Uiua''' is a stack-based array language designed by Kai Schmidt using [[glyph]]s inspired mainly by [[BQN]].
 
== Overview ==
Uiua uses concatenative evaluation (a [[wikipedia:context-free grammar|context-free grammar]]) with a right-to-left ordering as in [[wikipedia:Polish notation|Polish notation]]. The language supports [[tacit programming]] using stack manipulation [[primitive]]s, and all complex functions must be defined this way as there is no explicit function form that allows local variables. [[Function]]s have a fixed number of input and output values, meaning the overloading of [[ambivalent function]]s is removed. Because of this, Uiua often splits APL primitives into two functions. Its primitives use [[Unicode]] glyphs including many not found in other languages. To avoid [[Typing glyphs|the need]] for a keyboard layout containing these, each primitive can also be spelled using a name that consists of lowercase letters (user-defined names must have at least one uppercase letter). By default, the language formats source files when run to convert these names into the corresponding glyphs.
 
Like the [[SHARP APL]] family, [[Array_model#Flat_array_theory|arrays are flat]] with a homogeneous [[type]]; however, functions in Uiua are first-class values, and instead of [[boxes]], [[niladic]] constant-valued functions are used to provide [[Nested array|array nesting]].
 
Uiua was [[Array Cast#uiua|featured on Array Cast]] in 2023.


{{APL dialects}}[[Category:Array languages]][[Category:Flat array languages]][[Category:Stack-based languages]][[Category:Leading axis languages]][[Category:Languages with tacit programming]][[Category:IR compilers]]
{{APL dialects}}[[Category:Array languages]][[Category:Flat array languages]][[Category:Stack-based languages]][[Category:Leading axis languages]][[Category:Languages with tacit programming]][[Category:IR compilers]]

Navigation menu