{"id":19842895,"url":"https://github.com/deemp/haskell-roadmap","last_synced_at":"2026-02-04T07:10:20.669Z","repository":{"id":197088877,"uuid":"697661088","full_name":"deemp/haskell-roadmap","owner":"deemp","description":null,"archived":false,"fork":false,"pushed_at":"2023-09-28T21:57:00.000Z","size":3,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-11T11:47:30.957Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/deemp.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2023-09-28T08:05:32.000Z","updated_at":"2024-06-22T19:51:39.000Z","dependencies_parsed_at":"2023-09-29T00:16:23.834Z","dependency_job_id":null,"html_url":"https://github.com/deemp/haskell-roadmap","commit_stats":null,"previous_names":["deemp/haskell-roadmap"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/deemp%2Fhaskell-roadmap","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/deemp%2Fhaskell-roadmap/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/deemp%2Fhaskell-roadmap/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/deemp%2Fhaskell-roadmap/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/deemp","download_url":"https://codeload.github.com/deemp/haskell-roadmap/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241214032,"owners_count":19928228,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-12T12:35:58.578Z","updated_at":"2026-02-04T07:10:20.626Z","avatar_url":"https://github.com/deemp.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Haskell roadmap\n\nConnections between topics in Haskell.\n\nAn arrow from a node `A` to a node `B` means `A` is a prerequisite of `B`.\n\nNovices start at `Zero`.\n\n```mermaid\n%% Links can be added via \u003ca href=\"https://mermaid.live\"\u003e\u003c/a\u003e\n\ngraph TB\n    zero[\"`Zero`\"]\n    subgraph tools[\"`Tools`\"]\n        _tools[\n        Required:\n        - \u003ci\u003eghc\u003c/i\u003e \u0026lpar;also provides \u003ci\u003eghci\u003c/i\u003e, \u003ci\u003eghc-pkg\u003c/i\u003e\u0026rpar;\n        Optional:\n        - \u003ci\u003eghcid\u003c/i\u003e\n        - \u003ci\u003ecabal\u003c/i\u003e\n        - \u003ci\u003estack\u003c/i\u003e \u0026lpar;not well_maintained\u0026rpar;\n        - \u003ci\u003ehpack\u003c/i\u003e\n        - \u003ci\u003ehaskell-language-server\u003c/i\u003e\n        - \u003ci\u003eimplicit_hie\u003c/i\u003e\n        - \u003ci\u003enix\u003c/i\u003e\n        - \u003ci\u003eVSCode\u003c/i\u003e \u0026lpar;extensions \u003ci\u003ehaskell.haskell\u003c/i\u003e,\u003cbr\u003e\u003ci\u003evisortelle.haskell-spotlight\u003c/i\u003e\u0026rpar;\n        - \u003ci\u003ehoogle\u003c/i\u003e\n        - \u003ci\u003ehackage\u003c/i\u003e\n        ]\n        \n        style _tools text_align:left\n    end\n    \n    subgraph basic_types[\"`Basic Types`\"]\n        _basic_types[\n        - \u003ci\u003eString\u003c/i\u003e\n        - \u003ci\u003eInt\u003c/i\u003e\n        - \u003ci\u003eChar\u003c/i\u003e\n        - \u003ci\u003e\u0026lbrack;\u0026rbrack;\u003c/i\u003e \u0026lpar;List\u0026rpar;\n        - \u003ci\u003e\u0026lpar;,\u0026rpar;\u003c/i\u003e \u0026lpar;Tuple\u0026rpar;\n        ]\n        style _basic_types text_align:left\n    end\n\n    subgraph function[\"`Functions`\"]\n        _function[\n        - lambda expressions\n        - pattern matching\n        - \u003ci\u003eViewPatterns\u003c/i\u003e\n        - \u003ci\u003elet .. in ..\u003c/i\u003e\n        - guards\n        - currying\n        - composition\n        - higher-order function\n        - arity\n        ]\n        style _function text_align:left\n    end\n    \n    subgraph algebraic_data_type[\"`Algebraic Data Type (ADT)`\"]\n      _algebraic_data_type[\n        - \u003ci\u003edata\u003c/i\u003e\n        - \u003ci\u003enewtype\u003c/i\u003e\n        - record syntax\n        - \u003ci\u003erecursive data types\u003c/i\u003e\n        - \u003ci\u003eOverloadedRecordDot\u003c/i\u003e\n        - \u003ci\u003eNoFieldSelectors\u003c/i\u003e\n        - \u003ci\u003eDataKinds\u003c/i\u003e\n        - \u003ci\u003eRecordWildCards\u003c/i\u003e\n      ]\n      style _algebraic_data_type text_align:left\n    end\n    \n    subgraph functor[\u003ci\u003eFunctor\u003c/i\u003e]\n        _functor[\n        - \u003ci\u003eDeriveFunctor\u003c/i\u003e\n        ]\n        style _functor text_align:left\n    end\n    \n    subgraph applicative[\u003ci\u003eApplicative\u003c/i\u003e]\n        _applicative[\n        - \u003ci\u003eoptparse-applicative\u003c/i\u003e\n        - \u003ci\u003eApplicativeDo\u003c/i\u003e\n        - \u003ci\u003eQualifiedDo\u003c/i\u003e\n        ]\n        style _applicative text_align:left\n    end\n    \n    subgraph monad[\"`Monad`\"]\n        _monad[\n        - \u003ci\u003eIO, \u0026lbrack;\u0026rbrack;, Either, Maybe, Identity\u003c/i\u003e\n        - \u003ci\u003eReader, Writer, State, ST, Cont\u003c/i\u003e\n        ]\n        style _monad text_align:left\n    end\n    \n    subgraph generalized_algebraic_data_type[\"`GADT \u0026lpar;Generalized ADT\u0026rpar; `\"]\n        _generalized_algebraic_data_type[\n        - record syntax\n        ]\n        style _generalized_algebraic_data_type text_align:left\n    end\n\n    subgraph type_family[\"`Type Family`\"]\n        _type_family[\n        - open\n        - closed\n        - higher-order data\n        ]\n        style _type_family text_align:left\n    end\n\n    data_family[\"`Data Family`\"]\n    \n    associated_type_family[\"`Associated Type Family`\"]\n    associated_data_family[\"`Associated Data Family`\"]\n    \n    subgraph type_class[\"`Type Class`\"]\n        _type_class[\n        - \u003ci\u003eforall\u003c/i\u003e\n        - type variable\n        - \u003ci\u003ekind\u003c/i\u003e\n        - type synonym\n        - \u003ci\u003eTypeclassopedia\u003c/i\u003e\n        - \u003ci\u003eTypeOperators\u003c/i\u003e\n        - \u003ci\u003eScopedTypeVariables\u003c/i\u003e\n        - \u003ci\u003eTypeApplications\u003c/i\u003e\n        - \u003ci\u003eProxy\u003c/i\u003e\n        - \u003ci\u003ePolyKinds\u003ci\u003e\n        - \u003ci\u003eDerivingStrategies\u003c/i\u003e\n        - \u003ci\u003eDerivingVia\u003c/i\u003e\n        - \u003ci\u003eAllowAmbiguousTypes\u003c/i\u003e\n        ]\n    end\n    \n    template_haskell[\"`Template Haskell`\"]\n\n    subgraph lens[\u003ci\u003elens\u003c/i\u003e]\n        _lens[\n        - \u003ci\u003eOptics by Example\u003c/i\u003e\n        - \u003ci\u003egeneric-lens\u003c/i\u003e\n        ]\n        style _lens text_align:left\n    end\n    \n    subgraph readert[\u003ci\u003eReaderT\u003c/i\u003e pattern]\n        _readert[\n        - \u003ci\u003eUnliftIO\u003c/i\u003e\n        - \u003ci\u003eMonadBaseControl\u003c/i\u003e\n        ]\n        style _readert text_align:left\n    end\n    \n    subgraph generics[\"`Generics`\"]\n        _generics[\n        - \u003ci\u003eGHC.Generics\u003c/i\u003e\n        ]\n    end\n    \n    subgraph monad_transformer[\"`Monad transformer`\"]\n        _monad_transformer[\n        - \u003ci\u003emtl\u003c/i\u003e\n        - \u003ci\u003etransformers\u003c/i\u003e\n        - \u003ci\u003eConT\u003c/i\u003e\n        ]\n        style _monad_transformer text_align:left\n    end\n    \n    subgraph type_level_parsing[\"`Type-level parsing`\"]\n        _type_level_parsing[\n        - \u003ci\u003eGHC.TypeLits\u003c/i\u003e\n        - \u003ci\u003efirst-class-families\u003c/i\u003e\n        ]\n        style _type_level_parsing text_align:left\n    end\n\n    subgraph concurrency[\"`Concurrency`\"]\n        _concurrency[\n        - \u003ci\u003eParallel and Concurrent Haskell\u003ci\u003e\n        %% - \u003ci\u003eexceptions\u003c/i\u003e\n        ]\n    end\n\n    subgraph aeson[\u003ci\u003eaeson\u003c/i\u003e]\n        _aeson[\n            - \u003ci\u003eyaml\u003c/i\u003e\n            - \u003ci\u003elens-aeson\u003c/i\u003e\n        ]\n    end\n    \n    subgraph foldable[\u003ci\u003eFoldable\u003c/i\u003e]\n        _foldable[\n            - Data.Foldable\n        ]\n    end\n    %% testing\n    %% books\n    %% cps\n    %% contramap\n    %% profunctor\n    %% tagged instances\n    subgraph monoid[\u003ci\u003eMonoid\u003c/i\u003e]\n        _monoid[\n            - \u003ci\u003eSum\u003c/i\u003e\n            - \u003ci\u003eProduct\u003c/i\u003e\n            - \u003ci\u003ea -\u003e a\u003c/i\u003e\n        ]\n    end\n    traversable[\u003ci\u003eTraversable\u003c/i\u003e]\n    effectful[\u003ci\u003eeffectful\u003c/i\u003e]\n    servant[\u003ci\u003eservant\u003c/i\u003e]\n    esqueleto[\u003ci\u003eesqueleto\u003c/i\u003e]\n    crud[Some decent CRUD]\n\n\n    zero --\u003e basic_types\n    \n    basic_types --\u003e function\n    \n    function --\u003e algebraic_data_type\n    \n    type_class --\u003e generalized_algebraic_data_type\n    type_class --\u003e type_family\n    type_class --\u003e functor\n    type_class --\u003e monoid\n\n    algebraic_data_type --\u003e type_class\n\n    functor --\u003e applicative\n    \n    applicative --\u003e monad\n    applicative --\u003e traversable\n\n    generalized_algebraic_data_type --\u003e data_family\n\n    type_family --\u003e associated_type_family\n    type_family --\u003e type_level_parsing\n\n    data_family --\u003e associated_data_family\n\n    monad --\u003e template_haskell\n    monad --\u003e concurrency\n    monad --\u003e monad_transformer\n    monad --\u003e lens\n\n    associated_type_family --\u003e generics\n    associated_data_family --\u003e generics\n    \n    concurrency --\u003e readert\n    monad_transformer --\u003e readert\n\n    generalized_algebraic_data_type --\u003e effectful\n    readert --\u003e effectful\n    \n    monoid --\u003e foldable\n    foldable --\u003e traversable\n    traversable --\u003e lens\n\n    lens --\u003e aeson\n\n    monad_transformer --\u003e servant\n    generics --\u003e servant\n\n    template_haskell --\u003e esqueleto\n    esqueleto --\u003e crud\n    servant --\u003e crud\n    effectful --\u003e crud\n    aeson --\u003e crud\n\n    type_level_parsing --\u003e generics\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdeemp%2Fhaskell-roadmap","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdeemp%2Fhaskell-roadmap","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdeemp%2Fhaskell-roadmap/lists"}