ValSpada / parcialesFuncional

Parciales Resuletos PdP - Paradigma Funcional
0 stars 0 forks source link

Correcciones - Samurai Jack #4

Open julian-berbel opened 3 weeks ago

julian-berbel commented 3 weeks ago

https://github.com/ValSpada/parcialesFuncional/blob/a9ea106e1b451f22f090b9fd64bbf66fdf9207e7/samuraiJack.hs#L22

Ya que el enunciado llama a estas funciones transformaciones, estaría bueno tener un type alias.

https://github.com/ValSpada/parcialesFuncional/blob/a9ea106e1b451f22f090b9fd64bbf66fdf9207e7/samuraiJack.hs#L31-L34

Para establecer una cota mínima preferí usar la función max:

causarDanio danio = alterarSalud (max 0 . subtract danio)

Nota a parte: para settear valores con mappers favorecé const en vez de hacer cosas como multiplicar por 0:

alterarSalud (const 0) unPersonaje 

https://github.com/ValSpada/parcialesFuncional/blob/a9ea106e1b451f22f090b9fd64bbf66fdf9207e7/samuraiJack.hs#L55-L56

Convenciones de nombres: Para funciones que devuelven valores booleanos, favorecé que se lea como si fuera una pregunta. Un mejor nombre en este caso podría ser puedeMatarloConUnSoloElemento.

Repetición de lógica: El chequeo de si un personaje se quedó sin salud se repite con luchar; estaría bueno tener una función que se encargue de eso. Por ejemplo: estaMuerto :: Personaje -> Bool.

https://github.com/ValSpada/parcialesFuncional/blob/a9ea106e1b451f22f090b9fd64bbf66fdf9207e7/samuraiJack.hs#L69-L71

Tenés la función replicate :: Int -> a -> [a] que dada un número entero y un valor te genera una lista con ese valor repetido esa cantidad de veces:

esbirrosMalvados unaCantidad = replicate unaCantidad esbirro

https://github.com/ValSpada/parcialesFuncional/blob/a9ea106e1b451f22f090b9fd64bbf66fdf9207e7/samuraiJack.hs#L78

Te faltó la concentración nivel 4.

https://github.com/ValSpada/parcialesFuncional/blob/a9ea106e1b451f22f090b9fd64bbf66fdf9207e7/samuraiJack.hs#L104-L106

Podrías definir esta función de forma más declarativa usando iterate.

https://github.com/ValSpada/parcialesFuncional/blob/a9ea106e1b451f22f090b9fd64bbf66fdf9207e7/samuraiJack.hs#L108-L109

Esta función ya existe y se llama id :: a -> a.

https://github.com/ValSpada/parcialesFuncional/blob/a9ea106e1b451f22f090b9fd64bbf66fdf9207e7/samuraiJack.hs#L120

Esto lo deberías devolver si el atacante está muerto, no el defensor luego de ser atacado.

https://github.com/ValSpada/parcialesFuncional/blob/a9ea106e1b451f22f090b9fd64bbf66fdf9207e7/samuraiJack.hs#L125-L129

Lógica repetida.

ValSpada commented 2 weeks ago

Correcciones hechas