Skip to content
AgileLogics
5 min read

What You Should Know Now — and What's Next

What You Should Know Now

  • Expressions, types, type inference, and reading type signatures
  • Functions, currying, sections, composition, and recursion
  • Lists, comprehensions, pattern matching, and guards
  • Higher-order functions and folds
  • Algebraic data types, records, Maybe, and Either
  • Type classes, including Functor, Foldable, Applicative, and Monad
  • IO with do-notation, laziness, modules, and Data.Map/Data.Set
  • cabal projects, testing with HUnit, QuickCheck, and Hspec
  • Monad transformers and mtl, concurrency with MVar, STM, and async
  • Strictness, profiling, extensions, GADTs, and type families
  • Parsing, JSON with aeson, and web APIs with Servant

What Should You Learn Next?

  • OCaml — OCaml is a strict, pragmatic functional language with a similar type system and a very fast compiler.
  • F# — F# brings ML-style functional programming to .NET, with easy access to its huge library ecosystem.
  • Elm — Elm applies Haskell-like ideas to web front ends, with friendly error messages and no runtime exceptions.
  • Scala — Scala uses type classes, monads, and effect libraries (Cats, ZIO) on the JVM, where many functional programmers work professionally.
  • Type theory — dependently typed languages such as Idris, Agda, and Lean take Haskell's type-level ideas further.

Build Something

Pick a real problem — a command-line tool you would actually use, a small web service, or a parser for a file format you work with — and build it as a cabal project with tests. Publish it on GitHub, ask for feedback on the Haskell Discourse, and read the source of libraries you use: well-written Haskell libraries are some of the best teachers of the language.