K: Difference between revisions
m (Influenced Goal) |
m (Text replacement - "first-class function" to "first-class function") |
||
(3 intermediate revisions by the same user not shown) | |||
Line 19: | Line 19: | ||
| run online = [https://web.archive.org/web/20220905101252/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 [[ | '''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]] | | <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]] | | <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 | | <code>,</code> || [[Pair|enlist]] (like Enclose) || [[Catenate|join]] || || | ||
|- | |- | ||
| <code>#</code> || [[count]] || [[take]]|[[reshape]] || || | | <code>#</code> || [[count]] || [[take]]|[[reshape]] || || | ||
Line 123: | Line 123: | ||
== 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
- ↑ Arthur Whitney. Re: Why call it K? response 1, response 2.
- ↑ Arthur Whitney. "K". Vector Journal volume 10 issue 1.
APL dialects [edit] | |
---|---|
Maintained | APL+Win ∙ APL2 ∙ APL64 ∙ APL\iv ∙ Aplette ∙ April ∙ Co-dfns ∙ Dyalog APL ∙ Dyalog APL Vision ∙ dzaima/APL ∙ GNU APL ∙ Kap ∙ NARS2000 ∙ Pometo ∙ TinyAPL |
Historical | A Programming Language ∙ A+ (A) ∙ APL# ∙ APL2C ∙ APL\360 ∙ APL/700 ∙ APL\1130 ∙ APL\3000 ∙ APL.68000 ∙ APL*PLUS ∙ APL.jl ∙ APL.SV ∙ APLX ∙ Extended Dyalog APL ∙ Iverson notation ∙ IVSYS/7090 ∙ NARS ∙ ngn/apl ∙ openAPL ∙ Operators and Functions ∙ PAT ∙ Rowan ∙ SAX ∙ SHARP APL ∙ Rationalized APL ∙ VisualAPL (APLNext) ∙ VS APL ∙ York APL |
Derivatives | AHPL ∙ BQN ∙ CoSy ∙ ELI ∙ Glee ∙ I ∙ Ivy ∙ J ∙ Jelly ∙ K (Goal, Klong, Q) ∙ KamilaLisp ∙ Lang5 ∙ Lil ∙ Nial ∙ RAD ∙ Uiua |
Overviews | Comparison of APL dialects ∙ Timeline of array languages ∙ Timeline of influential array languages ∙ Family tree of array languages |