Lau B. Jensen wrote: > http://www.bestinclass.dk/index.php/2009/11/mind-games-ascension/
Scanning quickly, this looks interesting. Also, I have to say I really like your blog's format. > Effectively putting J to good use where it > really shines and then relying on Lisp for the rest. I think it would be > a very powerful cocktail, what are your thoughts? This idea intrigues me. There are some things J is very good at, and some things it is not very good at. I've often toyed with the idea of interfacing J with another language that's good in a different domain (e.g. Perl) to increase expressiveness and productivity. But I don't mean writing a shell script that pipes a Perl script's output into a J script, I mean a native intermingling of syntax, a single script that syncretizes both languages to describe a problem and its solution. A creole. Just like your example: > (let [compute-average (j +/ % #)] Now, I don't know enough about Lisp to tell you if its domain is distinct enough from J's that the creole would be more expressive than either language individually. But since I enjoy J (both theory and practice) as a hobby, I often thought I might also enjoy learning, using, and discussing other "weird" languages. Lisp and Haskell top of my list (though I leaned towards Lisp because I enjoy metaprogramming but consider strong typing and type systems an impediment to productive programming). But I've never really gotten up the initiative to start. I think this is mostly because any language has a learning curve, and I want to be productive immediately (patience is not my prime virtue). I've downloaded Lisp interpreters before, in particular ones that advertised IDEs with good REPLs, but dropped them after a few days of playing. If you want Lisp feedback from a native Jer: Lisp seems too verbose to be effective in an interactive REPL environment; a REPL language should be able to express large concepts in small lines. Also, I find the parens visually intrusive and frustrating to type (though as a Jer I'm used to Shift+NumberKey). But I do enjoy the concept of the simple grammar. However, if you do end up implementing your Jisp (J-lisp creole), I might be presuaded to try Lisp again, if only because I know that when I hit an concept I can't yet express in Lisp, I can always cop out and write it in in J, and not waste time. > Secondly I need to some pointers with the practical side. I searched > through JSoftware.com looking for an API description or Javasource to no > avail - Where can I find the documentation which describes the interface? There is no Java source available; J is written in C, but is not open source. JSoftware owns and produces the J interpreter. However, there is an open (if lightly documented) API available to the J engine. See http://www.jsoftware.com/help/user/calling_jdll.htm and in J, type open '~system\examples\dll\jdll.ijs' for an example of calling the J dll through its API. I know Ambrus also has some experience in this field and might be able to give you better pointers. > Effectively putting J to good use where it > really shines and then relying on Lisp for the rest. I think it would be > a very powerful cocktail, what are your thoughts? Raul responded: > You might be describing K (but this is probably the wrong > forum for that kind of discussion). Lau replied: > As I started out with I am new here, so could you please elaborate a little? Raul is referring to the K language. K is another member of the APL (Array Programming Language) family. K, like J, is terse, high-level, functional, array-oriented programming language. But it is also, like Lisp, a list processor. K's native type is the list; so, whereas in J a 2D array and a list-of-lists are two totally different beasts, in K they are identical (similarly for higher dimensional arrays). As a result, unsurprising to any Lisp programmer, K is also a champion tree processor and a K program always exists in the context of a tree. J being a Turing-complete programming language, can obviously also process trees, but both J and the J programmer are happier if the data is rectangular (in general, orthotopic). This is particularly true since J's type system is fixed, so one cannot add a "tree type" or e.g. overload operators to have a different meaning for trees. You can find more about K and download a free K interpreter at http://www.kxsystems.com/ . Again, K is not open source, but I believe you can interface with it using a public API (not sure if the free version allows this). -Dan [1] Interesting historical fact: the very first J interpreter was written up in an afternoon by the author of K, Arthur Whitney. See http://www.jsoftware.com/jwiki/Essays/Incunabulum Another interesting fact: K is widely used in finance for analysis of historical market data. K programmers are highly paid. ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
