Pregunta de novato ¿por qué no funciona?

8 views
Skip to first unread message

Marcelo Morales

unread,
Feb 14, 2010, 10:58:35 AM2/14/10
to clojure-hispano
Lista

Quiero componer dos funciones y aplicarlas, por ejemplo:
user> ((comp inc dec) 3)
3

Funciona, incrementa y decrementa el 3, evalúa a 3

Ahora, si hago lo siguiente:
user> ((apply comp '(inc dec)) 3)
nil

¿no debería salir 3? ¿por qué evalúa a nil?

saludos

Marcelo Morales

unread,
Feb 14, 2010, 8:56:20 PM2/14/10
to clojure-hispano
Corchetes arreglan el tema...

user> ((apply comp [dec inc]) 3)
3

mmmm

2010/2/14 Marcelo Morales <marcelomo...@gmail.com>:

--
Marcelo Morales

Antonio Garrote

unread,
Feb 15, 2010, 2:17:02 AM2/15/10
to clojure...@googlegroups.com
Hola.

Cuando pasas '(inc dec) estás pasando una lista con dos símbolos cuando
pasas [inc dec] o (list inc dec) estás pasando una lista con dos funciones:

user> (= (list inc dec) '(inc dec))
false

user> (class '(inc dec))
clojure.lang.Persist:entList
user> (first '(inc dec))
Inc
user> (class (first '(inc dec)))
clojure.lang.Symbol

user> (class (list inc dec))
clojure.lang.PersistentList
user> (first (list inc dec))
#<core$inc__4497 clojure.core$inc__4497@500c954e>
user> (class (first (list inc dec)))
clojure.core$inc__4497

Eso es lo que hace que la primera evaluación falle, mira el siguiente
transcript:

user> ((apply comp ['inc 'dec]) 3)
nil


user> ((apply comp '(inc dec)) 3)
nil

user> ((apply comp [inc dec]) 3)
3
user> ((apply comp (list inc dec)) 3)
3
user> ((apply comp ['inc 'dec]) 3)
nil


Un saludo.

Marcelo Morales

unread,
Feb 15, 2010, 7:04:23 AM2/15/10
to clojure...@googlegroups.com

Super!, gracias

On Feb 15, 2010 3:17 AM, "Antonio Garrote" <antonio...@gmail.com> wrote:

Hola.

Cuando pasas '(inc dec) estás pasando una lista con dos símbolos cuando
pasas [inc dec] o (list inc dec) estás pasando una lista con dos funciones:

user> (= (list inc dec) '(inc dec))
false

user> (class '(inc dec))
clojure.lang.Persist:entList
user> (first '(inc dec))
Inc
user> (class (first '(inc dec)))
clojure.lang.Symbol

user> (class (list inc dec))
clojure.lang.PersistentList
user> (first (list inc dec))
#<core$inc__4497 clojure.core$inc__4497@500c954e>
user> (class (first (list inc dec)))
clojure.core$inc__4497

Eso es lo que hace que la primera evaluación falle, mira el siguiente
transcript:


user> ((apply comp ['inc 'dec]) 3)
nil
user> ((apply comp '(inc dec)) 3)
nil

user> ((apply comp [in...

3
user> ((apply comp (list inc dec)) 3)

3
user> ((apply comp ['inc 'dec]) 3)
nil

Un saludo.



On 2/15/10 2:56 AM, "Marcelo Morales" <marcelomorales.name@gmail.com> wrote:

> Corchetes arreglan...

Reply all
Reply to author
Forward
0 new messages