http://t3x.org/klong/ambiguity.html (light|dark)
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 x
f(x)
Similarly, x f/y may denote:
f over x,y
y:f(y) while x(y)
y:f(y) x times
Im 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. :)