(15-05-2013 14:49)rod77 escribió: [ -> ]pongan que es lo que ejecutan y cual es el error. No tengo nada aca para probar el paradigma funcional, pero leyendo el error podria ayudar.
quickSort es una funcion existente, que no hace falta definir.
Paso una pagina que a mi me ayudo mucho:
Aprende haskell por el bien de todos:
http://aprendehaskell.es/
aca pongo todo mi programa, del punto 1 al 5:
bosqueTenebroso = [(100, f1), (50, f2), (120, f2), (200, f1), (80, f3)]
pantanoDelDestino = [(40, f2), (90, (\(f,p,v)-> f + p + v)), (120, fuerza), (20, fuerza)]
f1 chocobo = velocidad chocobo * 2
f2 chocobo = velocidad chocobo + fuerza chocobo
f3 chocobo = velocidad chocobo / peso chocobo
amarillo = (5, 3, 3)
negro = (4, 4, 4)
blanco = (2, 3, 6)
rojo = (3, 3, 4)
fuerza (f,_,_) = f
peso (_,p,_) = p
velocidad (_,_,v) = v
apocalipsis = [("Leo", amarillo), ("Gise", blanco), ("Mati", negro), ("Alf",rojo), ("Gise", blanco), ("Gise", blanco), ("Leo", amarillo)]
quickSort _ [] = []
quickSort criterio (x:xs) = (quickSort criterio . filter (not . criterio x)) xs ++ [x] ++ (quickSort criterio . filter (criterio x)) xs
--1--
mayorSegun f a b = ((f a) > (f b))
menorSegun f a b = not (mayorSegun f a b)
--2--
tiempo tramo chocobo = (distancia tramo) div (velCorregida tramo chocobo)
distancia (d,_) = d
velCorregida (_,f) chocobo = f chocobo
tiempoTotal carrera chocobo = map (tiempo chocobo) carrera
--3--
podio carrera jinetes = take 3 (quickSort (<)(map (tiempoTotal carrera) jinetes))
--4--
elMejorDelTramo tramo jinetes = take 1 (quickSort (<) (map (tiempo tramo) jinetes))
elMasWinner carrera jinetes = elMejor (map (elMejorDelTramo carrera) jinetes)
elMejor (x:xs) = filter (mayorSegun length x) xs
--5--
quienesPueden tramo tiempomax jinetes = [lista | lista <- jinetes, (tiempomax == (tiempo tramo))]
el error que salta es "couldnt match expected type" es que el bosqueTenebroso es [(integer,(double,double,double) -> double)] y el pantanoDelDestino [(integer,(integer,integer,integer) -> integer)], pero asi es como te lo dan desde un principio, no se donde me estoy equivocando...