Re: [stack] function "adjoinment"?

"William Tanksley, Jr" <[email protected]> Wed, 10 Feb 2010 06:43:01 -0800
Newsgroups gmane.comp.lang.concatenative
Message-ID <[email protected]>
chris glur <[email protected]> wrote:

>  ]No. Your reading comprehension is just very poor (in all honesty).
> So should I comprehend that joy-syntax is less comprehendable
> [with the normal back ground of reading plain text] than lisp/algol ?
>

Nowak gave a good answer to this. Mine is a little different: No. If all you
know how to read is plain English text, don't expect to be able to read
Lisp, Algol, or Joy at all. In fact, if that's all you know, you can't
reasonably expect to be able to read the specification of the factorial
function, since that uses not only algebraic notation, but also the concept
of recursion.

People need a basic platform of training. Of all the notations mentioned
above, Joy definitely requires the least training; of course, that's not to
say that it's the easiest to use, although I think that the basic notation
is an excellent framework for an easy-to-use language (as Factor's rapid
success demonstrates). I include "algebraic notation" as one of the
notations against which Joy has to compete, and I include it as a notation
that's harder to teach; in fact, it's much harder, because it's not a
consistent system (note: I've taught algebra up to "Intermediate" level at a
community college (that's about good high school level, which is more than
most people get); I know the problems people normally have learning it).

In fact, in advanced math, people tend to invent their own notations.
Herstein writes several of the most-used texts in abstract algebra
(including the one I learned the majority of my abstract algebra from), and
his invented notation for function composition used in the context of group
theory is actually deliberately concatenative (although, of course, he
doesn't use the term).

Can you make any contibution to my several TECHNICAL questions,
> starting with opinons of the viability of cat-like 'meta-langauge-ing'
> functions which have been already built in a language which doesn't
> require manual shuffling. ?
>

A technical question requires technical context in order to support a
discussion that reaches resolution; you haven't done any work to provide
that context. Why don't you build -- or find -- a little compositional
language (the term I've seen for what you're talking about), and tell us how
awesome it is, rather than asking us how awesome it'd be? After all, you're
the one who thinks it'd be awesome.

You already know that bash, csh, and scsh are made to be mainly
compositional (the first two are pretty bad programming languages aside from
their ability to compose other languages' work). You probably know that
Plan9 is an entire OS designed to enable compositional programming; its pipe
model includes routing and mailbox support. A while ago you heard (but to
all evidence did not listen to) me pointing out the Piccola language, which
is a formal language for software composition. If compositional programming
is so awesome, why isn't every program written using one of these languages
to stitch its other languages together?

NB. I say 'cat-like' since:
> * there seems to still be discussions about names;
>

There have never been any discussion of names in the sense you're using.
Your language isn't at all like the 'Cat' language. It's concatenative only
in an odd, crippled way (since you don't want to allow dataflow reshaping).
It wouldn't really be appropriate to call it 'concatenative', so I respect
that decision; but it's bizarre to call it 'cat-like'.

* I mean the data-flow paradigm, and especially where there are no globals;
>

I think of concatenative and FP-derived languages when you (and others)
speak of that.

   so that at stage N the programmer doesn't need to know/see what happened
>  in the previous N-1 functions  i.e. effective information hiding.
>

...but this is actually a thought-provoking definition. I suspect that it's
impossible and I'm not sure that it's at all practical; it seems to imply
that each word in the definition of a program would have to be operationally
independent of all the previous words; but such a language would be
incredibly verbose, since you'd have to have distinct words for any possible
operation, with no possibility of overloading due to context (since the
definition excludes the possibility of using context).

The reason I suspect it's impossible is that programming is (to be informal)
all about making things happen and reacting to things that happen. If you
can't know or see that happened in the previous N-1 functions, how can you
program by that definition? This is only an informal suspicion, and I'd be
glad to discuss what's wrong with it :-).

And, of course, the deep mathematical meaning I see in your definition MAY
actually be a creature of my own fevered imagination. If I've read too much
into your text, let me know.

 == Chris Glur.
>

-Wm


[Non-text portions of this message have been removed]