ruby-core@ruby-lang.org archive (unofficial mirror)
 help / color / mirror / Atom feed
From: marcandre-ruby-core@marc-andre.ca
To: ruby-core@ruby-lang.org
Subject: [ruby-core:103171] [Ruby master Feature#17773] Alias `Numeric#zero?` and `Float#zero?` as `Numeric#empty?` and `Float#empty?`
Date: Fri, 02 Apr 2021 07:21:09 +0000 (UTC)	[thread overview]
Message-ID: <redmine.journal-91244.20210402072108.2963@ruby-lang.org> (raw)
In-Reply-To: redmine.issue-17773.20210402034945.2963@ruby-lang.org

Issue #17773 has been updated by marcandre (Marc-Andre Lafortune).


I'm also against this proposal.

I do not believe that there are many cases where one checks for `.zero?` || `.empty?`. Note that `nil` nor `false` implement either.

If you need something like `blank?` or `trivial?` or similar, refinements are available.

----------------------------------------
Feature #17773: Alias `Numeric#zero?` and `Float#zero?` as `Numeric#empty?` and `Float#empty?`
https://bugs.ruby-lang.org/issues/17773#change-91244

* Author: sawa (Tsuyoshi Sawada)
* Status: Open
* Priority: Normal
----------------------------------------
When dealing with user input fields as in web applications, there are typical values that we want to consider as the default and/or absence of user input. For string/text inputs, list items, and attributes, we have `String#empty?`, `Array#empty?`, and `Hash#empty?` respectively, which seem to correspond to those cases. As for numerics, there are `Numeric#zero?` and `Float#zero?`.

However, there is no single term that covers all these cases. In a routine to check through the fields whether there is user input, we have to selectively use `empty?` or `zero?` depending on the type of the input field.

Many programming languages other than Ruby typically consider these values as falsy with respect to logical calculation. Ruby handles only `nil` and `false` as falsy, and that has clear advantages in many aspects, but with the cost of losing a simple way to handle these default values.

I propose to alias `Numeric#zero?` as `Numeric#empty?` and `Float#zero?` as `Float#empty?` so that we can simply use `empty?`. At first, calling zero as empty might sound strange, but at least for non-negative integers, set theoretic definitions usually define zero as the empty set, so it is not that strange after all.


Ruby on Rails' `blank?` is conceptually similar to this, but `0.blank?` returns `false`, so it is a different concept.



-- 
https://bugs.ruby-lang.org/

  parent reply	other threads:[~2021-04-02  7:21 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-04-02  3:49 [ruby-core:103162] [Ruby master Feature#17773] Alias `Numeric#zero?` and `Float#zero?` as `Numeric#empty?` and `Float#empty?` sawadatsuyoshi
2021-04-02  4:24 ` [ruby-core:103164] " merch-redmine
2021-04-02  5:23 ` [ruby-core:103165] " sawadatsuyoshi
2021-04-02  5:42 ` [ruby-core:103166] " sawadatsuyoshi
2021-04-02  6:21 ` [ruby-core:103167] " muraken
2021-04-02  7:21 ` marcandre-ruby-core [this message]
2021-04-02 10:09 ` [ruby-core:103175] " eregontp
2021-04-02 14:40 ` [ruby-core:103186] " sawadatsuyoshi
2021-04-02 15:39 ` [ruby-core:103188] " xtkoba+ruby

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-list from there: mbox

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

  List information: https://www.ruby-lang.org/en/community/mailing-lists/

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

  git send-email \
    --in-reply-to=redmine.journal-91244.20210402072108.2963@ruby-lang.org \
    --to=ruby-core@ruby-lang.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.
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 read-only IMAP folder(s) and NNTP newsgroup(s).