# RE: [stack] Re: Unifying variables, dictionary, return stack

## Billy Tanksley — 2001-10-17 18:19:53

    From: dmitry_n_petrov@... [mailto:dmitry_n_petrov@...]

     >2.) How must one understand

    >[abc] uncons

    >- as an operation applied to a string or to a list of 1 element?

     As an illegal operation -- if quotations are actually strings then they're

    not lists.  (Although strings might be lists of characters, or may have list

    operations defined on them.)

    In Joy quotations are lists; in Forth, they're strings.  There's no law

    which says that list operations have to work on quotations.

     >3.) This feature can allow one to treat programs as strings,

    >dynamically created, modified, interpreted. It is not a good feature

    >for a compiled language. If one uses an interpreter, it is not good,

    >either, beacause it makes possible some very dirty programs, which

    >tend to loose the readability of "pure" applicational languages. It is

    >better to use higher-level tools (combinators) to manipulate programs

    >as data.

     No.  The fact that strings are programs doesn't imply that programs are

    strings.  Think about it.  Tcl made that mistake a long time ago, and it

    took it a long time to recover; even now it's possible to bog down the Tcl

    interpreter.

    Furthermore, this rule isn't specific to strings: it's a potential problem

    with ANY type of quotation.

    And do I have to mention that we're not trying to make a "pure applicational

    language"; we're trying to make a concatenative language, almost the

    opposite of applicative.  As such, we can do a LOT of things which are

    either impossible or dangerous in an applicative language.

    -Billy