- 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
- 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
- Importing
- Exporting functions
- Exporting modules
$if/then/elselet/inwherecase/ofdata- Record syntax
deriving
!typenewtype- Record syntax
deriving
dolet
- Equational reasoning
- Laziness
- Parametricity
- Total functions
- Value constructors
- Type constructors
- Sum types
- Product types
- Type classes
- Type constraints
- Type kinds
- Currying
- Function currying
- Type currying
- Semigroup
MonoidFunctorApplicativeAlternativeMonads- Monad transformers
- Free monads
- Error handling
MaybeEithererror
TextListMaybeEitherIOReader/ReaderT
hspechunitQuickCheckhlint
textaesonscottyoperationalpostgresql-simplelensvalidation