Così oggi ho chiesto circa implementing inits via foldr. Ho una domanda simile per le code ora. Per prima cosa: ho una soluzione. Tuttavia non è la soluzione di cui ho bisogno, ma la soluzione che merito. O qualcosa del genere:Implementare le code utilizzando foldr in Haskell
Codice:
tails :: [a] -> [[a]]
tails = foldr (\ x y -> reverse([] : reverse(map (x:) y))) [[]]
Questo fornisce risultati corretti, ma non soddisfa il modello del nostro prof impostato per noi. Il modello si presenta così:
tails :: [a] -> [[a]]
tails = foldr (\ x y -> undefined : undefined) undefined
Così, ovviamente, la mia funzione ha bisogno di modifiche, ma non ho ricevuto la mia testa intorno ad esso, dal momento che ho sempre ricadere la mia soluzione.
Qualche consiglio su come risolvere questo problema?
Grazie in anticipo.
risolto:
tails :: [a] -> [[a]]
tails = foldr (\ x y -> (x : (head y)) : y) [[]]
Suggerimento: con il modello del tuo professore, ad ogni passo, 'y' deve essere uguale a 'tails xs' dove' xs' è la parte dell'elenco originale a destra di 'x', e' indefinito: undefined' deve essere qualcosa che usa 'x' e' y' per costruire il diritto valore per 'tails (x: xs)'. –