last package:base
Extract the last element of a list, which must be finite
and non-empty.
WARNING: This function is partial. Consider using
unsnoc
instead.
Examples
>>> last [1, 2, 3]
3
>>> last [1..]
* Hangs forever *
>>> last []
*** Exception: Prelude.last: empty list
The last element of a non-empty structure.
>>> last (1 :| [2, 3, 4])
4
Extract the last element of the stream.
Maybe monoid returning the rightmost non-
Nothing value.
Last a is isomorphic to
Dual (First
a), and thus to
Dual (Alt Maybe a)
Data.Semigroup.Last. The former returns the last
non-
Nothing, so
x <> Data.Monoid.Last Nothing =
x. The latter simply returns the last value, thus
x <>
Data.Semigroup.Last Nothing = Data.Semigroup.Last Nothing.
Examples
>>> Last (Just "hello") <> Last Nothing <> Last (Just "world")
Last {getLast = Just "world"}
>>> Last Nothing <> mempty
Last {getLast = Nothing}
Beware that
Data.Semigroup.Last is different from
Data.Monoid.Last. The former simply returns the last
value, so
x <> Data.Semigroup.Last Nothing =
Data.Semigroup.Last Nothing. The latter returns the last
non-
Nothing, thus
x <> Data.Monoid.Last Nothing =
x.
Examples
>>> Last 0 <> Last 10
Last {getLast = 10}
>>> sconcat $ Last 1 :| [ Last n | n <- [2..]]
* Hangs forever *
The byte buffer just before we did our last batch of decoding.