Path: csiph.com!1.us.feeder.erje.net!3.eu.feeder.erje.net!feeder.erje.net!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail From: Patricia Ferreira Newsgroups: pt.comp.programacao Subject: Re: Lisp, um mapa de trajeto Date: Fri, 12 Jan 2024 20:50:07 -0300 Organization: A noiseless patient Spider Lines: 111 Message-ID: <87edem3yds.fsf@example.com> References: <87sf37ajzn.fsf@example.com> <87y1cy8z8u.fsf@example.com> <87v881z5qs.fsf@brilhante.top> <87a5pd6kuv.fsf@yaxenu.org> <8734v3ztrz.fsf@brilhante.top> <877cke4ny3.fsf@example.com> <87y1cujtsk.fsf@brilhante.top> <87ttni48z9.fsf@example.com> <87r0im428v.fsf@brilhante.top> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Injection-Info: dont-email.me; posting-host="6bc8a83bbeab7e01e2431355828bc095"; logging-data="3829871"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX18ZBEBgMyW3ruZ+FwNwvrxr5v5dce/3364=" Cancel-Lock: sha1:rIcsNe7HFCb9UT7nk4cWVzOSemY= sha1:eqNVsQMAMOpYj7fixKL7oRjONc4= Xref: csiph.com pt.comp.programacao:138 Daniel Cerqueira writes: > Patricia Ferreira writes: > >> Daniel Cerqueira writes: >> >>> Patricia Ferreira writes: >>> >>>> Vamos começar bem do zero e investigar onde estamos. (Estou assumindo >>>> Common Lisp.) Qual seria um bom nome pro procedimento abaixo? Quanto >>>> tempo você levou pra chegar a sua resposta? >>>> >>>> (defun f (ls) >>>> (cond >>>> ((null ls) nil) >>>> ((consp ls) >>>> (or (string= (car ls) "gluten") >>>> (f (cdr ls)))))) >>>> >>> >>> Eu chamaria de search-for-gluten. Embora seja algo que se deva evitar >>> :-) >> >> O que que se deve evitar? >> > > Comer gluten :-P > >>> Retorna t caso uma lista tenha como primeiro átomo a string "gluten". >> >> O procedimento retorna true caso a string "gluten" esteja em qualquer >> posição da lista /ls/. Isso não me parece uma ``falta de atenção''. >> Isso me parece falta de intimidade com o assunto. Vai-lhe ser útil ler >> o HtDP. Você vai compreender esses padrões e muito mais. > > Sim, tens razão. Não estava a pensar direito. Eu sei que vai fazendo car > a todos os elementos da lista. Desculpa o erro. Não é falta de > conhecimento, neste caso. Foi distração, também vinda da falta de ter > feito um teste a esse código. Amizade é nunca ter que pedir desculpas. -- Love Story, 1970. >> Vejamos um próximo exercício? >> >> (*) Exercício 2 >> >> Escreva um procedimento f que consome duas listas de números inteiros em >> ordem ascendente. O procedimento f retorna uma única lista ordenada de >> números que contenha todos os números de ambas listas de entrada. Um >> número ocorre na saída tantas vezes quando ocorre em ambas as listas de >> entrada. Quando tempo você levou pra escrever o procedimento? > > Fácil! Acabei de ler precisamente esse capítulo do PCL. Foi só o tempo > de procurar como é a sintaxe do sort. Diria que demorei 1 minuto. > > (defun f (a b) > (sort (append a b) #'<)) Solução correta, o nos obriga a fazer um patch no exercício: o espírito do exercício não é esse. O exercício não está buscando detectar se você conhece a sintaxe Common Lisp. O exercício que se saber se você pensa como um programador Lisp. O primeiro exercício queria ver se você reconhecia a varredura de /uma/ lista. O segundo agora quer saber se você consegue varrer duas listas ao mesmo tempo. Vai-lhe ser útil ler o HtDP. (*) Exercício 2 patch-1 Use apenas cond, null, car, cdr e <. Escreva um procedimento f que consome duas listas de números inteiros em ordem ascendente. O procedimento f retorna uma única lista ordenada de números que contenha todos os números de ambas listas de entrada. Um número ocorre na saída tantas vezes quando ocorre em ambas as listas de entrada. Quando tempo você levou pra escrever o procedimento? >>>>> Patricia, eu li e recomendo ler, os livros do John McCarthy sobre Lisp. >>>> >>>> Vamos enumerar esses livros. Qual o primeiro que você recomenda? >>> >>> 1. http://www-formal.stanford.edu/jmc/recursive.html >> >> Interessante. Você chama isso de livro? Eu chamo de artigo. >> > > Sim, é um artigo. :-P > >>> 2. o livro de LISP 1.5 Programmers Manual. Ainda me falta ler este >>> (estou agora a ler o PCL). >> >> Por que é recomendado? > > Para entender melhor o Lisp 1.5. Isto faz com que se compreenda melhor > os Lisp atuais. Lisp 1.5 é importante por ser o Lisp antes da > divergência que ocorreu com o nascimento dos vários Lisps. Também por > ser um livro de McCarthy. Legal. >>> Tens chave OpenPGP? >> >> Tenho várias. > > Podes-me enviar uma das tuas chaves por email? O meu email está no > cabeçalho. Assim quando eu mudar de email, ficas a continuar a saber que > sou eu (caso eu assine as mensagens NNTP, que estou a pensar em começar > a fazer). Olha, não uso e-mail criptografado. Posso te mandar uma chave minha, mas não vai me ser nada conveniente descriptografar qualquer coisa que você me envie por e-mail --- nunca instalei qualquer mecanismo de rápida criptografia ou descriptografia.