https://github.com/deemp/haskell-roadmap
https://github.com/deemp/haskell-roadmap
Last synced: 5 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/deemp/haskell-roadmap
- Owner: deemp
- License: mit
- Created: 2023-09-28T08:05:32.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2023-09-28T21:57:00.000Z (over 2 years ago)
- Last Synced: 2025-01-11T11:47:30.957Z (over 1 year ago)
- Size: 2.93 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Haskell roadmap
Connections between topics in Haskell.
An arrow from a node `A` to a node `B` means `A` is a prerequisite of `B`.
Novices start at `Zero`.
```mermaid
%% Links can be added via
graph TB
zero["`Zero`"]
subgraph tools["`Tools`"]
_tools[
Required:
- ghc (also provides ghci, ghc-pkg)
Optional:
- ghcid
- cabal
- stack (not well_maintained)
- hpack
- haskell-language-server
- implicit_hie
- nix
- VSCode (extensions haskell.haskell,
visortelle.haskell-spotlight)
- hoogle
- hackage
]
style _tools text_align:left
end
subgraph basic_types["`Basic Types`"]
_basic_types[
- String
- Int
- Char
- [] (List)
- (,) (Tuple)
]
style _basic_types text_align:left
end
subgraph function["`Functions`"]
_function[
- lambda expressions
- pattern matching
- ViewPatterns
- let .. in ..
- guards
- currying
- composition
- higher-order function
- arity
]
style _function text_align:left
end
subgraph algebraic_data_type["`Algebraic Data Type (ADT)`"]
_algebraic_data_type[
- data
- newtype
- record syntax
- recursive data types
- OverloadedRecordDot
- NoFieldSelectors
- DataKinds
- RecordWildCards
]
style _algebraic_data_type text_align:left
end
subgraph functor[Functor]
_functor[
- DeriveFunctor
]
style _functor text_align:left
end
subgraph applicative[Applicative]
_applicative[
- optparse-applicative
- ApplicativeDo
- QualifiedDo
]
style _applicative text_align:left
end
subgraph monad["`Monad`"]
_monad[
- IO, [], Either, Maybe, Identity
- Reader, Writer, State, ST, Cont
]
style _monad text_align:left
end
subgraph generalized_algebraic_data_type["`GADT (Generalized ADT) `"]
_generalized_algebraic_data_type[
- record syntax
]
style _generalized_algebraic_data_type text_align:left
end
subgraph type_family["`Type Family`"]
_type_family[
- open
- closed
- higher-order data
]
style _type_family text_align:left
end
data_family["`Data Family`"]
associated_type_family["`Associated Type Family`"]
associated_data_family["`Associated Data Family`"]
subgraph type_class["`Type Class`"]
_type_class[
- forall
- type variable
- kind
- type synonym
- Typeclassopedia
- TypeOperators
- ScopedTypeVariables
- TypeApplications
- Proxy
- PolyKinds
- DerivingStrategies
- DerivingVia
- AllowAmbiguousTypes
]
end
template_haskell["`Template Haskell`"]
subgraph lens[lens]
_lens[
- Optics by Example
- generic-lens
]
style _lens text_align:left
end
subgraph readert[ReaderT pattern]
_readert[
- UnliftIO
- MonadBaseControl
]
style _readert text_align:left
end
subgraph generics["`Generics`"]
_generics[
- GHC.Generics
]
end
subgraph monad_transformer["`Monad transformer`"]
_monad_transformer[
- mtl
- transformers
- ConT
]
style _monad_transformer text_align:left
end
subgraph type_level_parsing["`Type-level parsing`"]
_type_level_parsing[
- GHC.TypeLits
- first-class-families
]
style _type_level_parsing text_align:left
end
subgraph concurrency["`Concurrency`"]
_concurrency[
- Parallel and Concurrent Haskell
%% - exceptions
]
end
subgraph aeson[aeson]
_aeson[
- yaml
- lens-aeson
]
end
subgraph foldable[Foldable]
_foldable[
- Data.Foldable
]
end
%% testing
%% books
%% cps
%% contramap
%% profunctor
%% tagged instances
subgraph monoid[Monoid]
_monoid[
- Sum
- Product
- a -> a
]
end
traversable[Traversable]
effectful[effectful]
servant[servant]
esqueleto[esqueleto]
crud[Some decent CRUD]
zero --> basic_types
basic_types --> function
function --> algebraic_data_type
type_class --> generalized_algebraic_data_type
type_class --> type_family
type_class --> functor
type_class --> monoid
algebraic_data_type --> type_class
functor --> applicative
applicative --> monad
applicative --> traversable
generalized_algebraic_data_type --> data_family
type_family --> associated_type_family
type_family --> type_level_parsing
data_family --> associated_data_family
monad --> template_haskell
monad --> concurrency
monad --> monad_transformer
monad --> lens
associated_type_family --> generics
associated_data_family --> generics
concurrency --> readert
monad_transformer --> readert
generalized_algebraic_data_type --> effectful
readert --> effectful
monoid --> foldable
foldable --> traversable
traversable --> lens
lens --> aeson
monad_transformer --> servant
generics --> servant
template_haskell --> esqueleto
esqueleto --> crud
servant --> crud
effectful --> crud
aeson --> crud
type_level_parsing --> generics
```