Skip to content

Latest commit

 

History

History
100 lines (90 loc) · 2.2 KB

concepts.md

File metadata and controls

100 lines (90 loc) · 2.2 KB

Haskell reference

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 (())