From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-3.3 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,UNPARSEABLE_RELAY autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 14630 invoked from network); 5 Dec 2020 00:52:31 -0000 Received: from zero.zsh.org (2a02:898:31:0:48:4558:7a:7368) by inbox.vuxu.org with ESMTPUTF8; 5 Dec 2020 00:52:31 -0000 ARC-Seal: i=1; cv=none; a=rsa-sha256; d=zsh.org; s=rsa-20200801; t=1607129551; b=VeGOEHYSAGm6bivMqIz44D2+IrFXdkaNYuOnoACrou6WB0zCICesumxN7vhkXRRFHFK+Fl/uC7 QTyV9JP53WKN5VCpvkD/reT/luT3Wm4aV1S+KRj/TIo8iY7YTaUrkrP6RZ0nx7Z0x3m33O9/uq d9v6ahT4hZgNClncYPlm6ozknQEq5YAC2NkuMFQ/hnzahBQFRZaPxK1uBwvHSS5uZDie6cV2Ie 82hZgchpZe/Ig4mkQjFuLbWcdRI4tkvGA7J2FkMLVBkvR23M4j3gCrW5Khi/YLT5W3/PWsC90T u/T5Ow5qyJvEhCvZF2bqXP07KRAqXhnJYtb1pK4A7JHksQ==; ARC-Authentication-Results: i=1; zsh.org; iprev=pass (mail-ot1-f41.google.com) smtp.remote-ip=209.85.210.41; dkim=pass header.d=brasslantern-com.20150623.gappssmtp.com header.s=20150623 header.a=rsa-sha256; dmarc=none header.from=brasslantern.com; arc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed; d=zsh.org; s=rsa-20200801; t=1607129551; bh=FnNAWfpyoCtKJAClC0Me/xyURksD16mAMlXixCuPgBA=; h=List-Archive:List-Owner:List-Post:List-Unsubscribe:List-Subscribe:List-Help: List-Id:Sender:Content-Type:Cc:To:Subject:Message-ID:Date:From:In-Reply-To: References:MIME-Version:DKIM-Signature:DKIM-Signature; b=G42hIO9dB7anZLcxnh7XHChCrCnlRDdicw6k0UrBOgOb5zLQEhE22Rpt9neW0f/rhwLK0G2UCy TyWTDhJqS0w7gP61/MH2d2bVFZVhznKUzmGwoNSj+Nm/pL482kmKtbCogg29zGPJ8+lwxN+pv5 EcRQns/+FeieBXvwOcdCjGkxxYWU5sJ+9AYFRb979okcrVTv4tb+ZrfPh56cGktAge7DSnOByY a0UW5Ue/HVAc9aZk9mvpEqahtrJbTQIMGNjrZmO0xutHP/E9BIP/0J/Sr4B1ODhKj+PjLw/dYY gOW1opBElJUoGSqYawpqBMUklRJa6XaCTAbbosA3bR/QeA==; DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=zsh.org; s=rsa-20200801; h=List-Archive:List-Owner:List-Post:List-Unsubscribe: List-Subscribe:List-Help:List-Id:Sender:Content-Type:Cc:To:Subject:Message-ID :Date:From:In-Reply-To:References:MIME-Version:Reply-To: Content-Transfer-Encoding:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID; bh=4/nMY8qC9xewX4kr50T5l3EmV46Gh8c6GIrWCAWMTC0=; b=hrjuXi3+1mPj5GqQiGsbtQMskL kWQ+86fO0YnsmgSnLiu2k/5t+l/SxjdsGnO81MeQwf+3BekZUgeNqDxI+VvT8Mo77W8Bu+NFgbZyy QZ2/n8aBLY9OiZqJvfWOiMpgzoxU5cmp+U3gdynu3XvE7cT1ImKa2adWbtIJMV8HM5JEJO3736DyP EsBT4cQnw8oJEhVoFVBhfgQ26gnigsnL72dpeBMwKv+uYkefzXI+391tU0p1VpnS4DdMa2o10AlPt MAOrLfD5eeQmB1lnf88Mqd+15hvyNOjGvAQaGE6NHhqmMCAjfpoQ6eTM5f4XupZFv0zfZgxnRCYrI J705P/Gg==; Received: from authenticated user by zero.zsh.org with local id 1klLoM-00066S-Kn; Sat, 05 Dec 2020 00:52:30 +0000 Authentication-Results: zsh.org; iprev=pass (mail-ot1-f41.google.com) smtp.remote-ip=209.85.210.41; dkim=pass header.d=brasslantern-com.20150623.gappssmtp.com header.s=20150623 header.a=rsa-sha256; dmarc=none header.from=brasslantern.com; arc=none Received: from mail-ot1-f41.google.com ([209.85.210.41]:38565) by zero.zsh.org with esmtps (TLS1.3:TLS_AES_128_GCM_SHA256:128) id 1klLo3-0005wv-WF; Sat, 05 Dec 2020 00:52:12 +0000 Received: by mail-ot1-f41.google.com with SMTP id b62so7063656otc.5 for ; Fri, 04 Dec 2020 16:52:11 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=brasslantern-com.20150623.gappssmtp.com; s=20150623; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=4/nMY8qC9xewX4kr50T5l3EmV46Gh8c6GIrWCAWMTC0=; b=VtBiqsO0tnJNTj9YNJBZNAe0rHZvedh+zG0pOR7jiIysDlG51Dlvx7oarucVWjiHUn U3v9oXqEgPnR32Sg9sFax7EXbL45uNhZEfQgiJ5rwJytz9iwaXdXe+Db8Ul8y/13hzLg 6kVp2x/BZkTQhOufb1cPuaYJlVmCJ1OhqLFRCyVX9ArDU6GLXVSfrkUyELxxgZmirL0c SQAlHO41P7DqosNeZ9R7Jcnh2QObFp5nKiAz5UVsa8pLsR1b2c0FmSjDgE7duG9yyOfQ V7OajR7h6qBHnVcrqg+jD6GS6v45ZAaUj35Wn4Lson4P+utLMozM3aD07CDOoLwRPXR6 G1Rw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=4/nMY8qC9xewX4kr50T5l3EmV46Gh8c6GIrWCAWMTC0=; b=C2d2817/8MqtK5fq28lBIjLLS8kaBJGalv3g324JjdKHJWTGeNX51zIcQp+g049DSg MNT5eMxbpWbjt3Ghdhth9DarQF1RvdisPs3C7dQ5guTWuwv4rIcqxDW8vJpDeFRyh0n9 HJyFQlWuNpqolu1gHBcxZiYF9DGIv9HaQ1sHt3jzIqDuWHHICpv6fJUbDLVlDDXyQcKs F3QTAFGZk+gB9fD8zSvE0Z/lbD0X1LZ/iuA3NdePAsDYpTlCZlla/g+8NexNooK4O8Kk 6THyS1M9jQ5w1HF1sLv0mH8F3D7d45FSo4cWzTo3KfqAlEIN9iLj+afRqXw7gVbuPwbX Y2JA== X-Gm-Message-State: AOAM533WvN0SNbcrj+qMNrTmNFYjKrF1ANk38EuwOkEDmK8EAw/c0uz1 xaWo3ZvRvqHLroqEj7EB6vQ6hD94Yvi5WZFwKrqPlg== X-Google-Smtp-Source: ABdhPJyoq4NePe1hpomsASvSvP/wDUWZRaOqvTkMXaWfLlawiLpWRs2hf1Ca5ITXym2b+OBaXK41WHsADTjMzusoLbc= X-Received: by 2002:a9d:470c:: with SMTP id a12mr5495099otf.161.1607129530773; Fri, 04 Dec 2020 16:52:10 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Bart Schaefer Date: Fri, 4 Dec 2020 16:51:59 -0800 Message-ID: Subject: Re: One possible answer to typeset vs. unset To: Felipe Contreras Cc: Zsh hackers list Content-Type: text/plain; charset="UTF-8" X-Seq: 47726 Archived-At: X-Loop: zsh-workers@zsh.org Errors-To: zsh-workers-owner@zsh.org Precedence: list Precedence: bulk Sender: zsh-workers-request@zsh.org X-no-archive: yes List-Id: List-Help: List-Subscribe: List-Unsubscribe: List-Post: List-Owner: List-Archive: Archived-At: On Fri, Dec 4, 2020 at 3:04 AM Felipe Contreras wrote: > > Next, I think all the instances in which PM_UNSET is checked should be > verified, to see if PM_DECLAREDNULL makes sense in those. I'll do > that. In cases I've discovered so far, it's actually more likely that one has to check whether PM_UNSET and PM_DECLARED are boolean different, rather than whether both are (not) set. > Next, we need a way to make sure $empty[(i|I)] returns something > sensible (that would be for both approaches). That's the last thing on my list, too. > And I think that's it. All that's left is deciding what flag would > turn this mode on. I'm leaning toward POSIXBUILTINS. > Lastly, I don't know if there is any low-hanging fruit, for example; > doing the same as bash 5.0 with localvar_inherit and localvar_unset. I thoroughly dislike localvar_inherit. I wonder if it's in bash 5.0 just to be able to compare the suggested semantics from that rejected POSIX proposal we've previously discussed. I may be biased by long use of the zsh semantic, but treating global -> local like environ -> global seems weird, unless there's also a way to "export" a local back to global. > I don't quite get localvar_unset, but seems to also be a sensible default. If I'm reading the bash manual correctly, localvar_unset means that "unset foo" behaves like "local foo; unset foo". Thus (Chet will probably correct me): fn1() { unset foo } fn2() { local foo=something fn1 echo ${foo-nil} # is nil } fn3() { local foo=something shopt localvar_unset fn1 echo ${foo-nil} # is something }