-
Notifications
You must be signed in to change notification settings - Fork 260
Closed
Labels
Description
Working on #2258 suggests the following:
tails : List A → List (List A)
{- compared to the original
tails [] = [] ∷ []
tails (x ∷ xs) = (x ∷ xs) ∷ tails xs
-}
tails xs = xs ∷ go xs
where
go : List A → List (List A)
go [] = []
go (_ ∷ xs) = xs ∷ go xswhich has the advantage that tails xs observably produces a non-empty list (moreover, one whose head is the argument xs), without having to do a subsidiary pattern-match on xs.
Similar remarks apply to eg inits and scanl, and as with moving scanr to Data.List.NonEmpty, perhaps these functions should, too.
Reactions are currently unavailable