76 lines
1.5 KiB
Haskell
76 lines
1.5 KiB
Haskell
{-# LANGUAGE CPP #-}
|
|
{-# LANGUAGE Unsafe #-}
|
|
{-# LANGUAGE NoImplicitPrelude #-}
|
|
|
|
module Protolude.Unsafe (
|
|
unsafeHead,
|
|
unsafeTail,
|
|
unsafeInit,
|
|
unsafeLast,
|
|
unsafeFromJust,
|
|
unsafeIndex,
|
|
unsafeThrow,
|
|
unsafeRead,
|
|
) where
|
|
|
|
import Protolude.Base (Int)
|
|
|
|
#if ( __GLASGOW_HASKELL__ >= 800 )
|
|
import Protolude.Base (HasCallStack)
|
|
#endif
|
|
import Data.Char (Char)
|
|
import Text.Read (Read, read)
|
|
import qualified Data.List as List
|
|
import qualified Data.Maybe as Maybe
|
|
import qualified Control.Exception as Exc
|
|
|
|
unsafeThrow :: Exc.Exception e => e -> a
|
|
unsafeThrow = Exc.throw
|
|
|
|
#if ( __GLASGOW_HASKELL__ >= 800 )
|
|
unsafeHead :: HasCallStack => [a] -> a
|
|
unsafeHead = List.head
|
|
|
|
unsafeTail :: HasCallStack => [a] -> [a]
|
|
unsafeTail = List.tail
|
|
|
|
unsafeInit :: HasCallStack => [a] -> [a]
|
|
unsafeInit = List.init
|
|
|
|
unsafeLast :: HasCallStack => [a] -> a
|
|
unsafeLast = List.last
|
|
|
|
unsafeFromJust :: HasCallStack => Maybe.Maybe a -> a
|
|
unsafeFromJust = Maybe.fromJust
|
|
|
|
unsafeIndex :: HasCallStack => [a] -> Int -> a
|
|
unsafeIndex = (List.!!)
|
|
|
|
unsafeRead :: (HasCallStack, Read a) => [Char] -> a
|
|
unsafeRead = Text.Read.read
|
|
#endif
|
|
|
|
|
|
#if ( __GLASGOW_HASKELL__ < 800 )
|
|
unsafeHead :: [a] -> a
|
|
unsafeHead = List.head
|
|
|
|
unsafeTail :: [a] -> [a]
|
|
unsafeTail = List.tail
|
|
|
|
unsafeInit :: [a] -> [a]
|
|
unsafeInit = List.init
|
|
|
|
unsafeLast :: [a] -> a
|
|
unsafeLast = List.last
|
|
|
|
unsafeFromJust :: Maybe.Maybe a -> a
|
|
unsafeFromJust = Maybe.fromJust
|
|
|
|
unsafeIndex :: [a] -> Int -> a
|
|
unsafeIndex = (List.!!)
|
|
|
|
unsafeRead :: Read a => [Char] -> a
|
|
unsafeRead = Text.Read.read
|
|
#endif
|