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 EC0E717DD1DE for ; Sat, 20 Jun 2015 09:50:22 +0900 (JST) Received: from funfun.nagaokaut.ac.jp (funfun.nagaokaut.ac.jp [133.44.2.201]) by kankan.nagaokaut.ac.jp (Postfix) with ESMTP id 1D907B5D8A4 for ; Sat, 20 Jun 2015 10:13:28 +0900 (JST) Received: from funfun.nagaokaut.ac.jp (localhost.nagaokaut.ac.jp [127.0.0.1]) by funfun.nagaokaut.ac.jp (Postfix) with ESMTP id 33F5C97A847 for ; Sat, 20 Jun 2015 10:13:29 +0900 (JST) X-Virus-Scanned: amavisd-new at nagaokaut.ac.jp Authentication-Results: funfun.nagaokaut.ac.jp (amavisd-new); dkim=fail (1024-bit key) reason="fail (message has been altered)" header.d=sendgrid.me Received: from funfun.nagaokaut.ac.jp ([127.0.0.1]) by funfun.nagaokaut.ac.jp (funfun.nagaokaut.ac.jp [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id OC4GZV96vg-D for ; Sat, 20 Jun 2015 10:13:29 +0900 (JST) Received: from voscc.nagaokaut.ac.jp (voscc.nagaokaut.ac.jp [133.44.1.100]) by funfun.nagaokaut.ac.jp (Postfix) with ESMTP id E2B7297A826 for ; Sat, 20 Jun 2015 10:13:28 +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 A9C9A95243E for ; Sat, 20 Jun 2015 10:13:27 +0900 (JST) Received: from [221.186.184.76] (localhost [IPv6:::1]) by neon.ruby-lang.org (Postfix) with ESMTP id 0CE65120484; Sat, 20 Jun 2015 10:13:25 +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 6BFDE120441 for ; Sat, 20 Jun 2015 10:13:19 +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=uPp9zFwlc7ZWYTVdoYOhnVbgozg=; b=VWAqHcWnRlAhGgngfI +40GHj5Geh+viyEpgnNoATBNtSZxL/TKn7fk2sgug5C59JcglMAglUcNjaD6Terx pCNduFE4Wyq8FV83ZakRNuJwZyHJTd04riR/PYqeKh4lM1GibHi7TxbfjLjutpBm TsvCC4gmHYXTaCg4QDuYNBqhw= Received: by filter0529p1mdw1.sendgrid.net with SMTP id filter0529p1mdw1.17319.5584BE29C 2015-06-20 01:13:14.193005275 +0000 UTC Received: from herokuapp.com (ec2-54-198-112-49.compute-1.amazonaws.com [54.198.112.49]) by ismtpd-039 (SG) with ESMTP id 14e0e86d4d7.e06.4a9f4d for ; Sat, 20 Jun 2015 01:13:14 +0000 (UTC) Date: Sat, 20 Jun 2015 01:13:13 +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: 44248 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/Ymy4QrNMhiuLXJG8OTL2vJD1yS5DBbyYpErxFtNaFviEJabjEMjdtNmyk2rlRN O0tW6kXVuV67lYdjHuraXm7DUTamtf24REa0nIUEGj7F/JDI8RW2eYR5nqu/dkn3CSpOKOaDxX13Xi V1vWWZV5sWdB3hw6L37rGTMFGux6b8PmTou8 X-ML-Name: ruby-core X-Mail-Count: 69689 Subject: [ruby-core:69689] [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. File case_equality_sequence_predicates-all_updates.patch added I knew the call to `rb_check_arity()` should come first, but your very nice solution to doing so without mixing declarations and code did not occur to me. The attached contains all of the improvements discussed so far, but maybe there are more to be found? Is there something cleaner than passing `argc` to `ENUMFUNC()`? ---------------------------------------- Feature #11286: [PATCH] Add case equality arity to Enumerable's sequence predicates. https://bugs.ruby-lang.org/issues/11286#change-53064 * 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/