• re: Elegant solution asked

    From B. Pym@21:1/5 to All on Sat Sep 7 08:19:39 2024
    XPost: comp.lang.scheme

    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 --))

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)