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
10
10
import Data.Identity (Identity )
11
11
import Data.Lens.Internal.Wander (wander )
12
12
import Data.Lens.Types (Traversal' )
13
- import Data.List (List )
14
- import Data.List as L
13
+ import Data.List (List (..), (:))
15
14
import Data.Map as M
16
15
import Data.Maybe (Maybe , maybe , fromMaybe )
17
16
import Data.Set as S
@@ -79,12 +78,12 @@ instance indexNonEmptyArray :: Index (NEA.NonEmptyArray a) Int a where
79
78
(coalg >>> map \x -> fromMaybe xs (NEA .updateAt n x xs))
80
79
81
80
instance 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 )
88
87
89
88
instance indexSet :: Ord a => Index (S.Set a ) a Unit where
90
89
ix x =
You can’t perform that action at this time.
0 commit comments