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
Ayuda con funcion filter de Haskell
Autor Mensaje
sentey Sin conexión
Presidente del CEIT
fressi renunciessi abandonessi
********

Análisis de Sistemas
Facultad Regional Buenos Aires

Mensajes: 1.503
Agradecimientos dados: 123
Agradecimientos: 189 en 129 posts
Registro en: Aug 2010
Facebook Google+ LinkedIn Twitter YouTube
Mensaje: #1
Ayuda con funcion filter de Haskell Dudas y recomendaciones Paradigmas de Programación
Cita:En una aplicación que se conecta a Twitter, trabajamos con Tweets, de los que conocemos el usuario que lo escribió, y el contenido del tweet (el texto que escribió).

Es decir, tenemos, por ejemplo

tweet = ("pablo","estoEsUnTweet")

Me piden

Cita:Dado un conjunto de tweets y un usuario, obtener las primeras 10 letras del contenido de los tweets que pertenecen a ese usuario.

Ejemplo:

>>obtener [("pablo","estoEsUnTweet"),("pepe","blaBlaBla"),("pablo","argentinaVencioABrasil"),("pablo","otroEjemploMas"),("carlos","etcEtcEtc")] pablo
["estoEsUnTw","argentinaV","otroEjempl"]

Yo pense en hacer algo como esto:



--type

type Usuario = String
type Contenido = String
type Tweet = (Usuario, Contenido)


esDelUsuario :: Usuario -> Tweet -> Bool
esDelUsuario usuario (usuarioTweet,_) = usuarioTweet == usuario

obtener :: [Tweet] -> Usuario -> [Contenido]
obtener tweets usuario = filter esDelUsuario usuario tweets



Mi problema es que filter es (a -> Bool) -> [a] -> [a]
Y mi funcion esDelUsuario es a -> b -> Bool (porque necesito pasarle el usuario para que vea con cual comparar los usuarios de los tweets)

Alguna idea?

sentey escribió:Voy a cambiar esta firma el día que Me$$i gane un mundial
(Este mensaje fue modificado por última vez en: 24-04-2013 23:41 por sentey.)
24-04-2013 23:38
Envíale un email 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: #2
RE: Ayuda con funcion filter de Haskell
Mira haciendo esto te va a funcionar, aclaro que es una variacion del punto 2 del TP de Twitts que tengo que hacer para mañana, fijate:


hombretwitteo tweets nombre = fst(tweets) == nombre
tweetsdeusuario tweetts nombre = [take 10 (snd (twet)) | twet<-tweetts, hombretwitteo twet nombre]



Es la funcion filter pero hecha por mi, sin invocar el filter porque nunca supe como se hacia bien.

tweetsdeusuario[("pablo","estoEsUnTweet"),("pepe","blaBlaBla"),("pablo","argentinaVencioABrasil"),("pablo","otroEjemploMas"),("carlos","etcEtcEtc")] "pablo"
["estoEsUnTw","argentinaV","otroEjempl"]

