opciones multiplos multiplicar listas hacer funciones ejercicios como ciclos basico haskell recursion

multiplicar - multiplos en haskell



¿Es posible convertir esta función haskell recursiva en una llamada de mapa? (2)

Este es mi código:

type HoraAtendimento = (String, Int, Int) htmlHAtendimento :: [HoraAtendimento] -> Html htmlHAtendimento [] = toHtml "" htmlHAtendimento ((da,hia,hfa):[]) = toHtml da +++ "feira " +++ show hia +++ "h - " +++ show hfa +++ "h" htmlHAtendimento ((da,hia,hfa):r) = toHtml da +++ "feira " +++ show hia +++ "h - " +++ show hfa +++ "h, " +++ htmlHAtendimento r

Estoy buscando una forma de utilizar la función de mapa y deshacerme de esta función recursiva. Es eso posible y si es así, ¿cómo lo hago?


Desea retirarse de una lista no vacía. Este código podría hacer el truco:

type HoraAtendimento = (String, Int, Int) htmlHAtendimento :: [HoraAtendimento] -> Html htmlHAtendimento [] = toHtml "" htmlHAtendimento l = foldl1 (+++) $ map convert l where convert (da,hia,hfa) = toHtml da +++ "feira " +++ show hia +++ "h - " +++ show hfa +++ "h"


Mira el tipo de map . Es (a -> b) -> [a] -> [b] . Eso no se parece a tu tipo, que es [a] -> b. Eso no es un mapa, eso es un pliegue.

La función de orden superior que desea ver es foldr . Ver Hoogle .

Algo como...

htmlHAtendimento :: [HoraAtendimento] -> Html htmlHAtendimento [] = toHtml "" htmlHAtendimento l = foldr1 (+++) $ intersperse ", " $ map f l where f (da, hia, hfa) = toHtml da +++ "feira " +++ show hia +++ "h - " +++ show hfa +++ "h"

No sé si eso es correcto, pero está en la dirección correcta.