Uiua: Difference between revisions
Jump to navigation
Jump to search
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. | '''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]] |