From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: Mark Oteiza Newsgroups: gmane.emacs.devel Subject: Another pcase-lambda Date: Mon, 18 Sep 2017 20:56:37 -0400 Message-ID: <20170919005637.GA19322@holos.localdomain> NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Trace: blaine.gmane.org 1505782608 3242 195.159.176.226 (19 Sep 2017 00:56:48 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Tue, 19 Sep 2017 00:56:48 +0000 (UTC) User-Agent: Mutt/1.9.0 (2017-09-02) Cc: Stefan Monnier To: emacs-devel@gnu.org Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Tue Sep 19 02:56:44 2017 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by blaine.gmane.org with esmtp (Exim 4.84_2) (envelope-from ) id 1du6qB-0000eR-RI for ged-emacs-devel@m.gmane.org; Tue, 19 Sep 2017 02:56:43 +0200 Original-Received: from localhost ([::1]:39538 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1du6qJ-0005vo-Bv for ged-emacs-devel@m.gmane.org; Mon, 18 Sep 2017 20:56:51 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:48387) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1du6qB-0005u8-6o for emacs-devel@gnu.org; Mon, 18 Sep 2017 20:56:44 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1du6q8-0001UG-6V for emacs-devel@gnu.org; Mon, 18 Sep 2017 20:56:43 -0400 Original-Received: from mail-qk0-x22f.google.com ([2607:f8b0:400d:c09::22f]:45058) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1du6q8-0001Su-1E for emacs-devel@gnu.org; Mon, 18 Sep 2017 20:56:40 -0400 Original-Received: by mail-qk0-x22f.google.com with SMTP id r141so2239472qke.2 for ; Mon, 18 Sep 2017 17:56:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=udel-edu.20150623.gappssmtp.com; s=20150623; h=date:from:to:cc:subject:message-id:mime-version:content-disposition :user-agent; bh=41qCUKpWVgkMyrRvx41ds7iJaNJ3UaQ6bQCBAzuqW0w=; b=Q2utU4cU6Fu/rYmifv5yePcSkznP0vCYoBJm6ylG1CNGAjQsZZE1L6513a8RJC0CR/ GcCcWNiEepOTfkN0FgkFoOdYsLq+5FUyHIiZBifT5UQr45Cz6ihHX4rpotmk0dL2QKVJ K9kMI2vnHsLwLI2u7itJzqPaPjlUQ87ZAxRSRlAiQ9Sev8U4M44NEUV9lnj8PXFY/Mix WfstzNXOfgxZj8U95X2zdxSO+97hRFNNZUYcBp3LhIW6QbvO5yt7N6DGgdg+LuYuouwa 34pIqw3zscpln13vVubJQoGV2+aodyt9Y4IHTGPxZbrdd8mSITAOlG6T/GiHVIVnmrg+ 5aJw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:mime-version :content-disposition:user-agent; bh=41qCUKpWVgkMyrRvx41ds7iJaNJ3UaQ6bQCBAzuqW0w=; b=gEzZHMZDMtpUB/FTuaTsv+DBAQdFkHsFJqrLtUuGlXiIeamnXcBtVfeXxtqT1QPZ4V Vw0Y3XQcXf6c+UzGiFueVbu5SOMz6Y4+bHbO7+xMncokMzT1WSgNXGXGQdcRc+JF1Fm3 iRvEMSsQjFM1uGYRFZ+6xpYbc7m37xfJCnmtIlpvul1Z9CPZ9VWRdu8pVAhu85jqgZYE o2cz4bU97Op9yftNIl+QnOPyuu5aAMxYIGlPYWVH++uffnW+mg1PpksGgorWJXhpML55 ncH3ng6i9I+48afr6DDbX6jltRPUpUpbOK3Yx2ieXca5AlbompprxxEVL4BrKXRrMCFR XLbQ== X-Gm-Message-State: AHPjjUhGSicRje5Np+ul+X1m0ywNACVPGTEXZ06j2pN3VLuR+AqD/Kmj 0dfTgYaKpQBJuJEyUb8iTw== X-Google-Smtp-Source: AOwi7QBFQLt14RVOKSxTxhtddjWKoxp9EdGkc+VWv/Tk5ni9DXgYxRuKQfsm0OfBQ0XfaEO/rTKlcQ== X-Received: by 10.55.166.10 with SMTP id p10mr21766463qke.8.1505782599080; Mon, 18 Sep 2017 17:56:39 -0700 (PDT) Original-Received: from holos.localdomain (pool-173-67-36-61.bltmmd.fios.verizon.net. [173.67.36.61]) by smtp.gmail.com with ESMTPSA id c40sm6206450qte.56.2017.09.18.17.56.37 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Mon, 18 Sep 2017 17:56:38 -0700 (PDT) Original-Received: by holos.localdomain (Postfix, from userid 1000) id 43EC766146; Mon, 18 Sep 2017 20:56:37 -0400 (EDT) Content-Disposition: inline X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c09::22f X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.org gmane.emacs.devel:218500 Archived-At: Hi, I wrote the following, as I wanted more out of pcase-lambda. However, pcase-lambda already exists so I don't know what to call it. It does somewhat emulate SRFI-16's case-lambda. (defmacro case-lambda (&rest spec) "Return an arbitrary arity function." (declare (indent 0) (debug (&rest (pcase-QPAT body)))) (let ((args (make-symbol "args"))) `(lambda (&rest ,args) (pcase-exhaustive ,args ,@spec)))) (case-lambda (`() t) (`(,x) (cons x 1)) (`(,x ,y) (list :x x :y y)) (`(,x ,y . ,z) (vconcat (cons x (cons y z)))))