Joy, Lambdas, Combinators, Procedures

btanksley@hifn.com btanksley@hifn.com
Fri, 28 Jan 2000 14:20:13 -0800


> From: iepos@tunes.org [mailto:iepos@tunes.org]

> > > We could talk about program size;
> > > I suspect that most programs written in Joy could be written in
> > > as a functional program of similar size, but I can't really
> > > support this, because I don't know of any functional language
> > > that is as good as Joy (there may well be one somewhere, 
> > > and I believe one could be constructed).

> > Joy is a functional language.

> Again, by "functional language" i meant "purely applicative language".

What do you mean, then?  All modern functional languages, and most of the
early ones as well, are applicative.  It's one of the most thoroughly
studied areas of computer science.  The benefits are very well-known -- but
the drawbacks are as well.

> > > > > Anyway, I find Joy to be quite an interesting system. But,
> > > > > I don't know that its approach of using composition 
> > > > > and quotation
> > > > > is fundamentally superior to a purely applicative approach.

> > > > Read the manuals -- it's so clearly superior it's not 
> > > > even funny.

> > > I've read most of the synopsis pages, but I'm not convinced.

> > You need to actually see him work some proofs using Joy as 
> > a notation.  It's quite impressive.

> maybe so... I believe proofs about a purely applicative system
> may also be impressive. 

Impressive, yes -- but only in the sense of baroque complexity and limited
applicability.  Really; I've seen hundreds of them.

> > There are two systems I know of which use combinators 
> > efficiently and
> > thoroughly: Joy/Forth and J/APL.  In both cases, the RPN 
> > systems have more
> > of a dependance on explicit combinators; the APL systems 
> > imply theirs (and J
> > has some really funky implied combinators, with its "hook" 
> > and "fork"
> > combinations).

> Hmm... I've never heard of "J" or "APL"...

Oh no!  APL's a great system, lots of fun.  I recommend you start by
learning J, since it uses ASCII characters (instead of APL's character set,
which requires not only extra characters, but even depends on being able to
overstrike them).  APL itself is a good language, but it's hard to learn
without a special keyboard (IMO).

K is a more recent derivative, but it's less APL-like, so I don't think it's
interesting to learn for the same reason I'm not interested in helping to
write yet another applicative functional language ;-).

> anyway, I see no point in arguing further over which kind of system
> is better (Joy-style or purely applicative); I haven't really
> claimed that either kind is generally better... but purely applicative
> seems worth trying well, at least.

It's been tried thousands of times.  Look at _any_ functional language aside
from Joy.  Consider especially the ones with implicit currying; those have
implicit application, which makes them more comparable to Joy's implicit
composition.

> I think that pretty much wraps it up (I don't think we really have
> any points of disagreement)... maybe when I find or make a good
> purely applicative system, we'll have two concrete systems
> to judge between (Joy and the purely appliactive one); then it
> will probably be obvious which is better.

Yup.

> - "iepos" (Brent Kerby)

-Billy