ApplicativeDo
, BangPatterns
, BlockArguments
, ConstraintKinds
, DataKinds
, DeriveAnyClass
, DeriveFoldable
, DeriveFunctor
, DeriveGeneric
, DeriveLift
, DeriveTraversable
, DerivingStrategies
, FlexibleContexts
, FlexibleInstances
, FunctionalDependencies
, GADTs
, GeneralizedNewtypeDeriving
, KindSignatures
, LambdaCase
, LiberalTypeSynonyms
, MultiParamTypeClasses
, MultiWayIf
, NamedFieldPuns
, NoImplicitPrelude
, NoMonomorphismRestriction
, OverloadedStrings
, OverloadedLabels
, OverloadedLists
, RankNTypes
, RecordWildCards
, ScopedTypeVariables
, StandaloneDeriving
, TupleSections
, TypeSynonymInstances
, TemplateHaskell
, TypeOperators
, ViewPatterns
OverloadedStrings
). You can read up more on these at the extremely informative What I Wish I Knew When Learning Haskell./src
directory. We're following the other convention, which is to place library code in a directory shocking titled... library
./test
. We have several kinds of tests:/test/testsuite
/test/doctest
; actual tests in each source file in /library
/test/lint
/test/coverage-code
/test/coverage-docs
/bench
/app
or /exe
. Since our project contains multiple executables, we use the name of the executable itself (for example /fission-web
).