Sujet : Re: Why don't people like lisp?
De : jbb (at) *nospam* notatt.com (Jeff Barnett)
Groupes : comp.lang.lispDate : 04. Jul 2024, 08:12:02
Autres entêtes
Organisation : A noiseless patient Spider
Message-ID : <v65efj$2ktd2$1@dont-email.me>
References : 1 2 3 4 5 6 7 8 9 10
User-Agent : Mozilla Thunderbird
On 7/3/2024 7:11 PM, Paul Rubin wrote:
Lawrence D'Oliveiro <ldo@nz.invalid> writes:
max is a two-argument function, just like +.
Not in all the good languages.
Ah ok, yeah for the variadic versions in CL and Scheme, (max 2) gives 2
but (max) throws a wrong-number-of-args error. In Haskell, max always
takes two args of an ordered type, and maximum takes a list arg.
maximum [2] gives 2 but maximum [] throws an empty list exception.
maximum just applies max repeatedly, like using reduce in Lisp.
I believe that (max) and (min) would work just fine in CL if including the IEEE infinities was required to be conforming. Without them or something similar, it would be hard to make a sensible definition.
Also refresh my memory: doesn't CL define a map-like function that looks like (MAP! binary-op list identity-element) so that:
(MAP! #'+ list 0) is the sum of the elements in the list
(MAP! #'* list 10 is the product of the elements in list
(MAP! #'max list -oo) is the max element in the list
(MAP! #'min list +oo) is the minimum element in the list
(MAP! #'append list nil) is the list made by appending the sublists
of list
etc.
In all of these if the list argument is nil, the result is the identity element.
-- Jeff Barnett