:B
(Este mensaje fue modificado por última vez en: 24-04-2013 23:55 por Martin..)
24-04-2013 23:53
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
[-] Martin. recibio 1 Gracias por este post
sentey (25-04-2013)
Alexismp Sin conexión
Empleado del buffet
Sin estado :(
*

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 7
Agradecimientos dados: 1
Agradecimientos: 1 en 1 posts
Registro en: Feb 2013
Mensaje: #3
RE: Ayuda con funcion filter de Haskell
Haciendolo como lo estas haciendo lo único que tendrías que cambiar es

obtener listaDeTweets usuario = filter (esDelUsuario usuario) listaDeTweets

y fijate que para que funcione cuando le mandas lo que tenes en el ejemplo el ultimo pablo tiene que ir entre ""
(Este mensaje fue modificado por última vez en: 25-04-2013 00:00 por Alexismp.)
24-04-2013 23:59
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
[-] Alexismp recibio 1 Gracias por este post
sentey (25-04-2013)
La Tota Sin conexión
Militante
lo de arriba es mentira !
***

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 86
Agradecimientos dados: 1
Agradecimientos: 101 en 23 posts
Registro en: Aug 2010
Facebook
Mensaje: #4
RE: Ayuda con funcion filter de Haskell
TIGRE TE PASO 3 FORMAS DE HACERLO, HOY VINE DE BUEN HUMOR Y VI TU PEDIDO, ESPERO TE SIRVA. LO QUE NO ENTIENDAS PREGUNTAME POR FACE SI QUERES
NO ME CONECTO TAN SEGUIDO PARA VER UN TEMA POR ACA , ABRAZOOO

listaTweets = [("pablo","estoEsUnTweet"),("pepe","blaBlaBla"),("pablo","argentinaVencioABrasil"),("pablo","otroEjemploMas"),("carlos","etcEtcEtc")]

***************************************************************************************
1) obtener unaLista unUsuario = map (take 10) [tweet|(usuario,tweet) <- unaLista, usuario == unUsuario]
***************************************************************************************
2) obtener unaLista unUsuario = (map(take 10).map snd)(filter(\(usuario,_) -> usuario == unUsuario)unaLista)
***************************************************************************************
3) obtener unaLista unUsuario = (map(take 10).map snd)(obtenerTuplas unUsuario unaLista)
obtenerTuplas unUsuario unaLista = filter((==unUsuario).fst)unaLista
***************************************************************************************
25-04-2013 00:00
Envíale un email Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
[-] La Tota recibio 1 Gracias por este post
sentey (25-04-2013)
sentey Sin conexión
Presidente del CEIT
fressi renunciessi abandonessi
********

Análisis de Sistemas
Facultad Regional Buenos Aires

Mensajes: 1.503
Agradecimientos dados: 123
Agradecimientos: 189 en 129 posts
Registro en: Aug 2010
Facebook Google+ LinkedIn Twitter YouTube
Mensaje: #5
RE: Ayuda con funcion filter de Haskell
Barbaro! Me viene joya para la opcion en donde hay que usar listas por comprension.

Edit: Gracias a los dos! Ahi lo entendi bien!

sentey escribió:Voy a cambiar esta firma el día que Me$$i gane un mundial
(Este mensaje fue modificado por última vez en: 25-04-2013 00:04 por sentey.)
25-04-2013 00:02
Envíale un email Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
CarooLina En línea
Colaborador
2016! ❥
********

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 3.468
Agradecimientos dados: 929
Agradecimientos: 1.224 en 456 posts
Registro en: Sep 2010
Mensaje: #6
RE: Ayuda con funcion filter de Haskell
Hola santi se me ocurrio que:

obtener lista persona = [take 10 tweet|(usuario,tweet)<-lista,persona==usuario]

No te podes quejar, eh =P

love
(Este mensaje fue modificado por última vez en: 25-04-2013 00:09 por CarooLina.)
25-04-2013 00:08
Envíale un email Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
[-] CarooLina recibio 1 Gracias por este post
sentey (25-04-2013)
sentey Sin conexión
Presidente del CEIT
fressi renunciessi abandonessi
********

Análisis de Sistemas
Facultad Regional Buenos Aires

Mensajes: 1.503
Agradecimientos dados: 123
Agradecimientos: 189 en 129 posts
Registro en: Aug 2010
Facebook Google+ LinkedIn Twitter YouTube
Mensaje: #7
RE: Ayuda con funcion filter de Haskell
(25-04-2013 00:08)CarooLina escribió:  Hola santi se me ocurrio que:

obtener lista persona = [take 10 tweet|(usuario,tweet)<-lista,persona==usuario]


Off-topic:
santi??? jaja


Si, es parecido a lo que puso Maartin


(24-04-2013 23:59)Alexismp escribió:  Haciendolo como lo estas haciendo lo único que tendrías que cambiar es

