From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Michael Heerdegen Newsgroups: gmane.emacs.bugs Subject: bug#49316: Add apply-partially's right version Date: Sat, 03 Jul 2021 05:06:18 +0200 Message-ID: <875yxsxfit.fsf@web.de> References: <2315db79-00cf-b2f0-b5df-93cd53392292@gmail.com> <87r1ghr7d1.fsf@web.de> <5a08f089-3a19-d747-5098-4751c92a5b79@gmail.com> Mime-Version: 1.0 Content-Type: text/plain Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="28804"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) Cc: 49316@debbugs.gnu.org To: daanturo Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Sat Jul 03 05:07:09 2021 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1lzVzp-0007P8-6E for geb-bug-gnu-emacs@m.gmane-mx.org; Sat, 03 Jul 2021 05:07:09 +0200 Original-Received: from localhost ([::1]:32960 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lzVzo-0003n4-7g for geb-bug-gnu-emacs@m.gmane-mx.org; Fri, 02 Jul 2021 23:07:08 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:57460) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lzVzi-0003mr-Ct for bug-gnu-emacs@gnu.org; Fri, 02 Jul 2021 23:07:02 -0400 Original-Received: from debbugs.gnu.org ([209.51.188.43]:54234) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lzVzi-00019r-5i for bug-gnu-emacs@gnu.org; Fri, 02 Jul 2021 23:07:02 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1lzVzi-0001yM-1W for bug-gnu-emacs@gnu.org; Fri, 02 Jul 2021 23:07:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Michael Heerdegen Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 03 Jul 2021 03:07:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 49316 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch Original-Received: via spool by 49316-submit@debbugs.gnu.org id=B49316.16252815897542 (code B ref 49316); Sat, 03 Jul 2021 03:07:01 +0000 Original-Received: (at 49316) by debbugs.gnu.org; 3 Jul 2021 03:06:29 +0000 Original-Received: from localhost ([127.0.0.1]:37547 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lzVzB-0001xa-6x for submit@debbugs.gnu.org; Fri, 02 Jul 2021 23:06:29 -0400 Original-Received: from mout.web.de ([212.227.17.11]:35219) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lzVz7-0001xJ-NI for 49316@debbugs.gnu.org; Fri, 02 Jul 2021 23:06:28 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=web.de; s=dbaedf251592; t=1625281579; bh=rS33r5LQhRqyh37vMaBZDfAywctuTU7dxshV2Jeq1P0=; h=X-UI-Sender-Class:From:To:Cc:Subject:References:Date:In-Reply-To; b=S/ctsrfKvZaIAc+Y0gO0kyYlsPufF+A2jrIWhaHjS+NSNRE6Cs18jT+U2nm23fPiB MXSwpiJPZc4Q3inGCDep/lzq4lI4xJojoGCjn4xdwC3RMo7RrJe/2HJaKlDqvajeOJ CzX+61DNigyG3VWPA0/P09Z17Qkmeeqi3VZQAVMw= X-UI-Sender-Class: c548c8c5-30a9-4db5-a2e7-cb6cb037b8f9 Original-Received: from drachen.dragon ([84.59.210.69]) by smtp.web.de (mrweb105 [213.165.67.124]) with ESMTPSA (Nemesis) id 1MYcpt-1llRVJ3iK3-00VgnY; Sat, 03 Jul 2021 05:06:18 +0200 In-Reply-To: <5a08f089-3a19-d747-5098-4751c92a5b79@gmail.com> (daanturo@gmail.com's message of "Fri, 2 Jul 2021 11:39:03 +0700") X-Provags-ID: V03:K1:p4xztCy2+mholY8pmxLizj8YBKvmzdQb8MJ2F9Cerm3lzhdTlFj ZYhaOWPnFjEGEGgwdbDp4U+IAP8aM49HDFIO/76NBIH6128mt3bYAM7LBQ8Y+WxVF565JPt TYbeunHIC0JNphMs6vCJauQlXpqt1qJmZ3mphrnmcD2Tvvdi9bxbl933q9Tl3oGX3Ip2rjF KZ4jhXR9wk70Iupg+MXoA== X-UI-Out-Filterresults: notjunk:1;V03:K0:pC9OKkIUTLw=:aNOzKKIUCMXWbskUG4Xcnq Och3rglPXEfIMwnRfBcNbFfNiRguGlQiHsaEWrLc9LicMStDN4vb3+pBicIjUpCqXNFy/zIcp NrA+sbe+b3RcijoJnv2mGuH3Af1wMtAh4z4A4DJDNKUtXheDGrkJeCkickxXhgQk5Hw7c99/+ BWcb8hmsO/xvk4B3j+VIAvXavVnQ0DHb6X3wmzi2TsR5zAqnzFMJ6xLeF1YCEnpfOXnbwcm7t xEjwzL3PUqiNaTREoI7tUiXfKpMS7hO0ncgQz/mqtx1Rv5Yf/0e5vMmSiCXWQ1HCYXd8wkIrI ZjUHxyO8odGmQ3wbZHU7yK4TgjVy4Kq3xvHSE+kHcxUqAkzbyHxSccSHDfnQejfD+RmpChKc6 glCqF2cRx5vg0SuiImZJ7TzVJJvmP17PoWiZvSEuXqAwemBYuB61er1S0iGcy5L+FonQ9nAGY wHOIu9RsgR3LAZ+/bAG3Tsu7wkmxlDm1pP5tzZeHPs0H2WauMKqcCqScHR6bBZSwgwbGullvt vbsAJKLCbv0gcLmUZh9QlcHp/2kK356YcBVlTD6htezSX75FS+V4BYjqoFCm2ijwl6WcHEVib w8h3vHDpdCiaRMw3t6fmOGHPj8JVz2sICvauLRZsJXonceThdR6fg6MKkd0rjwmhw+bMmxtxi qbEqsRdfiUGcYLJf3nrNPPvyqlHaX298uU6p5OeR34ANJrVFr6LT+D7Rdw0Xah8tomea3Znlj YGla5qMA+in7xb728KgUQTXaKZ8QBMfrg+8eRrEz65LS0VsBcBakqOKLJN2K4nooT3JhHurA X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: "bug-gnu-emacs" Xref: news.gmane.io gmane.emacs.bugs:209341 Archived-At: daanturo writes: > +(defun apply-mid-partially (fun position &rest args) > + "Return a function that is a partial application of FUN to ARGS at POSITION. I'm not sure if I would prefer that. Personally I guess I would like something like this instead: A macro that allows partial application that really looks like an application. A placeholder (e.g. the symbol `_' which should normally be unbound) stands for an argument that is used from the args provided in the actual call: #+begin_src emacs-lisp (defmacro applying-partially (call) (let ((args (make-symbol "args"))) `(lambda (&rest ,args) (apply #',(car call) ,@(mapcar (lambda (arg) (if (eq arg '_) `(pop ,args) arg)) (cdr call)) ,args)))) (defalias 'minus-10 (applying-partially (- _ 10))) (minus-10 120) ;; ==> 110 (defalias 'my-list-with-some-elts (applying-partially (list 0 _ 2 _ 4))) (my-list-with-some-elts 'a 'b 'c 'd) ; => (0 a 2 b 4 c d) (symbol-function 'my-list-with-some-elts) ;; => (closure (t) (&rest args) ;; (apply #'list 0 (pop args) 2 (pop args) 4 args)) #+end_src In my eyes that would be more general and a bit better readable (I like when eldoc works with such stuff). Regards, Michael.