K: Difference between revisions

Jump to navigation Jump to search
3,678 bytes added ,  09:39, 19 June 2020
no edit summary
Miraheze>Adám Brudzewsky
No edit summary
No edit summary
(17 intermediate revisions by 5 users not shown)
Line 8: Line 8:
| file ext                = .k
| file ext                = .k
| developer                = [[Arthur Whitney]]
| developer                = [[Arthur Whitney]]
| latest release version  = K7 "Shakti" / 2019
| latest release version  = K9 "Shakti" / 2020
| implementation language  = [[wikipedia:C_(programming_language)|C]], [http://kparc.com/b/ B]
| implementation language  = [[wikipedia:C_(programming_language)|C]], [http://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://kx.com/ Kx Systems], [https://shakti.com/ Shakti]
| documentation            = [http://kparc.com/k.txt K4] [https://kparc.github.io/ref/ K7]
| documentation            = [http://kparc.com/k.txt K4] [https://kparc.github.io/ref/ K9]
| download                = [https://kx.com/connect-with-us/download/ K4], [https://shakti.com/download/ K7]
| 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+]], [[J]], [[wikipedia:Scheme_(programming_language)|Scheme]]
| influenced              = [[Q]], [[RAD]]
| influenced              = [[Q]], [[RAD]], [[Kona]], [[Klong]], [[oK]], [[ngn/k]]
| run online              = [https://ktye.github.io/ ktye/i]
| run online              = [https://kparc.io/kc K7]
}}
}}
'''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 Stanly, 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 ("Shakti K") is the first K to have full Unicode support, and it also uses a limited set non-ASCII symbols in the core language, for example <source lang=apl inline>Ø</source> and <source lang=apl inline>∞</source>.
'''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.


{{APL dialects}}
== Releases ==
 
See [https://shakti.com/database-software-history/ The Evolution of Database Software].
 
{|class=wikitable
! Year      !! Version
|-
| 1992      || K0
|-
| 1994      || K1
|-
| 1996      || K2
|-
| 2000      || K4
|-
| unreleased || K5
|-
| unreleased || K6
|-
| 2018      || K7 (Shakti)
|-
| unreleased || K8
|-
| 2020      || K9 (Shakti)
|}
 
== Primitives ==
 
=== K3 ===
 
From the [https://github.com/kevinlawler/kona/wiki#verbs Kona Wiki].
 
{|class=wikitable
! Verb                            !! Monadic                          !! Dyadic                                !! Triadic          !! Tetradic
|-
| <code>+</code> || flip ([[Transpose]])            || [[plus]]                              ||                  ||
|-
| <code>-</code> || [[negate]]                      || [[minus]]                              ||                  ||
|-
| <code>*</code> || [[first]]                        || [[times]]                              ||                  ||
|-
| <code>%</code> || [[reciprocal]]                  || [[divide]]                            ||                  ||
|-
| <code><nowiki>|</nowiki></code> || [[reverse]]                      || [[max]]|[[or]]                        ||                  ||
|-
| <code>&</code> || [[where]]                        || [[min]]|[[and]]                        ||                  ||
|-
| <code>^</code> || [[shape]]                        || [[power]]                              ||                  ||
|-
| <code>!</code> || enumerate (includes [[Iota]])    || [[rotate]]|[[mod]]                    ||                  ||
|-
| <code><</code> || [[grade up]]                    || [[less than]]                          ||                  ||
|-
| <code>></code> || [[grade down]]                  || [[greater than]]                      ||                  ||
|-
| <code>=</code> || [[group]]                        || [[equals]]                            ||                  ||
|-
| <code>~</code> || [[not]], attribute              || [[match]]                              ||                  ||
|-
| <code>@</code> || [[atom]]                        || [[Index function|at index]]            ||  [[amend]]/trap  ||  [[amend]]
|-
| <code>?</code> || range ([[Unique]])              || function inverse/find/draw/deal/sample ||  invert-guess    ||
|-
| <code>_</code> || [[floor]]                        || [[drop]]|[[Cut (K)|cut]]              ||                  ||
|-
| <code>,</code> || enlist (like [[Enclose]])        || [[Catenate|join]]                      ||                  ||
|-
| <code>#</code> || [[count]]                        || [[take]]|[[reshape]]                  ||                  ||
|-
| <code>$</code> || [[format]]                      || dollar (conversions)                  ||                  ||
|-
| <code>.</code> || make/unmake dictionary          || dot index                              ||  [[amend]]/trap  ||  [[amend]]
|-
| <code>:</code> || colon                            || [[assignment]]                        ||                  ||
|}
 
{|class=wikitable
! Adverb                            !! Definition
|-
| <code>/</code>  || over (includes [[Reduce]] and [[Power operator|Power]])
|-
| <code>\</code>  || [[scan]]
|-
| <code>'</code>  || [[each]]
|-
| <code>/:</code> || each right
|-
| <code>\:</code> || each left
|-
| <code>':</code> || eachpair (like [[Windowed Reduce]])
|}
 
==External links==
* [https://ngn.bitbucket.io/k.html Overview of K implementations]
{{APL dialects}}[[Category:K dialects]]

Navigation menu