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
-~----------~----~----~----~------~----~------~--~---

Responder a