# Klong

Klong is a language based on K (probably K3) which removes K's syntactic ambiguity and much of its overloading by using more digraphs (primitive functions and operators composed of two characters) to separate extra meanings. The removal of syntactic ambiguity means Klong has a context-free grammar.

## KlongPy

KlongPy is an independent, compatible implementation of Klong in NumPy. It can be closely integrated with Python due to its use of NumPy arrays, and can be run on the GPU using CuPy in place of standard NumPy.

## Primitives

Klong documentation refers to primitive functions ("verbs" in K) as "operators".

`+` Transpose Plus
`-` Negate Minus
`*` First Times
`%` Reciprocal Divide
`:%` Integer-Divide
`|` Reverse Max/Or
`:+` Rotate
`&` Expand/Where Min/And
`^` Shape Power
`:^` Reshape
`!` Enumerate Remainder
`<` Grade-Up Less
`>` Grade-Down More
`=` Group Equal
`~` Not Match
`@` Atom Index/Apply
`:@` Index-in-Depth
`?` Range (Unique) Find
`,` List (like Enclose) Join (like Catenate)
`_` Floor Drop
`:_` Undefined Cut
`:#` Char Split (Partition by lengths)
`#` Size Take
`\$` Format Format2
`:=` Amend
`:-` Amend-in-Depth
`::` Define
`:\$` Form
` f'a` Each
`a f'b` Each2
`a f:\b` Each-Left
`a f:/b` Each-Right
` f:'b` Each-Pair
` f/a` Over
`a f/b` Over-Neutral
` f:~a` Converge
`a f:~b` While
`a f:*b` Iterate
` f\a` Scan-Over
`a f\b` Scan-Over-Neutral
` f\~a` Scan-Converging
`a f\~a` Scan-While
`a f\*a` Scan-Iterating