The Haskell concept exercises are based on concepts. The list below contains the concepts that have been identified for the Haskell language.
- Strictness vs. nonstrictness ('laziness')
- Type classes
-
Functor,Applicative,Monad -
Semigroup,Monoid -
Foldable,Traversable
-
- 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
- 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)
- Equality (
- 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
- 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 (
())