Haskell reference

October 5, 2022 ยท View on GitHub

Concepts

The Haskell concept exercises are based on concepts. The list below contains the concepts that have been identified for the Haskell language.

Language-unique

  • Strictness vs. nonstrictness ('laziness')
  • Type classes
    • Functor, Applicative, Monad
    • Semigroup, Monoid
    • Foldable, Traversable

Functional

  • Expression-oriented (no statements at all)
  • Functions
    • Functions are ordinary values
    • Anonymous functions
    • Currying
    • Function composition
    • Higher-order functions
    • Partial application
    • Pure functions
    • Recursion
      • Tail recursion
    • Type declarations & annotations
  • Immutability
  • Pattern matching
    • Wildcards
    • Guard clauses
  • Type inference
    • Polymorphism by default

General

  • Asynchronous programming
  • Collections
    • Collections: combining
    • Collections: filtering (filter)
    • Collections: mapping (Functor)
    • Collections: ordering (sort)
    • Collections: reducing (Foldable. Traversable)
    • Polymorphism
    • Lists
    • Ranges (Enum + range syntax)
    • List comprehensions
  • Comparison
    • Equality (Eq)
    • Ordering (Ord, Ordering)
  • Concurrency
  • Parallelism
  • Conditionals
    • Boolean logic
    • Conditionals: if
  • Conversions
    • Explicit
    • Implicit
  • Enumeration
  • Exceptions
  • Numbers
    • Arithmetic overflow
    • Bitwise manipulation
    • Math operators
  • Resources
    • Resource allocation
  • Scoping
    • Imports
    • Modules
    • Namespaces
    • Shadowing
    • Visibility (export or not)
  • Whitespace significant
  • String formatting
  • Values
    • Definitions

Types

  • Booleans
  • Characters
  • Collections
    • Arrays
    • Lists
    • Maps
    • Queues
    • Sets
    • Stacks
  • Algebraic data types
  • Numbers (Num & Co.)
    • Floating point numbers
    • Signed integers (Int, Integer)
    • Unsigned integers (Natural)
  • Maybe
  • Records
  • Either
  • Strings
  • Tuples
  • Unit (())