KLC LANG
A toy programming language for daily math.
KLC (pronounced `calc`) is a simple toy programming language for basic math, created for studying programming language design and development.
Why?
KLC was created primarily for fun and learning design and development of programming languages, and secondarily for daily math - calculus that requires conversions and a bit more than what calculator apps usually provides.
Language
In KLC there are only numbers and functions. You can perform all common operations upon numbers:
normal(x, mean, std) = 1/(std*sqrt(2pi)) * exp(-.5((x-mean)/std)^2) a = normal(0, 0, 1)
Operators
KLC supports a variety of operators for performing calculations and comparisons. Booleans are represented as
numbers, where
0
is false and any non-zero value is true.
-- Arithmetic Operators: 5+10 -- add 5-10 -- sub 5*10 -- mul 5/10 -- div 5^10 -- pow 5%10 -- mod -- Relational Operators: 5 == 10 -- eq 5 != 10 -- neq 5 < 10 -- lt 5 <= 10 -- lte 5 > 10 -- gt 5 >= 10 -- gte -- Logical Operators: !1 -- not 0 and 1 0 or 1
All arithmetic operators can also be used in the assignments, such as a += 1
.
Metrics System
KLC supports the metric system, allowing you to write expressions using metric units. This feature makes it easier to perform calculations involving units of measurement. For example:
1m to cm -- 100 36deg to rad -- 2062.648062 10hour to sec -- 36000 1831936KB to MB -- 1789 1831936KB to GB -- 1.747070
Supported units:
- Angle: rad, deg, grad, arcmin, arcsec.
- Weight: mg, cg, dg, g, kg, ton, oz, lb.
- Volume: ml, l, cu, gal.
- Time: ms, micros, ns, ps, sec, min, hour, day, week, month, year, decade, century, millennium.
- Length: mm, cm, dm, m, km, in, ft, yd, mi, nm, ly, au.
- Area: sqmm, sqcm, sqm, sqkm, sqin, sqft, sqyd, sqmi, acre, hectare.
- Bytes: Kb, Mb, Gb, Tb, Pb, B, KB, MB, GB, TB, PB.
Functions
Functions uses pattern matching to select which version will be used, depending on the arguments:
-- Factorial factorial(0) = 1 factorial(x) = x * factorial(-1) -- Fibonacci fib(0) = 0 fib(1) = 1 fib(x) = fib(x-1) + fib(x-2) factorial(5) -- 120 fib(5) -- 5
More Information
For more information, including how to install, how to use in terminal, and source code, please visit the github page: