Groups | Search | Server Info | Login | Register
Groups > pt.comp.programacao > #273
| From | Patricia Ferreira <pferreira@example.com> |
|---|---|
| Newsgroups | pt.comp.programacao |
| Subject | Re: sobre loops em common lisp |
| Date | 2024-03-08 17:12 -0300 |
| Organization | A noiseless patient Spider |
| Message-ID | <8734t0iity.fsf@example.com> (permalink) |
| References | (2 earlier) <87ttlst7px.fsf@example.com> <878r2wsa0o.fsf@example.com> <87v860qomo.fsf@example.com> <87jzmgqnyl.fsf@example.com> <87cys8qnvt.fsf@example.com> |
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 | Next — Previous in thread | Find similar
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