trusted
32
edits
(inline code to improve sentence flow) |
No edit summary |
||
(18 intermediate revisions by 3 users not shown) | |||
Line 3: | Line 3: | ||
| 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, complex (64-bit float components) | | numeric types = 64-bit float, 64-bit integer, complex (64-bit float components), unlimited precision big rationals | ||
| unicode support = full | | unicode support = full | ||
| released = 2020 | | released = 2020 | ||
| developer = [[Elias Mårtenson]] | | developer = [[Elias Mårtenson]] | ||
| latest release version = | | latest release version = 2023 (unversioned) | ||
| implementation | | implementation language = [[wikipedia:Kotlin (programming language)|Kotlin]] | ||
| source = [https:// | | source = [https://codeberg.org/loke/array Codeberg] | ||
| 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]] | ||
| website = [https://kapdemo.dhsdevelopments.com/ KAP] | |||
| documentation = [https://kapdemo.dhsdevelopments.com/kap-comparison.html KAP for APL’ers] | |||
| file ext = .kap | | file ext = .kap | ||
| influenced by = [[Dyalog APL]] | | influenced by = [[Dyalog APL]], [[GNU APL]], [[BQN]] | ||
| run online = [https://kapdemo.dhsdevelopments.com/ JS Client] | | run online = [https://kapdemo.dhsdevelopments.com/clientweb2/ JS Client] | ||
}} | }} | ||
Line 21: | Line 23: | ||
== Lazy evaluation == | == 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, < | 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, <syntaxhighlight lang=apl inline>↑ f¨ ⍳10</syntaxhighlight> will only make a single call to <syntaxhighlight lang=apl inline>f</syntaxhighlight> 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 == | == Differences from APL == | ||
Line 28: | Line 30: | ||
* Lazy evaluation | * Lazy evaluation | ||
* | * First class functions | ||
* Bignum support and rational arithmetic | |||
* Ability to define custom syntax | * Ability to define custom syntax | ||
* Native hash table support | * Native hash table support | ||
* Parallel evaluation (to take advantage of multi-core CPU's) | |||
{{APL dialects}}[[Category:APL dialects]][[Category:Nested array languages]][[Category:Leading axis languages]] | {{APL dialects}}[[Category:APL dialects]][[Category:Nested array languages]][[Category:Leading axis languages]] |