From Esolang
Jump to navigation Jump to search
For the proprietary array processing language developed by Arthur Whitney, see wikipedia:K (programming language).
This language is still a work in progress. A very work... in... very progress.

K is an abstract, lazy esoteric computer algebra programming language by User:Rdococ, designed to use non-traditional data types.


Data type Description
boolean Used in boolean algebra.
integer A variable-size integer.
rational A fraction of two variable-size integers.
real An irrational, represented by a generalized continued fraction.
function A map from a set of one or more inputs to one output.
set A set, equivalent to a function from any input to a boolean output.
list A list, equivalent to a function from one integer to any output.
Construct Example Description
x → 2x An anonymous function.
{} {1, 4, 5} A set.
in 3 in {1, 4, 5} Returns if that element is in the set.
{¦} {k ¦ k in Reals, k % 1 = 0} Set-building notation for a lazy infinite set.
[] [1, 1, 2] A list or array.
[→] [n → 2n] A lazy infinite list.
?: x>3 ? 1 : 0 Right-associative conditional.
:= Integers := {k ¦ k in Reals, k % 1 = 0} Declarative declaration.
K K([n → n=1 ? 4 : (n-1)^2], [n → n=1 ? 0 : 2n-3]) A generalized continued fraction - an irrational. The first list are the partial numerators, and the second are the partial denominators.
_ [1, 3, 1]_2 List indexing.

The K construct

K's namesake, the K construct, can take the definition to a generalized continued fraction, and return the real number corresponding to it. Of course, the real number itself is actually defined by the continued fraction, and that's how K stores it in memory. In order to determine if two generalized continued fractions are equivalent, K must apply algebra.

GCF Algebra

When comparing two GCFs, K applies the concept of the equivalence transformation. If K can successfully apply algebra to one of the GCFs to convert it into the other, then they are both equivalent. Otherwise, they are not.