3 ms·
Prolog also has syntactic abstractions, though it doesn't have a culture that uses them to the same extent because (overgeneralizing a bit) every expression is
by silentbicycle 17y ago
Prolog also has syntactic abstractions, though it doesn't have a culture that uses them to the same extent because (overgeneralizing a bit) every expression is quoted by default, and it also has extremely powerful pattern-matching. That (or good support for lazy evaluation, in other languages) covers many of the same use cases as Lisp-style macros.
Also, K has a "whizbang sleek look" that makes Lisp look ridiculously verbose. (http://www.nsl.com/papers/kisntlisp.htm http://www.nsl.com/papers/kisntlisp.htm) Ditto J and APL, though K seems to take it furthest. Part of their density comes from being based on ideograms, not lexical tokens; the density is like comparing Chinese to English.
Unfortunately, K is closed source and limited to 32-bit platforms for non-commercial evaluation. It's also quite expensive, since its primary product is a mind-bogglingly fast database designed for real-time stock data analysis. I'm been fascinated with K for a while, though, albeit mostly at a distance. (J's evaluation isn't limited to noncommercial use, though.)
- dman 17y agoThanks for pointing K out, hadnt seen it so far.
- silentbicycle 17y agoThere's a lot of stuff about it at http://nsl.com http://nsl.com, and you can get an evaluation version of Q (the newest K dialect) and associated documentation from http://www.kx.com http://www.kx.com.
- tom_b 17y agoK, J, Lisp, Prolog . . . I'm beginning to be worried about my own fascination with uncommon languages. Is there a support group available? If the three books you read when the kids are asleep are The Reasoned Schemer, The Art of Prolog, and On Lisp, are you now officially beyond help on the language geek scale? I used to be a somewhat productive programmer. These days I think more about making sure I've picked the right language for the problem . . .
- silentbicycle 17y agoI spent a while chasing the weirdest languages I could find (relative to everything else I knew at the time), but feel like I've gotten to the point of diminishing returns. I've been studying types and semantics instead. I do most of my actual programming in Lua + C and an in-house language. I really like Erlang (but haven't worked on the right kind of projects lately), and I also prototype stuff in Prolog. I would love to have a more modern dialect of Prolog, designed primarily for embedded use as a C library (much like Lua, and ideally with a similar C FFI). It's a cool language, but it's also really strongly skewed towards certain problem domains. Lua has taught me that when a language can delegate its weak points to a symbiotic language, it can stay really small and focused on its strengths.