I worked on

*Lizard*since 8 years.

*Lizard*differs significantly from other script languages, as you can see in the features below.

*Lizard*is very similar to the mathematical and scientific program

*Mathematica*.

*Lizard*should make it possible to carry out calculations, data analysis and much more with a small script without much code. At the moment I am only providing you with the Lizard.dll (Lizard.so), its include file as well as some examples and a detailed documentation on

*Lizard*. The publication of the source code is planned.

Please test

*Lizard*at this early stage and give me feedback on the current features. I would also like to explicitly thank the following people who probably didn't even know that they helped me: Helle (ASM optimization), CSHW89 (idea and division algorithm)

Download:

**Lizard - Symbolic computation script language**(Version 0.4.3-0002)

Contains the Lizard.dll (Windows x64 and x86), the Lizard.so (Linux x64), the Lizard.pbi, some examples for the integration in Pure Basic and a detailed documentation for

*Lizard*with many examples.

Lizard - Documentation (Documentation only, just for viewing)

Features of Lizard:

- Full support of symbolic expression.
- Support of arbitrary size integers.
- Support of real numbers with arbitrary precision.
- Support of rational and complex numbers.
- Full unicode character string and binary string support as well as unicode collation algorithm.
- Support of polymorphic or anonymous functions.
- Powerfull pattern matching engine for assignments and replacements.
- Support of named parameters in functions.
- High flexibility in work with subparts of strings, lists or general expressions.
- Numerous conversion functions, supporting different number formats and string formats under consideration of endianness and digit base.

In

*Lizard*everything, really everything, is an expression consisting of a head and any number of arguments. That means also object types themselves, e.g. lists or well-known keywords such as If, And etc. are again just expressions and can also be used again as such. This makes

*Lizard*very flexible and powerful, but on the deep level it is also slower than usual script languages, in which these things are clearly separated and differentiated.

Here are some examples of the features (many more in the documentation):

Code: Select all

`In(1) := {2^100, 8/12, 1/4.0, (-2.0)^0.4} Out(1) = {1267650600228229401496703205376, 2/3, 0.25, 0.40775+1.25493*I}`

Code: Select all

`In(2) := {3*x - 2*x, a && True && b, Sin(Pi/6)} Out(2) = {x, a && b, 1/2}`

Code: Select all

`In(3) := 123.456 ^ 6789 Out(3) = 1.889456296024e14199`

Code: Select all

`In(4) := Calculate(Pi, 60) Out(4) = 3.14159265358979323846264338327950288419716939937510582097494`

Code: Select all

`In(5) := Sort( {-3, 2, -1, 0, 4}, Abs(#1) <= Abs(#2) & ) Out(5) = {0, -1, 2, -3, 4}`

Code: Select all

`In(6) := Select( {1, 2, 3, 4, y, 2.2}, #^2 < 6 & ) Out(6) = {1, 2, 2.2}`

Code: Select all

`In(7) := Replace( a+b+c+d, a+d -> x ) Out(7) = b + c + x`

Code: Select all

`In(8) := {a,b,c,d,e}[2..-2] Out(8) = {b, c, d}`

Code: Select all

`In(9) := "Hello World!"[-1..1..-1] Out(9) = "!dlroW olleH"`

Code: Select all

`In(10) := Iterate(i^2, {i, -3, 3} ) Out(10) = {9, 4, 1, 0, 1, 4, 9}`

Code: Select all

`In(11) := ToString('\0a\x03» ¬', BinaryFormat->"UTF16", Endianness->1) Out(11) = "aλ€"`

Code: Select all

`In(12) := Sort({"NINO", "Nina", "Nino", "Ninu", "Niño"}) Out(12) = {"Nina", "Nino", "NINO", "Niño", "Ninu"}`

ChangeLog

- 0.4.3-0002: Large bug-fix update. Additionally, new functions like Count and Contain, Flatten and Nest as well as new numerical functions like ShiftLeft, Bernoulli, Numerator and queries like IsPrime.
- 0.4.2-0001: There are a number of new functions, mainly of mathematical nature, such as the completion of the trigonometric and hyperbolic functions, Expand, Fibonacci and Binomial, more functions for complex numbers like Conjugate, Im or Re, constants like EulerMascheroni or GoldenRatio and functions for working with sets such as Union or Intersection.

There are also SubDefine and SubDefineDelayed for a special way of defining functions (more in the help)

In addition, a few functions have been renamed. - 0.4.0-0005: Some bug fixes and a first version for Linux.
- 0.4.0-0001: Implementierung von unlimitierten Fließkommazahlen, neue Funktionen: Factorial(), Precision(), Cos(), Sin(), Cosh(), Sinh(), ArcTan()
- 0.3.8-0012: x86 support!, small bug-fixes, two more examples for pure basic implementation, new Lizard-functions: Floor, Ceil, Trunc, Order
- 0.3.8-0002: First publication