-- warnings
:seti -Wall
:seti -freverse-errors
:seti -Wincomplete-uni-patterns
:seti -Wno-type-defaults
-- :seti -XImportQualifiedPost
:seti -XBangPatterns
:seti -XTupleSections
:seti -XGADTs
:seti -XStandaloneDeriving
:seti -XScopedTypeVariables
:seti -XBinaryLiterals
:seti -XGeneralizedNewtypeDeriving
:seti -XLexicalNegation
-- :seti -XOverloadedLists
-- :seti -XOverloadedStrings
:seti -XPartialTypeSignatures
:seti -XTypeApplications
-- import System.Random
-- import System.Environment
-- import Data.Word
-- import Data.Bool
-- import Data.Char
-- import Data.Maybe
-- import Data.Either
-- import Data.List
-- import Data.List.Split
-- import Data.Function
-- import Data.Bits
-- import Data.Ord
-- import Data.Monoid
-- import Data.Foldable
-- import Data.Functor
-- import Data.Bifunctor
-- import Data.Vector.Unboxed ( UVector )
-- import Data.Vector.Unboxed qualified as U
-- import Data.Vector ( Vector )
-- import Data.Vector qualified as V
-- import Data.IntMap.Strict ( IntMap )
-- import Data.IntMap.Strict qualified as I
-- import Data.Map.Strict ( Map )
-- import Data.Map.Strict qualified as M
-- import Data.Set ( Set )
-- import Data.Set qualified as S
-- import Data.Sequence ( Seq )
-- import Data.Sequence qualified as Seq
-- import Control.Monad
-- import Control.Arrow
-- import Control.Applicative
-- prompt
-- :set prompt "\ESC[0;90m%s\n\ESC[0;36mλ \ESC[m"
:set prompt "\ESC[0;36mλ \ESC[m"
:set prompt-cont "\ESC[0;36m~ \ESC[m"
-- hoogle
:def hoogle \x -> return $ ":!hoogle --count=99 \"" ++ x ++ "\" | less"
:def hinfo \x -> return $ ":!hoogle --info \"" ++ x ++ "\" | less"
-- lambdabot
:def lambdabot \x -> return $ ":!lambdabot -l WARNING -e \"" ++ x ++ "\""
:def pl \x -> return $ ":!lambdabot -l WARNING -e \"pl " ++ x ++ "\""
:def src \x -> return $ ":!lambdabot -l WARNING -e \"src " ++ x ++ "\""
-- haskell-docs-cli
:def hdc \x -> return $ ":!hdc \"" ++ x ++ "\""
-- multi-line expressions with :{ and :}
:set +m
-- types
:set +t
-- stats
-- :set +s