- Cabal
- Starting a new project
- Sandboxes
- Creating
- Deleting
- Adding dependencies
- Installing dependencies
- Adding one or more test suites
- Unit tests
- Property-based tests
- Linting
- Benchmarking
- Adding modules
- Creating libraries
- Creating executables
- Starting a REPL
- Building the library/executable
- Running the executables
- Running tests
- Adding GHC options
~/.cabalvs~/.ghcghc-pkg
- GHC
- Deferring type errors
- Displaying Template Haskell generated code
- Optimizations
- Showing warnings
- GHCi
- Importing modules
- Reloading code
- Loading files
:type/:t:info/:i:kind/:k- Declaring functions
- Declaring multiline functions
- Hackage
- Finding libraries
- Reading documentation
- Hoogle
- Finding functions
- Stackage
- Type signatures
- Calling functions
- Defining functions
- Pattern matching
- Modules
$if/then/elselet/inwherecase/ofdata- Record syntax
deriving
!typenewtype- Record syntax
deriving
dolet
- Equational reasoning
- Parametricity
- Value constructors
- Type constructors
- Sum types
- Product types
- Type classes
- Type constraints
- Type kinds
- Currying
- Function currying
- Type currying
FunctorApplicativeAlternativeMonads- Semigroup
Monoid- Monad transformers
- Free monads
- Laziness
TextListMaybeEitherIOReader/ReaderTST
hspechunitQuickCheck
lensvalidation