[Prueba 2018][Ejercicio 2]

[Prueba 2018][Ejercicio 2]

de Hugo Sebastian Rodriguez Reyes -
Número de respuestas: 2

Estimados,

La solución que se plantea es la siguiente:

splitOn :: Eq a => a -> [a] -> [[a]]

splitOn x = foldr split [[ ]]

where

   split v (y : ys)

      | v == x = [ ] : y : ys

      | otherwise = (v : y) : ys

Tengo la siguiente duda con la ejecución de: splitOn 'x' "holaxquextalx".

Entiendo que en el primero paso del cálculo de foldr se hace lo siguiente:

split "x" ([ ] : [ ]) y me devuelve [ ] : [ ] : [ ] que es [[ ], [ ]].

En el segundo cálculo del foldr se hace lo siguiente:

split "l" ([ ] : [[ ]]) y me devuelve ("l":[ ]):[[ ]] que es [["l"],[ ]].

En el tercer cálculo del foldr (que es donde tengo la duda) se hace lo siguiente:

split "a" (["l"]:[[ ]]) y me devuelve ("a":["l"]):[[ ]] que es [["a","l"],[ ]], pero en realidad debería devolver [["al"],[ ]].

Agradezco si alguien me puede dar una mano para entender qué es lo que estoy razonando mal.

En respuesta a Hugo Sebastian Rodriguez Reyes

Re: [Prueba 2018][Ejercicio 2]

de Marcos Viera - InCo -

Estás escribiendo "x", "l" y "a", cuando deberían ser 'x', 'l' y 'a'.