Donar $20 Donar $50 Donar $100 Donar mensualmente
 


Enviar respuesta 
 
Calificación:
  • 0 votos - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Buscar en el tema
Duda listas de funciones en haskell
Autor Mensaje
aec Sin conexión
Militante
Solo sé que no sé nada
***

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 79
Agradecimientos dados: 30
Agradecimientos: 18 en 8 posts
Registro en: Mar 2012
Mensaje: #1
Duda listas de funciones en haskell Dudas y recomendaciones Paradigmas de Programación
Buenas gente, tengo una duda con una lista de funciones en haskell:
A mi me piden desarrollar la función atracciones que dado un parque, permite conocer el conjunto de todas las atracciones, siendo parque una lista de tuplas conformada por (tema, [funciones]), o sea, yo tengo q concatenar todos los segundos elementos de la lista de parque, mi código es:


atracciones:: Parque -> Atracciones
atracciones [] = []
atracciones (cab:cola) = snd (cab) ++ atracciones cola


Por ejemplo con parques = [("diversiones", [montanaRusa 100, caidaLibre 60]), ("temático", [mundoMaya, cine4D]) ] tendría que devolver [montañaRusa 100, caidaLibre 60 , mundoMaya, cine4D]

Pero cuando lo ejecuto, me da que no puede encontrar la show function. Si alguno me puede ayudar será bienvenido jaja
03-05-2013 12:31
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
acuadro Sin conexión
Militante
volviendo al ruedo
***

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 81
Agradecimientos dados: 35
Agradecimientos: 4 en 4 posts
Registro en: Jan 2013
Mensaje: #2
RE: Duda listas de funciones en haskell
esto no te sirve?

parques = [("diversiones",[1,2]),("tematico",[3,4]),("acuatico",[5,6])]
-- puse números en la tupla porque no tengo definidas las funciones.

[] = []
atracciones xs = [snd(x)|x<-xs]

devuelve:
*Main> atracciones parques
[[1,2],[3,4],[5,6]]

edit: que es lo mismo que:
atracciones' xs = map (snd) xs

Slds,
(Este mensaje fue modificado por última vez en: 03-05-2013 15:11 por acuadro.)
03-05-2013 14:40
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
aec Sin conexión
Militante
Solo sé que no sé nada
***

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 79
Agradecimientos dados: 30
Agradecimientos: 18 en 8 posts
Registro en: Mar 2012
Mensaje: #3
RE: Duda listas de funciones en haskell
Lo que pasa es que ahí me da una lista de listas como resultado, yo necesito una sola lista con todos los elementos, en tu caso me tendría que dar: [1,2,3,4,5,6]
03-05-2013 15:37
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Martin. Sin conexión
Presidente del CEIT
Enjoy it !
********

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 1.334
Agradecimientos dados: 84
Agradecimientos: 223 en 121 posts
Registro en: Oct 2011
Mensaje: #4
RE: Duda listas de funciones en haskell
Fijate si de esta forma te funciona

atracciones lista = concat [snd list | list <- lista]

Prueba:
Main > atracciones [("diversiones",["montanaRusa", "caidaLibre 60"]), ("temático", ["mundoMaya", "cine4D"])]
["montanaRusa","caidaLibre 60","mundoMaya","cine4D"]


Estan entre comillas porque no tengo dichas funciones
03-05-2013 15:48
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Ichiluk Sin conexión
Campeon del cubo Rubik
Metametaprogramando.
****

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 134
Agradecimientos dados: 5
Agradecimientos: 21 en 18 posts
Registro en: Apr 2008
Mensaje: #5
RE: Duda listas de funciones en haskell
Armá la función concatMap, o hacelo con un fold =D
03-05-2013 16:11
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
aec Sin conexión
Militante
Solo sé que no sé nada
***

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 79
Agradecimientos dados: 30
Agradecimientos: 18 en 8 posts
Registro en: Mar 2012
Mensaje: #6
RE: Duda listas de funciones en haskell
Gente, lo resolvi no se si usando alguna trampa jaja configure el winhugs para que no use show para mostrar las funciones con : S -U y me funciono perfecto. Gracias por la ayuda a todos!
(Este mensaje fue modificado por última vez en: 03-05-2013 17:45 por aec.)
03-05-2013 17:45
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Ichiluk Sin conexión
Campeon del cubo Rubik
Metametaprogramando.
****

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 134
Agradecimientos dados: 5
Agradecimientos: 21 en 18 posts
Registro en: Apr 2008
Mensaje: #7
RE: Duda listas de funciones en haskell
No era un error, es simplemente que por defecto no te muestra las funciones (no hay show para los tipos función).

