all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Tassilo Horn <tsdh@gnu.org>
To: Oleh <ohwoeowho@gmail.com>
Cc: "Stephen J. Turnbull" <stephen@xemacs.org>,
	"emacs-devel@gnu.org" <emacs-devel@gnu.org>
Subject: Re: [PATCH] Clojure-like syntactic sugar for an anonymous function literal
Date: Thu, 22 Jan 2015 11:56:22 +0100	[thread overview]
Message-ID: <877fwfgk2x.fsf@gnu.org> (raw)
In-Reply-To: <CAA01p3p2ArM+a_YTKWM44+tuLd2yDKs-d5Si1oNJC-O1ic7RSw@mail.gmail.com> (Oleh's message of "Thu, 22 Jan 2015 11:22:42 +0100")

Oleh <ohwoeowho@gmail.com> writes:

>>  > The most popular library in MELPA, https://github.com/magnars/dash.el,
>>  > implements it (for a long time) like this:
>>  >
>>  >     (--map (* it it) '(1 2 3))
>>  >     ;; => (1 4 9)
>>  >
>>  > With my approach, it's:
>>  >
>>  >     (mapcar #(* % %) '(1 2 3))
>>  >     ;; => (1 4 9)
>>
>> That looks almost like Perl!  Now I'm -2.  Just require dash.
>
> How is `dash' better? `--map' is a macro:
>
>     (defmacro --map (form list)
>       "Anaphoric form of `-map'."
>       (declare (debug (form form)))
>       `(mapcar (lambda (it) ,form) ,list))
>
> `dash' also gives other ~40 macros that look like this, littered all
> over the code in the MELPA, so it's impossible to go on without
> understanding what `dash' does.

FWIW, I favor your Clojure-like syntax over anaphoric macros.  And one
benefit is that you're not restricted to one list to map over as in
--map.  E.g., your approach works out of the box with

  (cl-mapcar #(- %5 %4 %3 %2 %1) list1 list2 list3 list4 list5)

for which there is no dash equivalent.  Of course, --map could be
extended to create args (it1 ... itN) if more than one list is given.

BTW, do you also support %& to declare that the lambda has a &rest arg
so that you can do

  (apply #'cl-mapcar #(apply #'- (reverse %&)) list-of-lists)

?

So basically I like that syntax (or maybe #l(...) or #fn(...)) and would
consider using it where it makes sense.  But as others already
mentioned, those places are much fewer than in an almost purely
functional language like Clojure.

Bye,
Tassilo



  parent reply	other threads:[~2015-01-22 10:56 UTC|newest]

Thread overview: 78+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-01-21 21:38 [PATCH] Clojure-like syntactic sugar for an anonymous function literal Oleh
2015-01-21 22:28 ` samer
2015-01-21 22:37   ` Oleh
2015-01-21 23:36     ` Artur Malabarba
2015-01-21 23:46       ` Oleh
2015-01-22  0:54         ` Artur Malabarba
2015-01-22  0:57           ` Artur Malabarba
2015-01-22  1:29 ` Daniel Colascione
2015-01-22  2:21   ` Drew Adams
2015-01-22 13:35     ` Lars Brinkhoff
2015-01-22  7:20   ` Stephen J. Turnbull
2015-01-22  8:04     ` Oleh
2015-01-22  8:16       ` David Kastrup
2015-01-22  9:07       ` Andreas Schwab
2015-01-22  9:19         ` Oleh
2015-01-22  8:52   ` René Kyllingstad
2015-01-22  9:17     ` David Kastrup
2015-01-22  9:27       ` Oleh
2015-01-22  9:38         ` Daniel Colascione
2015-01-22  9:45           ` Oleh
2015-01-22  9:50             ` Daniel Colascione
2015-01-22  9:52               ` Oleh
2015-01-22  9:57                 ` Daniel Colascione
2015-01-22 10:05                   ` Oleh
2015-01-22 16:57                     ` Ivan Andrus
2015-01-23  0:54           ` Leo Liu
2015-01-24 23:33           ` Lars Ingebrigtsen
2015-01-22 10:15         ` Stephen J. Turnbull
2015-01-22 10:20           ` David Kastrup
2015-01-22 14:21             ` Stephen J. Turnbull
2015-01-22 14:31               ` Oleh
2015-01-23  1:03                 ` Stephen J. Turnbull
2015-01-22 10:22           ` Oleh
2015-01-22 10:32             ` David Kastrup
2015-01-22 10:40               ` Oleh
2015-01-22 10:56             ` Tassilo Horn [this message]
2015-01-22 11:03               ` Oleh
2015-01-22 14:35             ` Stephen J. Turnbull
2015-01-22 14:44               ` Oleh
2015-01-23  1:11                 ` Stephen J. Turnbull
2015-01-22 14:48               ` Artur Malabarba
2015-01-23  1:17                 ` Stephen J. Turnbull
2015-01-22 11:03           ` Phillip Lord
2015-01-22  9:35       ` René Kyllingstad
2015-01-22  9:45         ` Daniel Colascione
2015-01-22  9:49         ` David Kastrup
2015-01-22  9:53           ` Daniel Colascione
2015-01-22 10:22         ` David Kastrup
2015-01-22 12:37   ` Artur Malabarba
2015-01-22 12:46     ` Phillip Lord
2015-01-22 12:49       ` Daniel Colascione
2015-01-22 13:07         ` Oleh
2015-01-22 22:10           ` Richard Stallman
2015-01-23  9:28             ` David Kastrup
2015-01-24  1:09               ` Richard Stallman
2015-01-24  8:29                 ` Thien-Thi Nguyen
2015-01-23 10:33             ` Eli Zaretskii
2015-01-22 16:44 ` Stefan Monnier
2015-01-22 17:22   ` Oleh
2015-01-22 20:34     ` Daniel Colascione
2015-01-22 23:36       ` Stefan Monnier
2015-01-22 23:38         ` Reader macros (Was: Re: [PATCH] Clojure-like syntactic sugar for an anonymous function literal) Daniel Colascione
2015-01-23  9:33           ` Reader macros David Kastrup
2015-01-23 11:45             ` Daniel Colascione
2015-01-23 12:27               ` David Kastrup
2015-01-23 10:34         ` [PATCH] Clojure-like syntactic sugar for an anonymous function literal Phillip Lord
2015-01-23 10:47           ` Oleh
2015-01-23 11:53             ` Phillip Lord
2015-01-23 12:02               ` Daniel Colascione
2015-01-23 11:50           ` Daniel Colascione
2015-01-23 13:18             ` Phillip Lord
2015-01-23 20:24           ` Stefan Monnier
2015-01-23 20:52             ` Stefan Monnier
2015-01-23 22:25               ` Phillip Lord
2015-01-23  7:44       ` Oleh
2015-01-22 23:28     ` Stefan Monnier
2015-01-22 18:30   ` Artur Malabarba
  -- strict thread matches above, loose matches on Subject: below --
2015-01-26 22:22 Barry OReilly

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=877fwfgk2x.fsf@gnu.org \
    --to=tsdh@gnu.org \
    --cc=emacs-devel@gnu.org \
    --cc=ohwoeowho@gmail.com \
    --cc=stephen@xemacs.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.