Rocksolid Light

News from da outaworlds

mail  files  register  groups  login

Message-ID:  

BOFH excuse #391: We already sent around a notice about that.


comp / comp.lang.scheme / Re: Learning Lisp in Linux?

SubjectAuthor
* Re: Learning Lisp in Linux?B. Pym
`- Re: Learning Lisp in Linux?B. Pym

1
Subject: Re: Learning Lisp in Linux?
From: B. Pym
Newsgroups: comp.lang.lisp, comp.lang.scheme
Organization: A noiseless patient Spider
Date: Wed, 28 Aug 2024 00:49 UTC
Path: eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail
From: Nobody447095@here-nor-there.org (B. Pym)
Newsgroups: comp.lang.lisp,comp.lang.scheme
Subject: Re: Learning Lisp in Linux?
Date: Wed, 28 Aug 2024 00:49:14 -0000 (UTC)
Organization: A noiseless patient Spider
Lines: 37
Message-ID: <vals69$36dse$1@dont-email.me>
MIME-Version: 1.0
Content-Type: text/plain; charset=iso-8859-1
Injection-Date: Wed, 28 Aug 2024 02:49:14 +0200 (CEST)
Injection-Info: dont-email.me; posting-host="e20b841b07463d489f1974339e45f851";
logging-data="3356558"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1/Qanw5bF3MS+3USo3OiBOn"
User-Agent: XanaNews/1.18.1.6
Cancel-Lock: sha1:e91LJSMPg9DJlIcrJ01MNxywpZs=
View all headers

Pascal Costanza wrote:

> > I'm not advocating tail-recursion instead of specialized iteration
> > mechanisms closer to the problem domain. I'm just saying tail-
> > recursion code isn't anywhere as low-level as you're making it up to
> > be.
>
> It actually is, and your posting below shows it very nicely.
>
> >> Here is a nice example using loop:
> >>
> >> (loop for (key value) on property-list by #'cddr
> >> unless (member key excluded-keys)
> >> append (list key value)) ; [1]
>
> As a function:
>
> (defun filter (excluded-keys property-list)
> (loop for (key value) on property-list by #'cddr
> unless (member key excluded-keys)
> nconc (list key value)))
>
> > (filter '(c d) '(a 1 b 2 b 3 c 4 d 5 c 6))
> (A 1 B 2 B 3)
>
> The result is a correct property list

Gauche Scheme
(define (remove-props bad-keys prop-list)
(concatenate
(remove (^p (member (car p) bad-keys))
(slices prop-list 2))))

(remove-props '(c d) '(a 1 b 2 b 3 c 4 d 5 c 6))
===>
(a 1 b 2 b 3)

Subject: Re: Learning Lisp in Linux?
From: B. Pym
Newsgroups: comp.lang.lisp, comp.lang.scheme
Organization: A noiseless patient Spider
Date: Wed, 28 Aug 2024 01:38 UTC
References: 1
Path: eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail
From: Nobody447095@here-nor-there.org (B. Pym)
Newsgroups: comp.lang.lisp,comp.lang.scheme
Subject: Re: Learning Lisp in Linux?
Date: Wed, 28 Aug 2024 01:38:46 -0000 (UTC)
Organization: A noiseless patient Spider
Lines: 77
Message-ID: <valv31$3agcu$1@dont-email.me>
References: <vals69$36dse$1@dont-email.me>
MIME-Version: 1.0
Content-Type: text/plain; charset=iso-8859-1
Injection-Date: Wed, 28 Aug 2024 03:38:46 +0200 (CEST)
Injection-Info: dont-email.me; posting-host="a03dbfeb9a1463ceb21df88d90b5003b";
logging-data="3490206"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX19UVeC14zWj1O3bll2RYkK5"
User-Agent: XanaNews/1.18.1.6
Cancel-Lock: sha1:ww9qa4VmZAO7PDPV3wCHDE6pAwA=
View all headers

B. Pym wrote:

> Pascal Costanza wrote:
>
> > > I'm not advocating tail-recursion instead of specialized iteration
> > > mechanisms closer to the problem domain. I'm just saying tail-
> > > recursion code isn't anywhere as low-level as you're making it up to
> > > be.
> >
> > It actually is, and your posting below shows it very nicely.
> >
> > >> Here is a nice example using loop:
> > > >
> > >> (loop for (key value) on property-list by #'cddr
> > >> unless (member key excluded-keys)
> > >> append (list key value)) ; [1]
> >
> > As a function:
> >
> > (defun filter (excluded-keys property-list)
> > (loop for (key value) on property-list by #'cddr
> > unless (member key excluded-keys)
> > nconc (list key value)))
> >
> > > (filter '(c d) '(a 1 b 2 b 3 c 4 d 5 c 6))
> > (A 1 B 2 B 3)
> >
> > The result is a correct property list
>
> Gauche Scheme
>
> (define (remove-props bad-keys prop-list)
> (concatenate
> (remove (^p (member (car p) bad-keys))
> (slices prop-list 2))))
>
> (remove-props '(c d) '(a 1 b 2 b 3 c 4 d 5 c 6))
> ===>
> (a 1 b 2 b 3)

Nicolas Neuss wrote:

> > does this look like assembly?
> >
> > (define (! n)
> > (let loop ((x n) (r 1))
> > (if (zero? x) r
> > (loop (- x 1) (* x r)))))
>
> Yes, it does compared with
>
> (defun factorial (n)
> (loop for n from 1 upto n
> and f = 1 then (* f n)
> finally (return f)))

It's shorter using "do".

(define (fac n)
(do ((i 1 (+ 1 i))
(f 1 (* f i)))
((> i n) f)))

(fac 5)
===>
120

Paul Graham:

I consider Loop one of the worst flaws in CL, and an example
to be borne in mind by both macro writers and language designers.

Paul Graham, May 2001:

A hacker's language is terse and hackable. Common Lisp is not.

The good news is, it's not Lisp that sucks, but Common Lisp.

1

rocksolid light 0.9.8
clearnet tor