Seguimos buscando a Arshak. Ayudanos compartiendo!
Encuesta no oficial de docentes
Resultados de la encuesta no oficial de docentes
Probaste el SIGA Helper?

Donar $100 Donar $200 Donar $500 Donar mensualmente


Enviar respuesta 
 
Calificación:
  • 0 votos - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Buscar en el tema
Ayuda ej 2.4.1 haskell funciones uso de fold lamnda
Autor Mensaje
Matifradus Sin conexión
Empleado de Fotocopiadora
Sin estado :(
**

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 25
Agradecimientos dados: 2
Agradecimientos: 0 en 0 posts
Registro en: Mar 2010
Mensaje: #1
Ayuda ej 2.4.1 haskell funciones uso de fold lamnda Apuntes y Guias Paradigmas de Programación
Buenas, me pueden guiar con este ejercicio que todavía no logro entender el uso del foldl con el lambda?
2.4.1
En una local de frutas y verduras se conoce el total en kilos de cada uno de los productos que
llegan para vender, se tienen la siguiente información.
productos = [(“manzana”, 50), (“banana”, 30), (“naranja”, 40), (“papa”, 40), (“tomate”, 25)]
Nota: productos es una función constante.
2.4.1. Definir la función totalKilosProductos, me devuelve la cantidad total de kilos de
productos.

Main> totalKilosProductos
185
Nota: a) Resolverlo utilizando foldl + funciones lambda.
b) Resolverlo utilizando map + funciones lambda.

Graciass
19-04-2015 13:57
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Anirus Sin conexión
Super Moderador
Sin estado :)
*********

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 1.163
Agradecimientos dados: 81
Agradecimientos: 232 en 78 posts
Registro en: Nov 2009
Mensaje: #2
RE: Ayuda ej 2.4.1 haskell funciones uso de fold lamnda
A fold uno le pasa una función, un valor inicial y una lista. Lo que hace es pasarle a la función el valor que le pasaste como inicial y el primer o último elemento de tu lista (foldl arranca por el elemento de más izquierda y foldr por el de más a la derecha). El resultado de eso se lo vuelve a pasar a la función junto con el siguiente elemento de la lista, y sigue de esa forma hasta que se acaba la lista y sólo te queda el último resultado.

Si vos(no haskell) calcularas el total de kilos como lo hace foldl, lo harías así:

Empiezo con 0 kg (valor inicial)
Tengo 0 kg y ("manzana", 50)
0 + 50 = 50
Tengo 50 kg y ("banana", 30)
50 + 30 = 80
Tengo 80 kg y (“naranja”, 40)
80 + 40 = 120
Tengo 120 kg y (“papa”, 40)
120 + 40 = 160
Tengo 160 kg y (“tomate”, 25)
160 + 25 = 185
Tengo 185 kg y nada
Total 185

totalKilosProductos va a ser entonces foldl funciónQueSumaKilos 0 productos. Tu función que suma kilos va a tener que recibir la cantidad de kilos que ya tenés y una tupla de producto, de la cual va a tener que extraer los kilos para sumarselos a lo que ya tiene.
(Este mensaje fue modificado por última vez en: 19-04-2015 17:34 por Anirus.)
19-04-2015 17:32
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Matifradus Sin conexión
Empleado de Fotocopiadora
Sin estado :(
**

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 25
Agradecimientos dados: 2
Agradecimientos: 0 en 0 posts
Registro en: Mar 2010
Mensaje: #3
RE: Ayuda ej 2.4.1 haskell funciones uso de fold lamnda
si perfecto, muchas gracias por tu respuesta, ya entendì como utilizar foldl + la funcion lambda, ahora estoy teniendo problemas con el punto b) que es lo mismo pero en vez de foldl utilizar map...
deberìa ser algo así:

totalKilosProductos2 productos = map(\acum(_,kilos) -> acum + kilos) productos
19-04-2015 18:19
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
FeRLanD Sin conexión
Campeon del cubo Rubik
En el delirio supremo de la ex...
****

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 102
Agradecimientos dados: 201
Agradecimientos: 163 en 29 posts
Registro en: Apr 2012
Mensaje: #4
RE: Ayuda ej 2.4.1 haskell funciones uso de fold lamnda
Map aplica una función a cada elemento de la lista, función cuyo dominio debe ser del mismo tipo que los elementos que están en la lista. La función que pusiste dentro del map recibe dos argumentos: un int y una tupla, cuando debería recibir uno solo. Deberías usar una función que te de los kilos de cada producto y luego sumarlos todos para obtener el total.
19-04-2015 18:45
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Buscar en el tema
Enviar respuesta 




Usuario(s) navegando en este tema: