CLIP some more!
Fri, 17 Mar 2000 13:11:38 -0800

From: []

>It looks like this discussion (on applicative systems) has
>pretty much settled down...

Yup.  I, at least, have finally started to figure it out.

>> >What do you think... ?
>> I know which one I would prefer to work with -- the unified 
>> list, all the
>> way.  There's just no way I'd want to deal with a whole bunch of
>> variable-stack-effect words.

>Hmm... I'm pretty sure I want the variable-stack-effect words whether
>or not I also have unified lists...

True, but you _don't_ want people to use them.  They have a _terrible_
effect on code, and they also hurt optimizers.

>Surely one would like to have
>"dup2", "dip2", "sip2", and such, and probably similar things for "3".
>It would seem inelegant to me to have support for "2" and "3" versions
>without making a general version.

Generally speaking, if you play with more than 3 stack elements, your code
needs a redesign.  There are always exceptions, though.

IMO, the best way to make a "general" version of any of those words is to
have the general version operate over the items in a list.

>If I do end up using unified lists (and this is likely), the main
>primitives will just be "wrap" and "unwrap" (in the absense of
>"reverse", "map", "concat", and things)... If one wants to do
>more complex things with lists, then the thing to do is to unwrap
>them first and then use the variable-stack-effect words (and
>then wrap it back up again, if needed) ...

You haven't done much Forth coding, have you?  The variable-effect words are
so destructive to understanding that I have seriously never seen any in any
Forth code.

List manipulation, on the other hand, is VERY common (in languages which
support it).

>- "iepos" (Brent Kerby)