Pure is a modern-style functional programming language based on term rewriting. It offers equational definitions with pattern matching, full symbolic rewriting capabilities, dynamic typing, eager and lazy evaluation, lexical closures, built-in list and matrix support and an easy-to-use C interface. The interpreter uses LLVM as a backend to JIT-compile Pure programs to fast native code.

For instance, here is a famous equation which you hopefully remember from high school algebra: (x+y)^2 = x2+2*x*y+y2; Again, you can just paste this line into the interpreter, and lo and behold, it just works in Pure:

(a*x+(y+b))^2;
(a*x)^2+2*(a*x)*(y+b)+(y^2+2*y*b+b^2)

Now this might seem like an arcane feature, but many if not most real-world programming tasks involve a substantial amount of symbolic computations these days, and as a term rewriting language, Pure makes those easy. E.g., check the units.pure script in the sources for a practical example. (More examples from the sources can be found on the Examples wiki page.)

  • noli
    link
    fedilink
    arrow-up
    1
    ·
    9 months ago

    Maybe they also include the C interop in that library support?