|
mapWithIndex f = foldrWithIndex (\i x acc -> f i x : acc) nil |
The implementation of FunctorWithIndex for Lazy List uses folding, which, unlike Functor, is not lazy.
It should be:
instance functorWithIndexList :: FunctorWithIndex Int List where
mapWithIndex f xs = List (go 0 <$> unwrap xs)
where
go i = \step -> case step of
Nil -> Nil
Cons x xs' -> Cons (f i x) (List (go (i + 1) <$> unwrap xs'))
purescript-lists/src/Data/List/Lazy/Types.purs
Line 116 in b113451
The implementation of FunctorWithIndex for Lazy List uses folding, which, unlike Functor, is not lazy.
It should be: