K: Difference between revisions

Jump to navigation Jump to search
1,116 bytes added ,  6 March
m
→‎Primitives: Link enlist to Pair
No edit summary
m (→‎Primitives: Link enlist to Pair)
 
(21 intermediate revisions by 5 users not shown)
Line 9: Line 9:
| developer                = [[Arthur Whitney]]
| developer                = [[Arthur Whitney]]
| latest release version  = K9 "Shakti" / 2020
| latest release version  = K9 "Shakti" / 2020
| implementation language  = [[wikipedia:C_(programming_language)|C]], [http://kparc.com/b/ B]
| implementation languages = [[wikipedia:C_(programming_language)|C]], [https://web.archive.org/web/20220823171916/https://kparc.com/b/ B]
| platforms                = macOS, Linux, Windows, [[kOS]]
| platforms                = macOS, Linux, Windows, [[kOS]]
| license                  = Free for personal use / Proprietary commercial software (free open source implementations exist)
| license                  = Free for personal use / Proprietary commercial software (free open source implementations exist)
| website                  = [https://kx.com/ Kx Systems], [https://shakti.com/ Shakti]
| website                  = [https://k.miraheze.org/ Wiki], [https://kx.com/ Kx Systems], [https://shakti.com/ Shakti]
| documentation            = [http://kparc.com/k.txt K4] [https://kparc.github.io/ref/ K9]
| documentation            = [https://web.archive.org/web/20220826224612/https://kparc.com/k.txt K4], [https://kparc.github.io/ref/ K9], [https://k.miraheze.org/ Wiki]
| download                = [https://kx.com/connect-with-us/download/ K4], [https://shakti.com/download/ K9]
| download                = [https://kx.com/connect-with-us/download/ K4], [https://shakti.com/download/ K9]
| influenced by            = [[A+]], [[J]], [[wikipedia:Scheme_(programming_language)|Scheme]]
| influenced by            = [[A+]], [[wikipedia:Scheme_(programming_language)|Scheme]]
| influenced              = [[Q]], [[RAD]], [[Kona]], [[Klong]], [[oK]], [[ngn/k]]
| influenced              = [[Q]], [[RAD]], [[Kona]], [[Klong]], [[kuc]], [[oK]], [[ngn/k]], [[xs]], [[Goal]]
| run online              = [https://kparc.io/kc K7]
| run online              = [https://web.archive.org/web/20220905101252/https://kparc.com/k/ K9]
}}
}}
'''K''' denotes a family of programming languages designed by [[Arthur Whitney]] and commercialized by Morgan Stanley, Kx Systems, and Shakti. In 1985, while at Morgan Stanley, Whitney created the statically typed A dialect of APL. His colleagues extended A into [[A+]] in 1988. Finally, Whitney presented the first K implementation in 1992, a "reduced instruction set" dialect which only used ASCII [[glyph|glyphs]] and limited arrays to [[list model|(nested) vectors]]. For a long time, K's main role was as implementation language for [[Q]], the query language of kdb+, which is an in-memory, column-based database. K7 (the first "Shakti K") was the first K to have full Unicode support, and it also uses a limited set non-ASCII glyphs in the core language, for example <source lang=apl inline>Ø</source> and <source lang=apl inline>∞</source>, however non-ASCII glyphs were removed in the subsequent K9.
'''K''' denotes a family of programming languages designed by [[Arthur Whitney]], which is sold by Kx Systems and Shakti and also supported by several independent implementations. K is an ASCII-only language influenced by Whitney's previous APL design [[A+]]. It has fewer primitives in part because it represents arrays as [[list model|nested lists]], unifying [[rank]] and [[depth]], and encourages [[wikipedia:Scheme_(programming_language)|Scheme]]-like functional programming with [[wikipedia:first-class function|first-class function]]s. Whitney presented the first K implementation (K0) in 1992, and soon founded [[Kx Systems]] to develop it further with versions numbering K1 through K6. K4 is now the implementation language for the time-series database kdb+ as well as derivative language [[Q]]. Whitney has developed further versions of K at Shakti, beginning with K7. Notable non-commercial implementations include [[Kona]] based on K3, and [[ngn/k]] and [[oK]] based on K6.


== Releases ==
== Releases ==


See [https://shakti.com/database-software-history/ The Evolution of Database Software].
See [https://web.archive.org/web/20191202012157/shakti.com/database-software-history/ The Evolution of Database Software].


{|class=wikitable
{|class=wikitable
! Year       !! Version
! Year         !! Version
|-
|-
| 1992       || K0
| 1992         || K0
|-
|-
| 1994       || K1
| 1994         || K1
|-
|-
| 1996       || K2
| 1996         || K2
|-
|-
| 2000       || K4
| 2000         || K4
|-
|-
| unreleased || K5
| unreleased   || K5
|-
|-
| unreleased || K6
| unreleased   || K6
|-
|-
| 2018       || K7 (Shakti)
| 2018         || K7 (Shakti)
|-
|-
| unreleased || K8
| doesn't exist || K8
|-
|-
| 2020       || K9 (Shakti)
| 2020         || K9 (Shakti)
|}
|}


Line 64: Line 64:
| <code>%</code> || [[reciprocal]]                  || [[divide]]                            ||                  ||
| <code>%</code> || [[reciprocal]]                  || [[divide]]                            ||                  ||
|-
|-
| <code><nowiki>|</nowiki></code> || [[reverse]]                     || [[max]]|[[or]]                        ||                  ||
| <code><nowiki>|</nowiki></code> || [[reverse]]     || [[max]]|[[or]]                        ||                  ||
|-
|-
| <code>&</code> || [[where]]                        || [[min]]|[[and]]                        ||                  ||
| <code>&</code> || [[where]]                        || [[min]]|[[and]]                        ||                  ||
Line 76: Line 76:
| <code>></code> || [[grade down]]                  || [[greater than]]                      ||                  ||
| <code>></code> || [[grade down]]                  || [[greater than]]                      ||                  ||
|-
|-
| <code>=</code> || [[group]]                       || [[equals]]                            ||                  ||
| <code>=</code> || [[Group (K)|group]]             || [[equals]]                            ||                  ||
|-
|-
| <code>~</code> || [[not]], attribute              || [[match]]                              ||                  ||
| <code>~</code> || [[not]], attribute              || [[match]]                              ||                  ||
Line 86: Line 86:
| <code>_</code> || [[floor]]                        || [[drop]]|[[Cut (K)|cut]]              ||                  ||
| <code>_</code> || [[floor]]                        || [[drop]]|[[Cut (K)|cut]]              ||                  ||
|-
|-
| <code>,</code> || enlist (like [[Enclose]])       || [[Catenate|join]]                     ||                  ||
| <code>,</code> || [[Pair|enlist]] (like Enclose)   || [[Catenate|join]]                   ||                  ||
|-
|-
| <code>#</code> || [[count]]                        || [[take]]|[[reshape]]                  ||                  ||
| <code>#</code> || [[count]]                        || [[take]]|[[reshape]]                  ||                  ||
Line 113: Line 113:
|}
|}


==External links==
== The name K ==
* [https://ngn.bitbucket.io/k.html Overview of K implementations]
 
{{APL dialects}}[[Category:K dialects]]
K's single-letter name parallels [[J]], and [[Arthur Whitney]] had offered design input on J shortly before publishing K. Unlike J, K is often written k, without capitalization. Whitney has given various explanations of the choice of letter,<ref>[[Arthur Whitney]]. Re: Why call it K? [https://web.archive.org/web/20041024214058/http://www.kx.com/listbox/k/msg06334.html response 1], [https://web.archive.org/web/20041024212043/http://www.kx.com/listbox/k/msg06335.html response 2].</ref> including "keys to the kingdom".<ref>[[Arthur Whitney]]. [http://archive.vector.org.uk/art10010830 "K"]. [[Vector Journal]] volume 10 issue 1.</ref>
 
== External links ==
* [https://k.miraheze.org/ K Language Wiki]
* [https://en.wikipedia.org/wiki/K_(programming_language) K (programming language)]
 
== References ==
<references/>
{{APL dialects}}[[Category:K dialects]][[Category:IR compilers]]

Navigation menu