con Confused -u le sacás el show por defecto, y te muestra las funciones como strings comunes. Entonces podés ver las listas de funciones, y por lo tanto el resultado que estás esperando =)
05-05-2013 14:08
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
aec Sin conexión
Militante
Solo sé que no sé nada
***

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 79
Agradecimientos dados: 30
Agradecimientos: 18 en 8 posts
Registro en: Mar 2012
Mensaje: #8
RE: Duda listas de funciones en haskell
Claro, pero nadie me había avisado de eso, y estuve un buen tiempo con ese problema wall

Ahora no se como hacer para ejecutar todas las funciones de una lista, hay una función para eso?
05-05-2013 16:20
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Nikod11 Sin conexión
Secretario General
...
*******

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 789
Agradecimientos dados: 84
Agradecimientos: 396 en 56 posts
Registro en: Mar 2011
Facebook LinkedIn
Mensaje: #9
RE: Duda listas de funciones en haskell
Buenos dias, donde pones el parametro -u?
06-05-2013 11:54
Envíale un email Visita su sitio web Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Ichiluk Sin conexión
Campeon del cubo Rubik
Metametaprogramando.
****

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 134
Agradecimientos dados: 5
Agradecimientos: 21 en 18 posts
Registro en: Apr 2008
Mensaje: #10
RE: Duda listas de funciones en haskell
(05-05-2013 16:20)aec escribió:  Claro, pero nadie me había avisado de eso, y estuve un buen tiempo con ese problema wall

Ahora no se como hacer para ejecutar todas las funciones de una lista, hay una función para eso?
Tenés que aplicarlas.
Podés probar con map y una función que aplique cada función a un elemento.

(06-05-2013 11:54)Nikod11 escribió:  Buenos dias, donde pones el parametro -u?


Main>:s -u


Si no pongo el bloque "code", me arma la carita =P
06-05-2013 14:21
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
acuadro Sin conexión
Militante
volviendo al ruedo
***

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 81
Agradecimientos dados: 35
Agradecimientos: 4 en 4 posts
Registro en: Jan 2013
Mensaje: #11
RE: Duda listas de funciones en haskell
si alguno me ayuda a entender qué estoy haciendo mal, agradecido!


para:
parques = [("diversiones", [montaniaRusa 100, caidaLibre 60]), ("tematico", [mundoMaya, cine4D]) ]
donde:
montaniaRusa nro = nro
caidaLibre nro = nro
mundoMaya = 1
cine4D = 1
(como recién lo empiezo puse cualquier cosa sólo para ver este ejercicio de devolver las funciones)

me da:


Main> parques
[("diversiones",[100,60]),("tematico",[1,1])]
Main>:s -u
Main> parques
[("diversiones",[100,60]),("tematico",[1,1])]


[/code]

hay que hacer algo más además del ":s -u"?

Slds y gracias!!!
14-05-2013 20:38
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Ichiluk Sin conexión
Campeon del cubo Rubik
Metametaprogramando.
****

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 134
Agradecimientos dados: 5
Agradecimientos: 21 en 18 posts
Registro en: Apr 2008
Mensaje: #12
RE: Duda listas de funciones en haskell
Nada, el problema que tenés es que no estás pasándole una función, sino un valor:

montaniaRusa nro = nro
caidaLibre nro = nro
mundoMaya = 1
cine4D = 1


ahí estás definiendo las funciones. Dos son constantes, luego son valores. Las otras dos las estás aplicando cuando las pasás.

Podés probar haciendo

parques = [("diversiones", [montaniaRusa , caidaLibre]), ("tematico", [(\x -> x + x ), (\x -> max 3 x)]) ]
16-05-2013 16:34
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Buscar en el tema
Enviar respuesta 




Usuario(s) navegando en este tema: 1 invitado(s)



    This forum uses Lukasz Tkacz MyBB addons.