Aí está uma das vantagens do scheme. No lisp, funções não estão no mesmo
namespace que variáveis e aí você precisa avisar qual é qual.
Isto aqui funciona.
(defun a-plus-abs-b (a b)
(funcall (if (> b 0) #'+ #'-)
a
b))
Se você digitar um número ou variável no prompt, seu valor será impresso.
CL-USER> 10
10
Agora se você digitar uma função, acontece um erro:
CL-USER> car
-uuu:**-F1 *slime-repl sbcl* Bot L16 (REPL)-------------------------------
The variable CAR is unbound.
[Condition of type UNBOUND-VARIABLE]
Para você ver o valor você precisa avisar o REPL que o negócio é uma função:
CL-USER> (function car)
#<FUNCTION CAR>
Ou para encurtar:
CL-USER> #'car
#<FUNCTION CAR>
________________________________
De: Andre Fernandes <[email protected]>
Para: [email protected]
Enviadas: Quarta-feira, 22 de Julho de 2009 9:13:31
Assunto: Conversão código de scheme para common lisp
Oi,
Ainda sou um pouco inexperiente em Lisp, e tentei rodar o código mostrado pelo
Alan no common lisp (apenas trocando 'define' por 'defun'), contudo não
funcionou.
É possível fazer esse código funcionar no common lisp? Ou isso é uma
característica específica do Scheme?
O código que tentei rodar foi:
(defun a-plus-abs-b (a b)
((if (> b 0) + -) a b))
Mas não tive sucesso algum.
Desde já agradeço as respostas,
André.
2009/7/20 Alan <[email protected]>
Oi,
>
>Meu nome é Alan e sou novato nesse mundo, não botava uma fé em lisp, mas de
>tanto ouvir falar nisso me interessei e acabei entrando no grupo de estudos do
>sicp. O que fez meu interesse despertar na linhagem foi o exercício 1.4, pág
>21:
>
>(define (a-plus-abs-b a b)
> ((if (> b 0) + -) a b))
>
>PÔ! Olha o poder disso. Eu já vinha me encantando pela sintaxe pré-fixada,
>pois ela facilita coisas como aplicação de operações em múltiplos operandos,
>tipo:
>
>(+ 1 2 3 4 5 6) contra 1 + 2 + 3 + 4 + 5 + 5
>
>E a liberdade que a linhagem te dá quanto a nomes, mais um exemplo do
>livro,pág 20:
>
>(define (>= x y)
> (or (> x y) (= x y)))
>
>Conversei uma vez com um amigo lispiano e falei para ele:
>
>"Mostra isso: http://www.schemers.com/ e isso: http://www.ruby-lang.org/pt/
>para uma pessoa, qual você acha que ela vai escolher?"
>
>Tem essa história que a gente escuta muito de que lisp morreu. Eu não acho que
>a linguagem morreu, só acho que o pessoal que mantém o marketing do negócio é
>de uma época em que a internet tava em versão beta 0.1.
>
>>Espero aprender muito aqui com vocês!
>
>Abras,
>
>alf.
>
>
>
>
>
>On Mon, Jul 20, 2009 at 10:17 AM, Stephen Eilert <[email protected]> wrote:
>
>
>>On Mon, Jul 20, 2009 at 10:09 AM, Alex Queiroz<[email protected]> wrote:
>>>
>>> Hallo,
>>>
>>> On 7/20/09, Guaracy Monteiro <[email protected]> wrote:
>>>>>>
>>>>
>>>> Mas e as propostas do cara?
>>>>
>>>
>>> So confirmando: Voce sabe que e' uma piada, certo?
>>
>>Parece que ninguém aqui se tocou disso.
>>
>>Uma olhada de relance lá no "gráfico" já comprova a intenção do cara.
>>
>>
>>--Stephen
>>
>>programmer, n:
>> A red eyed, mumbling mammal capable of conversing with
>>inanimate monsters.
>>
>>
>>
>>
>
>
>--
>André de Camargo Fernandes
>
>
>
>>>
>
____________________________________________________________________________________
Veja quais são os assuntos do momento no Yahoo! +Buscados
http://br.maisbuscados.yahoo.com
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Lisp-br" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/lisp-br?hl=en
-~----------~----~----~----~------~----~------~--~---