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

Reply via email to