Groups | Search | Server Info | Login | Register


Groups > pt.comp.programacao > #273

Re: sobre loops em common lisp

Path csiph.com!weretis.net!feeder8.news.weretis.net!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail
From Patricia Ferreira <pferreira@example.com>
Newsgroups pt.comp.programacao
Subject Re: sobre loops em common lisp
Date Fri, 08 Mar 2024 17:12:25 -0300
Organization A noiseless patient Spider
Lines 87
Message-ID <8734t0iity.fsf@example.com> (permalink)
References <87edcxza4m.fsf@example.com> <87le74la4b.fsf@lispclub.com> <87ttlst7px.fsf@example.com> <878r2wsa0o.fsf@example.com> <87v860qomo.fsf@example.com> <87jzmgqnyl.fsf@example.com> <87cys8qnvt.fsf@example.com>
MIME-Version 1.0
Content-Type text/plain; charset=utf-8
Content-Transfer-Encoding 8bit
Injection-Info dont-email.me; posting-host="709217590c1a7d211dc83a3985170039"; logging-data="1995763"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1+XnB5c7rN1lBCjRe180bPSFGZc39QgoOo="
Cancel-Lock sha1:xz3Vd6dvz3BUQqBVt9WH5/8HdUY= sha1:NgQxyRQoF9h1oXd+TkSx4lkAmpA=
Xref csiph.com pt.comp.programacao:273

Show key headers only | View raw


Patricia Ferreira <pferreira@example.com> writes:

> Patricia Ferreira <pferreira@example.com> writes:
>
>> Patricia Ferreira <pferreira@example.com> writes:
>>
>> [...]
>>
>>> Eis meu segundo.  Gere um nome (de arquivo) aleatório e tente usá-lo.
>>> Se calhar de alguém já tê-lo escolhido, tente de novo (com outro nome).
>>> Feito isso, retorne-nos esse nome sortudo e pra que a gente possa
>>> renomeá-lo pro seu nome final---accounts.lisp.
>>>
>>> (defun write-accounts ()
>>>   (let ((name
>>>           (loop 
>>>             (let* ((tmp (random-string 10))
>>>                    (name (format nil "~a.tmp" tmp)))
>>>               (when 
>>>                   (ignore-errors 
>>>                    (with-open-file 
>>>                        (s name
>>>                           :direction :output
>>>                           :if-exists :error
>>>                           :if-does-not-exist :create)
>>>                      (write *accounts* :stream s)))
>>>                 (return name))))))
>>>     (rename-file name "accounts.lisp")
>>>     *accounts*))
>>>
>>> Tecnicamente temos um problema com esse procedimento.  Se o rename-file
>>> não obtiver sucesso, nem vamos saber.
>>
>> Não sei o que fazer se o rename não ocorrer, mas ficamos a versão final:
>>
>> (defun write-accounts ()
>>   (let ((name
>>           (loop 
>>             (let* ((tmp (random-string 10))
>>                    (name (format nil "~a.tmp" tmp)))
>>               (when 
>>                   (ignore-errors 
>>                    (with-open-file 
>>                        (s name
>>                           :direction :output
>>                           :if-exists :error
>>                           :if-does-not-exist :create)
>>                      (write *accounts* :stream s)))
>>                 (return name))))))
>>     (if (ignore-errors (rename-file name "accounts.lisp"))
>>         *accounts*
>>         (format t "could not rename ~a to account.lisp" name))))
>
> Lol.  Não é isso que quero, não.  O que quero é:
>
> (defun write-accounts ()
>   (let ((name
>           (loop 
>             (let* ((tmp (random-string 10))
>                    (name (format nil "~a.tmp" tmp)))
>               (when 
>                   (ignore-errors 
>                    (with-open-file 
>                        (s name
>                           :direction :output
>                           :if-exists :error
>                           :if-does-not-exist :create)
>                      (write *accounts* :stream s)))
>                 (return name))))))
>     (if (ignore-errors (rename-file name "accounts.lisp"))
>         *accounts*
>         (format nil "could not rename ~a to accounts.lisp" name))))
>
> PACKAGE> (write-accounts)
> "could not rename wqjjpdlifi.tmp to accounts.lisp"
>
> Agora sim.

Lol.  Eis meu terceiro loop.

(defun size-of-longest-username ()
  (loop for u in *accounts*
        maximizing (length (account-username u))))

Escrevi isso sem nem ter que olhar nada pra relembrar.  Estou gostando
de loop.  Esse é o fato.  De fato são coisas que a gente faz muito.  A
comunidade Lisp tem sabedoria aí.

Back to pt.comp.programacao | Previous | NextPrevious in thread | Find similar


Thread

sobre loops em common lisp Patricia Ferreira <pferreira@example.com> - 2024-02-27 21:48 -0300
  Re: sobre loops em common lisp Daniel Cerqueira <dan.list@lispclub.com> - 2024-02-28 18:25 +0000
    Re: sobre loops em common lisp Patricia Ferreira <pferreira@example.com> - 2024-02-28 21:49 -0300
      Re: sobre loops em common lisp Daniel Cerqueira <dan.list@lispclub.com> - 2024-02-29 10:15 +0000
        Re: sobre loops em common lisp Patricia Ferreira <pferreira@example.com> - 2024-03-03 22:49 -0300
          Re: sobre loops em common lisp Daniel Cerqueira <dan.list@lispclub.com> - 2024-03-04 07:55 +0000
            Re: sobre loops em common lisp Patricia Ferreira <pferreira@example.com> - 2024-03-04 14:37 -0300
              Re: sobre loops em common lisp Daniel Cerqueira <dan.list@lispclub.com> - 2024-03-04 19:49 +0000
                Re: sobre loops em common lisp Patricia Ferreira <pferreira@example.com> - 2024-03-04 21:46 -0300
                Re: sobre loops em common lisp Daniel Cerqueira <dan.list@lispclub.com> - 2024-03-05 09:03 +0000
                Re: sobre loops em common lisp Patricia Ferreira <pferreira@example.com> - 2024-03-05 17:21 -0300
                Re: sobre loops em common lisp Daniel Cerqueira <dan.list@lispclub.com> - 2024-03-06 08:56 +0000
                Re: sobre loops em common lisp Patricia Ferreira <pferreira@example.com> - 2024-03-08 17:16 -0300
                Re: sobre loops em common lisp Daniel Cerqueira <dan.list@lispclub.com> - 2024-03-08 21:11 +0000
                Re: sobre loops em common lisp Patricia Ferreira <pferreira@example.com> - 2024-03-08 18:38 -0300
      Re: sobre loops em common lisp Patricia Ferreira <pferreira@example.com> - 2024-03-05 17:23 -0300
        Re: sobre loops em common lisp Patricia Ferreira <pferreira@example.com> - 2024-03-05 19:50 -0300
          Re: sobre loops em common lisp Patricia Ferreira <pferreira@example.com> - 2024-03-05 20:05 -0300
            Re: sobre loops em common lisp Patricia Ferreira <pferreira@example.com> - 2024-03-05 20:07 -0300
              Re: sobre loops em common lisp Patricia Ferreira <pferreira@example.com> - 2024-03-08 17:12 -0300

csiph-web