Safer version of !!, returns a Maybe.
Get element from list using index value starting from `0`.
[] !!? 0Nothing
["a", "b", "c"] !!? 3Nothing
[1, 2, 3] !!? (-1)Nothing
["a", "b", "c"] !!? 2Just "c"
:: a typeCtrl KGHC 9.10.3 · lts/ghc-9.10.x · 248f8f0 · 2026-10-05
Modulerelude-1.2.0.0Haskell2010
SPDX-License-Identifier : MIT Maintainer : Kowainik xrom.xkov@gmail.com Stability : Stable Portability : Portable
Utility functions to work with lists and NonEmpty lists.
module Relude.List.Reexport
Most of the Data.List types and function.
Note, that list partial functions (e.g. head) are not exported from
Data.List.
Instead relude provides safe functions that work with
NonEmpty. You can find them in the
Relude.List.NonEmpty module instead.
module Relude.List.NonEmpty
Reexports from Data.List.NonEmpty and additional safe functions to work with list type in terms of NonEmpty.
Safer version of !!, returns a Maybe.
Get element from list using index value starting from `0`.
[] !!? 0Nothing
["a", "b", "c"] !!? 3Nothing
[1, 2, 3] !!? (-1)Nothing
["a", "b", "c"] !!? 2Just "c"
!!? with its arguments flipped.
Get element from list using index value starting from `0`.
maybeAt 0 []Nothing
maybeAt 3 ["a", "b", "c"]Nothing
maybeAt (-1) [1, 2, 3]Nothing
maybeAt 2 ["a", "b", "c"]Just "c"
Partitions a list based on the result of function which produces an Either value. List of all elements producing Left are extracted, in order, to the first element of the output tuple. Similarly, a list of all elements producing Right are extracted to the second element of output.
:{ divideEvenOrShow :: Int -> Either Int String divideEvenOrShow n | even n = Left $ n `div` 2 | otherwise = Right $ "Odd: " <> show n :}
partitionWith divideEvenOrShow [1 .. 6]([1,2,3],["Odd: 1","Odd: 3","Odd: 5"])