module ShellCheck.Prelude where
import Data.Semigroup
headOrDefault :: a -> [a] -> a
headOrDefault a
_ (a
a:[a]
_) = a
a
headOrDefault a
def [a]
_ = a
def
lastOrDefault :: p -> [p] -> p
lastOrDefault p
def [] = p
def
lastOrDefault p
_ [p]
list = forall a. [a] -> a
last [p]
list
!!! :: [a] -> Int -> Maybe a
(!!!) [a]
list Int
i =
case forall a. Int -> [a] -> [a]
drop Int
i [a]
list of
[] -> forall a. Maybe a
Nothing
(a
r:[a]
_) -> forall a. a -> Maybe a
Just a
r
sconcat1 :: (Semigroup t) => [t] -> t
sconcat1 :: forall t. Semigroup t => [t] -> t
sconcat1 [t
x] = t
x
sconcat1 (t
x:[t]
xs) = t
x forall a. Semigroup a => a -> a -> a
<> forall t. Semigroup t => [t] -> t
sconcat1 [t]
xs
sconcatOrDefault :: p -> [p] -> p
sconcatOrDefault p
def [] = p
def
sconcatOrDefault p
_ [p]
list = forall t. Semigroup t => [t] -> t
sconcat1 [p]
list
pleaseReport :: [Char] -> [Char]
pleaseReport [Char]
str = [Char]
"ShellCheck internal error, please report: " forall a. [a] -> [a] -> [a]
++ [Char]
str