Re: [stack] EWD 28: Djikstra's sort-of-concatenative language

Stevan Apter <[email protected]>
Newsgroups gmane.comp.lang.concatenative
Message-ID <[email protected]>
see section 6, "Names", in www.nsl.com/k/f/f.htm.

! is f's equivalent of joy's i, and ' is the quotation operator, so
'+! leaves + on the stack, just as you suggest.

in f, 2 3 + leaves 5 on the stack, as you would expect, but 2 3 plus,
where plus is [+] leaves 2 3 [+] on the stack, so to evaluate, you 
must say 2 3 plus!.

'x takes x and pushes [x] onto the stack.  [X]! takes X and prepends
it to the queue (whence elements of X are serially evaluated.)

it's interesting (but not surprising) to learn that djikstra was
there first.

also, see van oormerssen's language 'false': http://wouter.fov120.com/false/index.html

----- Original Message ----- 
From: "kuwabatake" <[email protected]>
To: <[email protected]>
Sent: Monday, July 30, 2007 6:33 PM
Subject: [stack] EWD 28: Djikstra's sort-of-concatenative language


> I find Djikstra's writings very interesting, and I stumbled on this:
> 
> http://www.cs.utexas.edu/users/EWD/transcriptions/EWD00xx/EWD28.html
> 
> In the (short) paper, Djikstra describes a stack-based arithmetic
> language. At first, he has two types of ``words'' that can be
> concatenated: number words and operator words. When a number word is
> encountered, the number is pushed onto the stack; when an operator
> word is encountered, the operation is performed on the top of the
> stack and the result pushed. So far, so good; we could think of this
> language in the Joy-like way by reframing all words as functions stack
> -> stack.
> 
> The really interesting part comes in the middle of the paper: Djikstra
> proposes to make operator words behave just like number words, simply
> pushing the operator onto the stack. He then introduces the special
> word `E'(for evaluate) which, if there is an operator on top of the
> stack, makes the operator perform its action. In this language,
> pushing 1 2 + would give the stack 
> 
> 1 2 + 
> 
> but then pushing an E would give the stack 
> 
> 3
> 
> The result is that operators can sit on the stack just like numbers
> and `literals'. Djikstra goes on to introduce an environment of bound
> variables, but that doesn't interest me as much. To me, the
> introduction of E is a really significant idea. In Joy, popping + out
> of a list with
> 
> [+] first
> 
> is sort of messy; a meaningless token is now floating on the stack,
> needing a new quotation to be part of before it can be used in a
> meaningful way and muddying the expression-oriented way of looking at
> Joy. If Joy's + was instead defined as
> 
> + == '+ i
> 
> where '+ is primitive, then the single symbol '+ could be treated as a
> quotation, executable by combinators. The ambiguous symbol + is now
> just an ordinary definition. A language whose primitives are all like
> this would be somewhat Floy-like, where '+ replaces [+] (sort of...
> the analogy is a little complicated.)
> 
> In short: how about a language in which every word puts itself onto
> the stack, except for the `special' word i, which executes the
> function on top of the stack?
> 
> Whew, long post. Thoughts?
> 
> ~Daniel
> 
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.