Sono nuovo di Haskell e sto leggendo il libro "Real World Haskell". Nel capitolo 4 del libro l'autore chiede come esercizio di riscrivere la funzione groupby usando fold. Uno dei lettori del libro (Ottaviano Voicu) ha dato la seguente soluzione:Quanti argomenti prende la funzione foldr di 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
mia domanda è semplice: So che foldr prende 3 argomenti: una funzione, un valore iniziale e un elenco. Ma nella seconda riga del codice foldr accetta 4 argomenti. Perché questo succede? Grazie.