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.
next prev 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).