File tree Expand file tree Collapse file tree 1 file changed +7
-8
lines changed Expand file tree Collapse file tree 1 file changed +7
-8
lines changed Original file line number Diff line number Diff line change @@ -10,8 +10,7 @@ import Data.Array.NonEmpty as NEA
1010import Data.Identity (Identity )
1111import Data.Lens.Internal.Wander (wander )
1212import Data.Lens.Types (Traversal' )
13- import Data.List (List )
14- import Data.List as L
13+ import Data.List (List (..), (:))
1514import Data.Map as M
1615import Data.Maybe (Maybe , maybe , fromMaybe )
1716import Data.Set as S
@@ -79,12 +78,12 @@ instance indexNonEmptyArray :: Index (NEA.NonEmptyArray a) Int a where
7978 (coalg >>> map \x -> fromMaybe xs (NEA .updateAt n x xs))
8079
8180instance indexList :: Index (List a ) Int a where
82- ix n =
83- wander \coalg xs ->
84- xs L .!! n #
85- maybe
86- (pure xs )
87- (coalg >>> map \x -> fromMaybe xs ( L .updateAt n x xs) )
81+ ix n | n < 0 = wander \_ xs -> pure xs
82+ | otherwise = wander \coalg xs -> go xs n coalg where
83+ go :: forall f . Applicative f => List a -> Int -> ( a -> f a ) -> f ( List a )
84+ go Nil _ _ = pure Nil
85+ go (a:as) 0 coalg = coalg a <#> (_:as )
86+ go (a:as) i coalg = (a:_) <$> (go as (i - 1 ) coalg )
8887
8988instance indexSet :: Ord a => Index (S.Set a ) a Unit where
9089 ix x =
You can’t perform that action at this time.
0 commit comments