Kap: Difference between revisions

Jump to navigation Jump to search
1,267 bytes added ,  01:26, 11 February 2021
m
Fix Kotlin WP link
(Initial version)
 
m (Fix Kotlin WP link)
(8 intermediate revisions by 3 users not shown)
Line 1: Line 1:
{{Infobox array language
{{Infobox array language
| array model              = [[based array model|based]]
| array model              = [[nested array model|nested]]
| index origin            = 0
| index origin            = 0
| function styles          = block (like [[dfn]]s)
| function styles          = block (like [[dfn]]s)
| numeric types            = 64-bit float, 64-bit integer
| numeric types            = 64-bit float, 64-bit integer, complex (64-bit float components)
| unicode support          = full
| unicode support          = full
| released                = 2020
| released                = 2020
| developer                = [[Elias Mårtenson]]
| developer                = [[Elias Mårtenson]]
| latest release version  = 2020 (unversioned)
| latest release version  = 2021 (unversioned)
| implementation languages = [[wikipedia:Kotlin_(Programming_Language)|Kotlin]]
| implementation language  = [[wikipedia:Kotlin (programming language)|Kotlin]]
| source                  = [https://github.com/lokedhs/array]
| source                  = [https://github.com/lokedhs/array GitHub]
| platforms                = JVM, Native, In-browser, [[wikipedia:Node.js|Node.js]]
| platforms                = JVM, Native Linux, In-browser, [[wikipedia:Node.js|Node.js]]
| license                  = MIT
| license                  = [[wikipedia:MIT License|MIT]]
| file ext                = .kap
| file ext                = .kap
| influenced by            = [[APL]], [[Dyalog APL]]
| influenced by            = [[Dyalog APL]], [[GNU APL]]
| run online              = [https://kapdemo.dhsdevelopments.com/]
| run online              = [https://kapdemo.dhsdevelopments.com/ JS Client]
}}
}}
'''KAP''' is an array-based language that aims to implement most of standard APL, along with additional features. Much of standard APL works in KAP, although if an APL feature does not fit with KAP's design, those features are changed or removed.
== Lazy evaluation ==
The main difference compared to APL is that KAP is lazy-evaluated. This means that the language gives the developers very loose guarantees when (or if, and how many times) a function will actually be invoked. For example, <source lang=apl inline>↑ f¨ ⍳10</source> will only make a single call to <source lang=apl inline>f</source> because <code>f¨ ⍳10</code> will not immediately evaluate the result but only return a delayed evaluation. Since all but the first result is then discarded, those results will never be computed.
== Differences from APL ==
The following is a list of significant differences compared to APL:
* Lazy evaluation
* All values are immutable, it is not possible to modify the content of an array
* Ability to define custom syntax
* Native hash table support
{{APL dialects}}[[Category:APL dialects]][[Category:Nested array languages]][[Category:Leading axis languages]]

Navigation menu