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