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 CA2A01B40003 for ; Wed, 21 Dec 2016 23:27:26 +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 23FDDB5D88D for ; Wed, 21 Dec 2016 23:57:17 +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 CCF2A18CC819 for ; Wed, 21 Dec 2016 23:57:17 +0900 (JST) Received: from neon.ruby-lang.org (localhost [IPv6:::1]) by neon.ruby-lang.org (Postfix) with ESMTP id C13A11206E7; Wed, 21 Dec 2016 23:57:17 +0900 (JST) X-Original-To: ruby-core@ruby-lang.org Delivered-To: ruby-core@ruby-lang.org Received: from o2.heroku.sendgrid.net (o2.heroku.sendgrid.net [67.228.50.55]) by neon.ruby-lang.org (Postfix) with ESMTPS id 950C41206DF for ; Wed, 21 Dec 2016 23:57:14 +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=pfsnZ4V6cw3J4b2zwWb7ajP85oc=; b=ZU/b5hNTwjqzNwexCg VgikaC5WosFzEjAmVN7GKe+FY14j+uucCBiz2uTSNToeN2VjD7igvwRL+TQ4UfBz gEBf589XFxxmvkkfw5z1IhP5P+aj/0a75eHluVrFcPXZR5IHR6vXUt/UORO9qtv5 tbNKdrN/NR/KltsahKyoLoa2o= Received: by filter0427p1mdw1.sendgrid.net with SMTP id filter0427p1mdw1-27842-585A9834-78 2016-12-21 14:56:52.960674266 +0000 UTC Received: from herokuapp.com (ec2-54-158-111-208.compute-1.amazonaws.com [54.158.111.208]) by ismtpd0002p1iad1.sendgrid.net (SG) with ESMTP id 8iUpZdfhRVmmSYouqcRjYQ Wed, 21 Dec 2016 14:56:52.934 +0000 (UTC) Date: Wed, 21 Dec 2016 14:56:52 +0000 From: shyouhei@ruby-lang.org To: ruby-core@ruby-lang.org Message-ID: References: Mime-Version: 1.0 X-Redmine-MailingListIntegration-Message-Ids: 53680 X-Redmine-Project: ruby-trunk X-Redmine-Issue-Id: 11286 X-Redmine-Issue-Author: 0x0dea X-Redmine-Issue-Assignee: matz X-Redmine-Sender: shyouhei 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/Ymy4QrNMhiuLXJG8OTL2vJD1yS4wZTQlVCQMQBgfjPBGQylWNiE8FSGn9JA7En H2H3iT/EBJ5KXZuFQcyzS0ZRhU7tn2EqK34iNqY4t2xnAayfGesdgvJUAubIWi/HfxhfjmWemyIhUu A4YVocNTOXumDb3sSDc5smfkUjVV8ho+f7TPKQbbdIx8sFlvVFCcblVzog== X-ML-Name: ruby-core X-Mail-Count: 78785 Subject: [ruby-core:78785] [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: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: ruby-core-bounces@ruby-lang.org Sender: "ruby-core" Issue #11286 has been updated by Shyouhei Urabe. We looked at this issue in today's developer meeting. Attendees were positive about the proposed functionality. But Matz wanted separate method(s) than to extend all? etc, like we have separate select and grep methods. ---------------------------------------- Feature #11286: [PATCH] Add case equality arity to Enumerable's sequence predicates. https://bugs.ruby-lang.org/issues/11286#change-62192 * Author: D.E. Akers * Status: Open * Priority: Normal * Assignee: Yukihiro Matsumoto * Target version: ---------------------------------------- ## 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/