Array languages typically introduce a lot of ambiguity, which is intended, because it is common in mathematics and allows to recycle symbols and names for different purposes. It is also something that I have always disliked about math. Hence I invented Klong.
For instance, in K the expression f/x may denote any
of the following, depending on the type of f:
f over xf(x)Similarly, x f/y may denote:
f over x,yy:f(y) while x(y)y:f(y) x timesIm Klong, there is a unique adverb for each of those operations:
f/x |
fold f over x |
|
f:~x |
converge toward the fixpoint of f(x) |
|
x f/y |
fold f over x,y |
|
x f:~y |
set y::f(y) while x(y) |
|
x f:*y |
set y::f(y) x times |
The Converge and While adverbs are distingished by their context:
f:~ in a prefix position means Converge and in an infix
position it means While.
Similarly, Klong distinguishes between Drop (_)
and Cut (:_), Modulo (!) and Rotate
(:+), and Take (#) and Reshape (:^).
And, yes, some Klong operators look like smileys. :)