Various helper functions, perhaps too specialized for frequent use
unique : List.Nonempty.ListNonempty comparable -> List.Nonempty.ListNonempty comparable
Similar to List.Extra.unique
fromPair 0 [ 1, 0, 2 ] |> unique == fromPair 0 [ 1, 2 ]
uniqueBy : (a -> comparable) -> List.Nonempty.ListNonempty a -> List.Nonempty.ListNonempty a
Similar to List.Extra.uniqueBy
setIf : (a -> Basics.Bool) -> a -> List.Nonempty.ListNonempty a -> List.Nonempty.ListNonempty a
Similar to List.Extra.setIf
setAt : Basics.Int -> a -> List.Nonempty.ListNonempty a -> List.Nonempty.ListNonempty a
Similar to List.Extra.setAt
setIfIndex : (Basics.Int -> Basics.Bool) -> a -> List.Nonempty.ListNonempty a -> List.Nonempty.ListNonempty a
List.Extra.setIf
meets List.Extra.updateIfIndex
updateIf : (a -> Basics.Bool) -> (a -> a) -> List.Nonempty.ListNonempty a -> List.Nonempty.ListNonempty a
Similar to List.Extra.updateIf
updateAt : Basics.Int -> (a -> a) -> List.Nonempty.ListNonempty a -> List.Nonempty.ListNonempty a
Similar to List.Extra.updateAt
updateIfIndex : (Basics.Int -> Basics.Bool) -> (a -> a) -> List.Nonempty.ListNonempty a -> List.Nonempty.ListNonempty a
Similar to List.Extra.updateIfIndex
swapAt : Basics.Int -> Basics.Int -> List.Nonempty.ListNonempty a -> List.Nonempty.ListNonempty a
Similar to List.Extra.swapAt
maximumBy : (a -> comparable) -> List.Nonempty.ListNonempty a -> a
Similar to List.Extra.maximumBy
maximumWith : (a -> a -> Basics.Order) -> List.Nonempty.ListNonempty a -> a
Similar to List.Extra.maximumWith
minimumBy : (a -> comparable) -> List.Nonempty.ListNonempty a -> a
Similar to List.Extra.minimumBy
minimumWith : (a -> a -> Basics.Order) -> List.Nonempty.ListNonempty a -> a
Similar to List.Extra.minimumWith
intersperse : a -> List.Nonempty.ListNonempty a -> List.Nonempty.ListNonempty a
Similar to List.intersperse
intersperse "." (fromPair "127" [ "0", "0", "1" ])
|> toList
== [ "127", ".", "0", ".", "0", ".", "1" ]
transpose : List.Nonempty.ListNonempty (List.Nonempty.ListNonempty a) -> List.Nonempty.ListNonempty (List.Nonempty.ListNonempty a)
Similar to List.Extra.transpose
subsequences : List.Nonempty.ListNonempty a -> List.Nonempty.ListNonempty (List.Nonempty.ListNonempty a)
Similar to List.Extra.subsequences
permutations : List.Nonempty.ListNonempty a -> List.Nonempty.ListNonempty (List.Nonempty.ListNonempty a)
Similar to List.Extra.permutations
indexedFoldl : (Basics.Int -> a -> b -> b) -> b -> List.Nonempty.ListNonempty a -> b
Similar to List.Extra.indexedFoldl
indexedFoldr : (Basics.Int -> a -> b -> b) -> b -> List.Nonempty.ListNonempty a -> b
Similar to List.Extra.indexedFoldr
scanl : (a -> b -> b) -> b -> List.Nonempty.ListNonempty a -> List.Nonempty.ListNonempty b
Similar to List.Extra.scanl
scanlList : (a -> b -> b) -> b -> List a -> List.Nonempty.ListNonempty b
Similar to scanl
, except takes a List
as input. Output is still guaranteed to be non-empty.
scanl1 : (a -> a -> a) -> List.Nonempty.ListNonempty a -> List.Nonempty.ListNonempty a
Similar to List.Extra.scanl1
except doesn't need to return a Maybe
. The function is (a -> a -> a)
though, instead of (a -> b -> b)
.
scanr : (a -> b -> b) -> b -> List.Nonempty.ListNonempty a -> List.Nonempty.ListNonempty b
Similar to List.Extra.scanr
scanrList : (a -> b -> b) -> b -> List a -> List.Nonempty.ListNonempty b
Similar to scanr
, except takes a List
as input. Output is still guaranteed to be non-empty.
scanr1 : (a -> a -> a) -> List.Nonempty.ListNonempty a -> List.Nonempty.ListNonempty a
Similar to List.Extra.scanr1
except doesn't need to return a Maybe
. The function is (a -> a -> a)
though, instead of (a -> b -> b)
.
mapAccuml : (a -> b -> ( a, c )) -> a -> List.Nonempty.ListNonempty b -> ( a, List.Nonempty.ListNonempty c )
Similar to List.Extra.mapAccuml
mapAccumr : (a -> b -> ( a, c )) -> a -> List.Nonempty.ListNonempty b -> ( a, List.Nonempty.ListNonempty c )
Similar to List.Extra.mapAccumr
iterate : (a -> Maybe a) -> a -> List.Nonempty.ListNonempty a
Similar to List.Extra.iterate
initialize : Basics.Int -> (Basics.Int -> a) -> List.Nonempty.ListNonempty a
Similar to List.Extra.initialize
.
appendList : List.Nonempty.ListNonempty a -> List a -> List.Nonempty.ListNonempty a
Similar to append, except taking an ordinary list as second argument.
appendList (fromPair 0 [ 1, 2 ]) [ 3, 4, 5 ]
|> toList
== [ 0, 1, 2, 3, 4, 5 ]
prependList : List a -> List.Nonempty.ListNonempty a -> List.Nonempty.ListNonempty a
Similar to append, except taking an ordinary list as first argument.
appendList (fromPair 0 [ 1, 2 ]) [ 3, 4, 5 ]
|> toList
== [ 0, 1, 2, 3, 4, 5 ]
splitAtTail : Basics.Int -> List.Nonempty.ListNonempty a -> ( List.Nonempty.ListNonempty a, List a )
Similar to List.Extra.splitAt
. Compare with splitAtRest
.
splitAtRest : Basics.Int -> List.Nonempty.ListNonempty a -> ( List a, List.Nonempty.ListNonempty a )
Similar to List.Extra.splitAt
. Compare with splitAtTail
.
group : List.Nonempty.ListNonempty a -> List.Nonempty.ListNonempty (List.Nonempty.ListNonempty a)
Similar to List.Extra.group
.
groupList : List a -> List (List.Nonempty.ListNonempty a)
Similar to group
, but works on List
.
groupWhile : (a -> a -> Basics.Bool) -> List.Nonempty.ListNonempty a -> List.Nonempty.ListNonempty (List.Nonempty.ListNonempty a)
Similar to List.Extra.groupWhile
.
groupWhileList : (a -> a -> Basics.Bool) -> List a -> List (List.Nonempty.ListNonempty a)
Similar to groupWhile
, but works on List
.
prefixes : List.Nonempty.ListNonempty a -> List.Nonempty.ListNonempty (List.Nonempty.ListNonempty a)
Similar to List.Extra.inits
.
suffixes : List.Nonempty.ListNonempty a -> List.Nonempty.ListNonempty (List.Nonempty.ListNonempty a)
Similar to List.Extra.tails
.
select : List.Nonempty.ListNonempty a -> List.Nonempty.ListNonempty ( a, List a )
Similar to List.Extra.select
. Output type was chosen because the output of this function is likely intended to be used as separate pieces. If output type of ListNonempty (ListNonempty a)
is desired, use select >> map fromTuple
.
selectSplit : List.Nonempty.ListNonempty a -> List.Nonempty.ListNonempty ( List a, a, List a )
Similar to List.Extra.selectSplit
.
gatherEquals : List.Nonempty.ListNonempty a -> List.Nonempty.ListNonempty (List.Nonempty.ListNonempty a)
Similar to List.Extra.gatherEquals
.
gatherEqualsBy : (a -> b) -> List.Nonempty.ListNonempty a -> List.Nonempty.ListNonempty (List.Nonempty.ListNonempty a)
Similar to List.Extra.gatherEqualsBy
.
gatherEqualsByList : (a -> b) -> List a -> List (List.Nonempty.ListNonempty a)
Similar to gatherEqualsBy
, except operating on List
.
gatherEqualsList : List a -> List (List.Nonempty.ListNonempty a)
Similar to gatherEquals
except operating on List
.
gatherWith : (a -> a -> Basics.Bool) -> List.Nonempty.ListNonempty a -> List.Nonempty.ListNonempty (List.Nonempty.ListNonempty a)
Similar to List.Extra.gatherWith
.
gatherWithList : (a -> a -> Basics.Bool) -> List a -> List (List.Nonempty.ListNonempty a)
Similar to gatherWith
, except operating on List
.
frequencies : List.Nonempty.ListNonempty comparable -> List.Nonempty.ListNonempty ( comparable, Basics.Int )
Similar to List.Extra.frequencies
.
partition : (a -> Basics.Bool) -> List.Nonempty.ListNonempty a -> ( List a, List a )
Equivalent to List.partition
. We can't have any (simple) guarantees about
the lengths of the two returned lists.
fromPair 2 [ 5, 1, 4 ]
|> partition (\n -> n > 2)
== ( [ 5, 4 ], [ 2, 1 ] )
notMember : a -> List.Nonempty.ListNonempty a -> Basics.Bool
Similar to List.Extra.notMember
.
lift2 : (a -> b -> c) -> List.Nonempty.ListNonempty a -> List.Nonempty.ListNonempty b -> List.Nonempty.ListNonempty c
Similar to List.Extra.lift2
.
lift3 : (a -> b -> c -> d) -> List.Nonempty.ListNonempty a -> List.Nonempty.ListNonempty b -> List.Nonempty.ListNonempty c -> List.Nonempty.ListNonempty d
Similar to List.Extra.lift3
.
lift4 : (a -> b -> c -> d -> e) -> List.Nonempty.ListNonempty a -> List.Nonempty.ListNonempty b -> List.Nonempty.ListNonempty c -> List.Nonempty.ListNonempty d -> List.Nonempty.ListNonempty e
Similar to List.Extra.lift4
.
groupsOf : Basics.Int -> List.Nonempty.ListNonempty a -> List.Nonempty.ListNonempty (List.Nonempty.ListNonempty a)
Similar to List.Extra.groupsOf
.
groupsOfWithStep : Basics.Int -> Basics.Int -> List.Nonempty.ListNonempty a -> List.Nonempty.ListNonempty (List.Nonempty.ListNonempty a)
Similar to List.Extra.groupsOfWithStep
.
groupsOfVarying : List.Nonempty.ListNonempty Basics.Int -> List.Nonempty.ListNonempty a -> List.Nonempty.ListNonempty (List.Nonempty.ListNonempty a)
Similar to List.Extra.groupsOfVarying
.
greedyGroupsOf : Basics.Int -> List.Nonempty.ListNonempty a -> List.Nonempty.ListNonempty (List.Nonempty.ListNonempty a)
Similar to List.Extra.greedyGroupsOf
.
greedyGroupsOfWithStep : Basics.Int -> Basics.Int -> List.Nonempty.ListNonempty a -> List.Nonempty.ListNonempty (List.Nonempty.ListNonempty a)
Similar to List.Extra.greedyGroupsOfWithStep
.