From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Original-To: poffice@blade.nagaokaut.ac.jp Delivered-To: poffice@blade.nagaokaut.ac.jp Received: from kankan.nagaokaut.ac.jp (kankan.nagaokaut.ac.jp [133.44.2.24]) by blade.nagaokaut.ac.jp (Postfix) with ESMTP id 338C619C0031 for ; Fri, 6 Nov 2015 06:40:20 +0900 (JST) Received: from voscc.nagaokaut.ac.jp (voscc.nagaokaut.ac.jp [133.44.1.100]) by kankan.nagaokaut.ac.jp (Postfix) with ESMTP id 51417B5D8FE for ; Fri, 6 Nov 2015 07:09:21 +0900 (JST) Received: from neon.ruby-lang.org (neon.ruby-lang.org [221.186.184.75]) by voscc.nagaokaut.ac.jp (Postfix) with ESMTP id 5FAEC18CC7D1 for ; Fri, 6 Nov 2015 07:09:21 +0900 (JST) Received: from [221.186.184.76] (localhost [IPv6:::1]) by neon.ruby-lang.org (Postfix) with ESMTP id 6EA721204EA; Fri, 6 Nov 2015 07:09:20 +0900 (JST) X-Original-To: ruby-core@ruby-lang.org Delivered-To: ruby-core@ruby-lang.org Received: from o10.shared.sendgrid.net (o10.shared.sendgrid.net [173.193.132.135]) by neon.ruby-lang.org (Postfix) with ESMTPS id 17C1812046D for ; Fri, 6 Nov 2015 07:09:15 +0900 (JST) DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=sendgrid.me; h=from:to:references:subject:mime-version:content-type:content-transfer-encoding:list-id; s=smtpapi; bh=H5q83JSViU1q5iUfo0nHCzhEN4w=; b=akeWocdnUtkwmwYe1s v2eKuhkhnGAlR4FoETNxV7jqsFY0nU/OrqU0coXC/mGbtp58GsiaBZonAntivsXc k2S9WqM/PY2depW583YEOzQtMZzh8yY7BiQL0cO8EZSeAU1aUcZ/gDmQ0vKuwbC+ V4hv3ezipE3yHhDZej/ZvgrBc= Received: by filter-170.sjc1.sendgrid.net with SMTP id filter-170.13909.563BD3841A 2015-11-05 22:09:08.216621091 +0000 UTC Received: from herokuapp.com (ec2-107-22-66-12.compute-1.amazonaws.com [107.22.66.12]) by ismtpd0002p1iad1.sendgrid.net (SG) with ESMTP id EWmBHeWKQCmzVPqyvZU0Zw for ; Thu, 05 Nov 2015 22:09:08.223 +0000 (UTC) Date: Thu, 05 Nov 2015 22:09:08 +0000 From: 0x0dea+redmine@gmail.com To: ruby-core@ruby-lang.org Message-ID: References: Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Redmine-MailingListIntegration-Message-Ids: 45999 X-Redmine-Project: ruby-trunk X-Redmine-Issue-Id: 11286 X-Redmine-Issue-Author: 0x0dea X-Redmine-Issue-Assignee: matz X-Redmine-Sender: 0x0dea X-Mailer: Redmine X-Redmine-Host: bugs.ruby-lang.org X-Redmine-Site: Ruby Issue Tracking System X-Auto-Response-Suppress: All Auto-Submitted: auto-generated X-SG-EID: ync6xU2WACa70kv/Ymy4QrNMhiuLXJG8OTL2vJD1yS4dZ+elWTGqwshhNaoFu5rxZkBn/UMHmXb+SY Ams+89pDFESOSMgNtZFIP5lObuieHoKCoM/+gbOquvxZ/zUKe/xLJxa5VLcJg6ASmlua+5RIrxBalG OI9bzBw0mrEtgP8= X-ML-Name: ruby-core X-Mail-Count: 71358 Subject: [ruby-core:71358] [Ruby trunk - Feature #11286] [PATCH] Add case equality arity to Enumerable's sequence predicates. X-BeenThere: ruby-core@ruby-lang.org X-Mailman-Version: 2.1.15 Precedence: list Reply-To: Ruby developers List-Id: Ruby developers List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: ruby-core-bounces@ruby-lang.org Sender: "ruby-core" Issue #11286 has been updated by D.E. Akers. I've come to realize that it might not be entirely clear what is being proposed. In essence, all of the following examples feel very "Ruby" and should, in my opinion, Just Work. ```ruby [1, 3.14, 2ri].all?(Numeric) # => true if should_be_all_symbols.any?(String) ... end some_strings.none?(/aeiou/i) lotto.all?(1..49) && lotto.one?(43..49) ``` ---------------------------------------- Feature #11286: [PATCH] Add case equality arity to Enumerable's sequence predicates. https://bugs.ruby-lang.org/issues/11286#change-54723 * Author: D.E. Akers * Status: Open * Priority: Normal * Assignee: Yukihiro Matsumoto ---------------------------------------- ## Proposal It is proposed that `Enumerable`'s sequence predicates (`#all?`, `#any?`, `#none?`, and `#one?`) be augmented to return, in the case of a single argument, whether their query holds when each element is supplied to the argument's `#===` method. ## Rationale `Enumerable#grep` filters by case equality, allowing us to write very natural and expressive code: ```ruby strs.select { |str| /foo/ === str } strs.grep(/foo/) nums.select { |num| (5..10) === num } nums.grep(5..10) ``` In addition to taking advantage of the versatility of case equality, it lets us do away with the syntactic noise incurred by opening a block. `#grep` is a very nice method! Let's make `#all?` and friends more like `#grep`. ---Files-------------------------------- 0001-enum.c-add-case-equality-arity-to-sequence-predicates.patch (10 KB) case_equality_sequence_predicates-check_argc_before_deref.patch (10 KB) case_equality_sequence_predicates-all_updates.patch (9.94 KB) -- https://bugs.ruby-lang.org/