lens-5.3.3: Lenses, Folds and Traversals

Copyright | (C) 2014-2016 Edward Kmett and Eric Mertens
License | BSD-style (see the file LICENSE)
Maintainer | Edward Kmett <ekmett@gmail.com>
Stability | provisional
Portability | non-portable
Safe Haskell | Safe-Inferred
Language | Haskell2010

Control.Lens.Internal.List

Description

This module provides utility functions on lists used by the library implementation.

Synopsis

- ordinalNub :: Int -> [Int] -> [Int]
- stripSuffix :: Eq a => [a] -> [a] -> Maybe [a]

# Documentation

ordinalNub #

Arguments

:: Int | strict upper bound
-> [Int] | ordinals
-> [Int] | unique, in-bound ordinals, in order seen

Return the the subset of given ordinals within a given bound and in order of the first occurrence seen.

Bound: `0 <= x < l`

    >>> ordinalNub 3 [-1,2,1,4,2,3]
    [2,1]

stripSuffix :: Eq a => [a] -> [a] -> Maybe [a] #

\(\mathcal{O}(\min(m,n))\). The `stripSuffix` function drops the given suffix from a list. It returns `Nothing` if the list did not end with the suffix given, or `Just` the list after the suffix, if it does.

    >>> stripSuffix "bar" "foobar"
    Just "foo"

    >>> stripSuffix "foo" "foo"
    Just ""

    >>> stripSuffix "bar" "barfoo"
    Nothing

    >>> stripSuffix "foo" "barfoobaz"
    Nothing