Langur is an open-source imperative/functional scripting language written by Anthony Davis. Its principles of design are sensibility to humans, accuracy in calculation, and a clean, expressive syntax.

The following is a partial list of langur's features.

I initially developed langur using Thorsten Ball's books (1, 2), with many changes made and features added.

Source code examples can be found on


Try it and let me know what you think. Constructive feeback is welcome.

langur 0.4.11 beta source code (7-Zip, 109K, released August 21, 2019)

Langur uses the Apache license 2.0.

A full revision history is included in the download.

2019-08-21 - 0.4.11 beta - added decoupling assignments (assign array to multiple values) returns Boolean indicating whether the values were set or not Example: if (.name1, .name2) = matches(RE/\w+/, .strOfNames) {} - deprecated use of push() and pop(), as these names are confusing These create new values, instead of modifying the original. Use the new names more() and less() instead. - checks for base less than 2 in basex literals (no 0x123) 2019-08-21 - 0.4.10 beta - added multiple assignment of variables (.x, .y) = (.y, .x) - ensure we only copy the slice of references when we generate a new array or hash for setting an object index value - added ability to assign to indexed string value may set by code point number or by a string (taking the first code point only)