Sujet : Re: Why don't people like lisp?
De : Nobody447095 (at) *nospam* here-nor-there.org (B. Pym)
Groupes : comp.lang.lisp comp.lang.schemeDate : 13. Sep 2024, 03:31:52
Autres entêtes
Organisation : A noiseless patient Spider
Message-ID : <vc04m6$h4do$1@dont-email.me>
User-Agent : XanaNews/1.18.1.6
Here's a more realistic example that illustrates exactly the
opposite point. Take the task of finding the sum of the square of a
bunch of numbers.
Do people really think to themselves when they do this task:
Umm first make a variable called sum
then set that variable sum to zero.
Then get the next number in the list,
square it,
add it to the old value of sum,
store the resulting value into sum,
then get the next variable,etc....
>
No they they think: sum up the square of a bunch of numbers.
This has an almost direct translation to the lisp style:
(apply '+ (mapcar #'(lambda(x)(* x x)) numlist)).
Well..
sum (map (\x -> x ** 2) [1..10])
in Haskell, or
sum (map ((lambda x: x ** 2), range(1,11)))
>
Too much line noise ;-)
>
sum([x*x for x in range(1,11)])
It's shorter in Gauche Scheme.
(use srfi-42) ;; sum-ec
(sum-ec (: n 11) (* n n))
===>
385
Less condensed:
(sum-ec (:range n 1 11) (* n n))
>
Then I would say that a clearer way to express what a person think is:
(loop for number in numberlist sum (expt number power))
Gauche Scheme
(use srfi-42) ;; sum-ec
(sum-ec (:list n '(3 4 5 6)) (* n n))
===>
86