Copyright | (c) 2016 Stephen Diehl (c) 2016-2018 Serokell (c) 2018-2021 Kowainik |
---|---|
License | MIT |
Maintainer | Kowainik <xrom.xkov@gmail.com> |
Stability | Stable |
Portability | Portable |
Safe Haskell | Unsafe |
Language | Haskell2010 |
⚠️ Warning ⚠️
This module contains unsafe partial functions. They are unavoidable sometimes, but we encourage you to use safer analogues:
Partial | Total |
---|---|
|
|
|
|
|
|
|
|
This module is intended to be imported qualified and it is not included in default prelude exports.
import qualified Relude.Unsafe as Unsafe
foo :: [a] -> a
foo = Unsafe.head
Unsafe list functions
\(\mathcal{O}(1)\). Extract the first element of a list, which must be non-empty.
>>>
head [1, 2, 3]
1>>>
head [1..]
1>>>
head []
Exception: Prelude.head: empty list
\(\mathcal{O}(1)\). Extract the elements after the head of a list, which must be non-empty.
>>>
tail [1, 2, 3]
[2,3]>>>
tail [1]
[]>>>
tail []
Exception: Prelude.tail: empty list
\(\mathcal{O}(n)\). Extract the last element of a list, which must be finite and non-empty.
>>>
last [1, 2, 3]
3>>>
last [1..]
* Hangs forever *>>>
last []
Exception: Prelude.last: empty list
\(\mathcal{O}(n)\). Return all the elements of a list except the last one. The list must be non-empty.
>>>
init [1, 2, 3]
[1,2]>>>
init [1]
[]>>>
init []
Exception: Prelude.init: empty list
(!!) :: [a] -> Int -> a infixl 9 #
List index (subscript) operator, starting from 0.
It is an instance of the more general genericIndex
,
which takes an index of any integral type.
>>>
['a', 'b', 'c'] !! 0
'a'>>>
['a', 'b', 'c'] !! 2
'c'>>>
['a', 'b', 'c'] !! 3
Exception: Prelude.!!: index too large>>>
['a', 'b', 'c'] !! (-1)
Exception: Prelude.!!: negative index
at :: Int -> [a] -> a Source #
Similar to !!
but with flipped arguments.
get element from list using index value starting from `0`.
>>>
at 2 ["a", "b", "c"]
"c"
it is also useful when used in a partially applied position like:
>>>
map (at 1) [["a","b","c"], ["a","b","c"], ["a","b","c"]]
["b","b","b"]
Unsafe Maybe
functions
fromJust :: HasCallStack => Maybe a -> a #
Unsafe Text.Read functions
read :: Read a => String -> a #
The read
function reads input from a string, which must be
completely consumed by the input process. read
fails with an error
if the
parse is unsuccessful, and it is therefore discouraged from being used in
real applications. Use readMaybe
or readEither
for safe alternatives.
>>>
read "123" :: Int
123
>>>
read "hello" :: Int
*** Exception: Prelude.read: no parse