Deutsch   English   Français   Italiano  
<vbh2an$19l65$1@dont-email.me>

View for Bookmarking (what is this?)
Look up another Usenet article

Path: ...!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail
From: "B. Pym" <Nobody447095@here-nor-there.org>
Newsgroups: comp.lang.lisp,comp.lang.scheme
Subject: re: Elegant solution asked
Date: Sat, 7 Sep 2024 08:19:39 -0000 (UTC)
Organization: A noiseless patient Spider
Lines: 30
Message-ID: <vbh2an$19l65$1@dont-email.me>
MIME-Version: 1.0
Content-Type: text/plain; charset=iso-8859-1
Injection-Date: Sat, 07 Sep 2024 10:19:40 +0200 (CEST)
Injection-Info: dont-email.me; posting-host="4447948589173226b402cfc683751de7";
	logging-data="1365189"; mail-complaints-to="abuse@eternal-september.org";	posting-account="U2FsdGVkX1/896eTEKlS2nRi84EeSD6z"
User-Agent: XanaNews/1.18.1.6
Cancel-Lock: sha1:Z9GOFZS4GmLiTiWtAYNKppYQIjA=
Bytes: 1869

> > Very often I need a function to map a 2 argument function over a list and
> > a fixed argument. For example, if we call such function map1:
> > (map1 #'list 'z '(a b c)) should return: '((z a) (z b) (z c))
> >
> > Can anyone suggest an elegant solution for this. The best I could come up
> > with was:
> >
> > (defun map1 (function fixed-argument list)
> >     (mapcar (lambda (element) (funcall fn fixed-argument element)) list))
> >
> > This works fine, but I have the gut feeling that there must be a
> > better/simpler way. Any ideas?
> > Thanks in advance.
> > Please reply to: lsarasua@epo.e-mail.com
> 
> I prefer the following (I guess because it avoids the funcall), although
> I don't claim it is is significantly better.
> 
> (defun map1 (function fixed_argument list) (mapcar function
>              (mapcar #'(lambda (x) fixed-argument) list) list))

Scheme

(map (curry list '--) '(a b c))
  ===>
((-- a) (-- b) (-- c))

(map (curryr list '--) '(a b c))
  ===>
((a --) (b --) (c --))