Sponsored Link •
I have recently discovered the somewhat unknown and understated language, Joy. A pure functional language, without lambda operations!
The Joy programming language is an intriguing beast in the programming language menagerie. It is an exceedingly powerful little language. Joy is based on the idea of "function-level programming" outlined by Backus which is distinct from "functional programming". Here is a short synopsis from the language designer, a philosophy professor named Manfred von Thun:
Whereas all other [note: should be 'most other'] functional programming languages are based on the application of functions to arguments, Joy is based on the composition of functions. All such functions take a stack as argument and produce a stack as value.Here is a simple Joy program for performing a quick sort, taken from the Wikipedia article about Joy:
DEFINE qsort == [small]  [uncons [>] split] [[swap] dip cons concat] binrec .That is very elegant, even if somewhat cryptic on first glance. Here is the explanation from Wikipedia
"binrec" is one of Joy's many recursive combinators, implementing binary recursion. It expects four quoted programs on top of the stack which represent the termination condition (if a list is "small" (1 or 0 elements) it is already sorted), what to do if the termination condition is met (in this case nothing), what to do by default (split the list into two halves by comparing each element with the pivot), and finally what to do at the end (insert the pivot between the two sorted halves).The Joy language bears some obvious similarities to Forth. Forth has decent recognition as an efficient language. I wonder how efficient a Joy interpreter and/or compiler could be? How small? I am building one right now, just for the fun of it. For those that remember my little foray into a functional programming dialect in C++, called Unimperative, I am resucitating it as a Joy dialect.
At this point, I am still exploring the possibilities of using some dialect of Joy for different purposes. Here are some ideas:
|Christopher Diggins is a software developer and freelance writer. Christopher loves programming, but is eternally frustrated by the shortcomings of modern programming languages. As would any reasonable person in his shoes, he decided to quit his day job to write his own ( www.heron-language.com ). Christopher is the co-author of the C++ Cookbook from O'Reilly. Christopher can be reached through his home page at www.cdiggins.com.|