stack operations vs function transformation

stevan apter — 2005-04-09 11:41:37

----- Original Message -----
From: "Ivan Tomac" <e1_t@...>
To: <concatenative@yahoogroups.com>
Sent: Friday, April 08, 2005 10:00 PM
Subject: [stack] Re: Parsing in concatenative languages


>
>
> --- In concatenative@yahoogroups.com, "William Tanksley, Jr"
> <wtanksleyjr@g...> wrote:
> > It sounds correct to me that S and K are complete, which means that
> > using them you can construct all of the possible parameter reorderings
> > you could ever need in order to operate in a completely point-free
> > style.
> >
> > So, therefore, it sounds incorrect to me to claim that "flip is
> > impossible to write in point-free style". Is that correct?
> >
>
> Yes, I was wrong there. My initial thought was that to solve the
> problem you'd have to write a domain specific language on top of
> Haskell (like the stack+dip idea or what Stevan suggested with the
> arguments being passed in a list and then having a set of shifting and
> swapping combinators to reorder the arguments) and I thought it would
> be the same with the S K combinators but after looking at the S K
> combinators again it seems it's possible with just plain Haskell
> functions and no other abstractions.

L, R, and S (used to be X) shift and swap the arguments of a function.
you can also have D (dup) and P (pop), which operate this way:

let t be the following function of three arguments:

t:{[a;b;c]a+b*c}

D t
{[a;b]a*b+b} / note that D modifies the function body as well

P t
{[a;b;c;d]a*b+c}

compare:

2 5 dup + *
20
D[t]. 2 5
20

2 3 4 5 pop + *
14
P[t]. 2 3 4 5
14

in http://www.nsl.com/k/f.k

now i wonder whether it is possible to construct a language in which
the stack is entirely "virtual", and all data-movement is replaced
by the transformation of functions.

>
> > -Billy
>
> Ivan
>
>
>
>
>
>
> Yahoo! Groups Links
>
>
>
>
>
>
>

William Tanksley, Jr — 2005-04-09 15:59:36

stevan apter <sa@...> wrote:
> now i wonder whether it is possible to construct a language in which
> the stack is entirely "virtual", and all data-movement is replaced
> by the transformation of functions.

Sure, or so I'd think. It seems like an extension of optimization --
although taken to such an extent that it probably wouldn't be optimal
anymore.

-Billy