Soy nuevo en Haskell y estoy leyendo el libro "Real World Haskell". En el Capítulo 4 del libro, el autor pregunta como un ejercicio para reescribir la función groupBy usando fold. Uno de los lectores del libro (Octavian Voicu) dio la siguiente solución:¿Cuántos argumentos toma la función foldr de Haskell?
theCoolGroupBy :: (a -> a -> Bool) -> [a] -> [[a]]
theCoolGroupBy eq xs = tail $ foldr step (\_ -> [[]]) xs $ (\_ -> False)
where step x acc = \p -> if p x then rest p else []:rest (eq x)
where rest q = let y:ys = acc q in (x:y):ys
Mi pregunta es simple: Sé que foldr toma 3 argumentos: una función, un valor inicial y una lista. Pero en la segunda línea del código, foldr toma 4 argumentos. ¿Por qué sucede esto? Gracias.