K: Difference between revisions

From APL Wiki
Jump to navigation Jump to search
(Rewrite opening paragraph)
m (Text replacement - "first-class function" to "first-class function")
 
(6 intermediate revisions by 2 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 languages = [[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://k.miraheze.org/ Wiki], [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], [https://k.miraheze.org/ Wiki]
| 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+]], [[wikipedia:Scheme_(programming_language)|Scheme]]
| influenced by            = [[A+]], [[wikipedia:Scheme_(programming_language)|Scheme]]
| influenced              = [[Q]], [[RAD]], [[Kona]], [[Klong]], [[kuc]], [[oK]], [[ngn/k]], [[xs]]
| influenced              = [[Q]], [[RAD]], [[Kona]], [[Klong]], [[kuc]], [[oK]], [[ngn/k]], [[xs]], [[Goal]]
| run online              = [https://kparc.com/k/ K9]
| run online              = [https://web.archive.org/web/20220905101252/https://kparc.com/k/ 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.
'''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 [[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 ==
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 120: Line 120:
* [https://k.miraheze.org/ K Language Wiki]
* [https://k.miraheze.org/ K Language Wiki]
* [https://en.wikipedia.org/wiki/K_(programming_language) K (programming language)]
* [https://en.wikipedia.org/wiki/K_(programming_language) K (programming language)]
* [https://ngn.bitbucket.io/k.html Overview of K implementations] including links to documentation


== References ==
== References ==
<references/>
<references/>
{{APL dialects}}[[Category:K dialects]]
{{APL dialects}}[[Category:K dialects]][[Category:IR compilers]]

Latest revision as of 02:01, 6 September 2024

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 nested lists, unifying rank and depth, and encourages Scheme-like functional programming with first-class functions. 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

See The Evolution of Database Software.

Year Version
1992 K0
1994 K1
1996 K2
2000 K4
unreleased K5
unreleased K6
2018 K7 (Shakti)
doesn't exist K8
2020 K9 (Shakti)

Primitives

K3

From the Kona Wiki.

Verb Monadic Dyadic Triadic Tetradic
+ flip (Transpose) plus
- negate minus
* first times
% reciprocal divide
| reverse max|or
& where min|and
^ shape power
! enumerate (includes Iota) rotate|mod
< grade up less than
> grade down greater than
= group equals
~ not, attribute match
@ atom at index amend/trap amend
? range (Unique) function inverse/find/draw/deal/sample invert-guess
_ floor drop|cut
, enlist (like Enclose) join
# count take|reshape
$ format dollar (conversions)
. make/unmake dictionary dot index amend/trap amend
: colon assignment
Adverb Definition
/ over (includes Reduce and Power)
\ scan
' each
/: each right
\: each left
': eachpair (like Windowed Reduce)

The name K

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,[1] including "keys to the kingdom".[2]

External links

References

  1. Arthur Whitney. Re: Why call it K? response 1, response 2.
  2. Arthur Whitney. "K". Vector Journal volume 10 issue 1.
APL dialects [edit]
Maintained APL+WinAPL2APL64APL\ivApletteAprilCo-dfnsDyalog APLDyalog APL Visiondzaima/APLGNU APLKapNARS2000PometoTinyAPL
Historical A Programming LanguageA+ (A) ∙ APL#APL2CAPL\360APL/700APL\1130APL\3000APL.68000APL*PLUSAPL.jlAPL.SVAPLXExtended Dyalog APLIverson notationIVSYS/7090NARSngn/aplopenAPLOperators and FunctionsPATRowanSAXSHARP APLRationalized APLVisualAPL (APLNext) ∙ VS APLYork APL
Derivatives AHPLBQNCoSyELIGleeIIvyJJellyK (Goal, Klong, Q) ∙ KamilaLispLang5LilNialRADUiua
Overviews Comparison of APL dialectsTimeline of array languagesTimeline of influential array languagesFamily tree of array languages