zsh-users
 help / color / mirror / code / Atom feed
From: Ray Andrews <rayandrews@eastlink.ca>
To: zsh-users@zsh.org
Subject: Re: suprise with -=
Date: Wed, 21 Oct 2015 11:01:28 -0700	[thread overview]
Message-ID: <5627D2F8.3000004@eastlink.ca> (raw)
In-Reply-To: <151019172744.ZM558@torch.brasslantern.com>

On 10/19/2015 05:27 PM, Bart Schaefer wrote:
> The parser doesn't know that "first" is an integer, or even that it's
> a variable that was previously declared.
That puzzles me.  Have not all your examples demonstrated that the 
parser is aware of the type of the variable and that it will perform 
it's operations accordingly?

    test2 ()
    {

        integer first=1 second=2

        third=first+second
        print A $third
        integer third
        print B $third

        integer fourth=first+second
        print C $fourth

    }
    A first+second    # 'third' is scalar so does the 'wrong' thing.
    B 0               # 'third' is now known to be integer by the 'print'.
    C 3               # 'fourth' is integer up front and remembered to
    be so.


I see very clearly that the type can change silently or sometimes not 
change at all and just sorta 'do nothing':

    test1 ()

    {

        integer first=1
        string1=foo

        first+=string1
        echo ${(t)first}
        echo "$first"

    }
    integer-local
    1            # The addition does nothing at all, but no error is thrown.


... and "${(t) ...}" is surely the demonstration that types are 
remembered?  I'm makinga deep error here, probably.


> The first shells didn't have integers or arrays at all.  They had only
> strings, and a few (external) programs like "expr" that could interpret
> strings of digits as numbers.
Thanks.  These 'history lessons' are invaluable (to me, anyway).  If 
anything besides strings were never anticipated in the original design 
of shells,then integers would bea 'tack on' and one could see that the 
whole issue of declarations/typing would behandled poorly.  The lesson 
is that one must be bloody careful. OTOH, whereas in Cif one wants to 
force a typecast it's a
labor, whereas in zsh one can do it not onlyeffortlessly, but even 
invisibly.
Powerful but dangerous.Caveat emptor.


  parent reply	other threads:[~2015-10-21 18:01 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-10-19  5:46 Ray Andrews
2015-10-19 18:35 ` Bart Schaefer
2015-10-19 19:34   ` Ray Andrews
2015-10-20  0:27     ` Bart Schaefer
2015-10-21  2:55       ` Ray Andrews
2015-10-21  3:52         ` Bart Schaefer
2015-10-21 18:01       ` Ray Andrews [this message]
2015-10-21 18:43         ` ZyX
2015-10-22 15:29           ` Ray Andrews
2015-10-22 15:43             ` ZyX
2015-10-22 16:02               ` Ray Andrews
2015-10-22 23:56               ` Bart Schaefer
2015-10-23  7:34                 ` Daniel Shahaf
2015-10-21 18:46         ` Bart Schaefer

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=5627D2F8.3000004@eastlink.ca \
    --to=rayandrews@eastlink.ca \
    --cc=zsh-users@zsh.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/zsh/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).