1{-# LANGUAGE Unsafe #-}
2{-# LANGUAGE NoImplicitPrelude #-}
3
4module Protolude.Unsafe (
5  unsafeHead,
6  unsafeTail,
7  unsafeInit,
8  unsafeLast,
9  unsafeFromJust,
10  unsafeIndex,
11  unsafeThrow,
12  unsafeRead,
13) where
14
15import Protolude.Base (Int)
16import Data.Char (Char)
17import Text.Read (Read, read)
18import qualified Data.List as List
19import qualified Data.Maybe as Maybe
20import qualified Control.Exception as Exc
21
22unsafeHead :: [a] -> a
23unsafeHead = List.head
24
25unsafeTail :: [a] -> [a]
26unsafeTail = List.tail
27
28unsafeInit :: [a] -> [a]
29unsafeInit = List.init
30
31unsafeLast :: [a] -> a
32unsafeLast = List.last
33
34unsafeFromJust :: Maybe.Maybe a -> a
35unsafeFromJust = Maybe.fromJust
36
37unsafeIndex :: [a] -> Int -> a
38unsafeIndex = (List.!!)
39
40unsafeThrow :: Exc.Exception e => e -> a
41unsafeThrow = Exc.throw
42
43unsafeRead :: Read a => [Char] -> a
44unsafeRead = Text.Read.read
45