obtener listaDeTweets usuario = filter (esDelUsuario usuario) listaDeTweets

No me funciona asi, justamente es lo que estaba probando.

Edit: Sacandole el tipo a la funcion, me anduvo, voy a mirar que carajo puse mal =P

sentey escribió:Voy a cambiar esta firma el día que Me$$i gane un mundial
(Este mensaje fue modificado por última vez en: 25-04-2013 00:13 por sentey.)
25-04-2013 00:10
Envíale un email Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
CarooLina En línea
Colaborador
2016! ❥
********

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 3.468
Agradecimientos dados: 929
Agradecimientos: 1.224 en 456 posts
Registro en: Sep 2010
Mensaje: #8
RE: Ayuda con funcion filter de Haskell
Que se yo, cuando entre nadie había puesto nada! Si pero la mia es mas clara y simple =)

Bueno por que dice sentey es que me olvido que te llaams franco

love
25-04-2013 00:14
Envíale un email Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
sentey Sin conexión
Presidente del CEIT
fressi renunciessi abandonessi
********

Análisis de Sistemas
Facultad Regional Buenos Aires

Mensajes: 1.503
Agradecimientos dados: 123
Agradecimientos: 189 en 129 posts
Registro en: Aug 2010
Facebook Google+ LinkedIn Twitter YouTube
Mensaje: #9
RE: Ayuda con funcion filter de Haskell
Ahi me salio, era un problema con los tipos que tenia, porque estaba haciendo la funcion sin terminar (todavia no tomaba los primeros 10 caracteres) y ya habia puesto el tipo de la funcion.
Gracias a todos!

Dejo el codigo que me quedo (aunque posiblemente lo optimice despues, ahora tengo sueño =P)

Cita:Dado un conjunto de tweets y un usuario, obtener las primeras 10 letras del contenido de los tweets que pertenecen a ese usuario. Hacerlo dos veces: primero empleando orden superior y luego empleando listas por comprensión



--type

type Usuario = String
type Contenido = String
type Tweet = (Usuario, Contenido)


esDelUsuario :: Usuario -> Tweet -> Bool
esDelUsuario usuario (usuarioTweet, _) = usuarioTweet == usuario

obtener :: [Tweet] -> Usuario -> [Contenido]
obtener tweets usuario = (map (take 10).map snd) (filter (esDelUsuario usuario) tweets)

obtener2:: [Tweet] -> Usuario -> [Contenido]
obtener2 tweets usuario = [take 10 tweet | (usuarioTweet,tweet) <- tweets, usuarioTweet == usuario]


--Main> obtener[("pablo","estoEsUnTweet"),("pepe","blaBlaBla"),("pablo","argentinaVencioABrasil"),("pablo","otroEjemploMas"),("carlos","etcEtcEtc")] "pablo"
--["estoEsUnTw","argentinaV","otroEjempl"]

--Main> obtener2[("pablo","estoEsUnTweet"),("pepe","blaBlaBla"),("pablo","argentinaVencioABrasil"),("pablo","otroEjemploMas"),("carlos","etcEtcEtc")] "pablo"
--["estoEsUnTw","argentinaV","otroEjempl"]



Spoiler: Mostrar


#include <stdio.h>

int main(void){
while (1)
printf("EEEEEEH\n");
return 0;
}



sentey escribió:Voy a cambiar esta firma el día que Me$$i gane un mundial
(Este mensaje fue modificado por última vez en: 25-04-2013 00:47 por sentey.)
25-04-2013 00:41
Envíale un email Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Dem0 Sin conexión
( ͡° ͜ʖ ͡°)
._.
********

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 4.984
Agradecimientos dados: 9
Agradecimientos: 148 en 64 posts
Registro en: Apr 2008
Mensaje: #10
RE: Ayuda con funcion filter de Haskell

obtener tweets usuario = [take 10 tweet | (usuarioTweet,tweet) <- tweets, usuarioTweet == usuario]


que lindo que es haskell
25-04-2013 01:58
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.