K
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.
Overview
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.