The Pure Programming Language (2022) (agraef.github.io)
from armchair_progamer@programming.dev to programming_languages@programming.dev on 27 Feb 2024 20:58
https://programming.dev/post/10668968

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 = x^2+2xy+y^2; 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.)

#programming_languages

threaded - newest

jaror@kbin.social on 27 Feb 2024 23:22 collapse

The symbolic rewriting is interesting.

I do wonder what "modern-style" functional programming means.

Also their FAQ says:

But considering other FPLs like Haskell and ML, Pure's library support isn't bad

Clicking that link reveals a list of about 34 libraries. In comparison, Haskell's current curated Stackage snapshot has 3340 packages in it (the total number of packages is probably more than 10x that). So, I think it is odd to claim its ecosystem is anywhere near Haskell's.

noli@programming.dev on 28 Feb 2024 13:46 collapse

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