Theory explores the mathematical ideas that let us define, reason about, and reuse computer programs.
- ๐ชจ Lambda Calculus serves as the logic that forms the core of computation.
- ๐ฟ Haskell is a typed, lazy, purely functional โcalculus with syntax, types, and a rich standard library.
- โ๏ธ Syntaxย &ย Equations involve function equations, patterns, guards,
where/letscope. - ๐ก๏ธ Typeย System allows for polymorphism, type annotations, type inference, etc.
- ๐ Recursionย &ย Patternย Matching involves structural recursion, mutual recursion, and tail recursion.
- ๐ Listsย &ย Comprehensions give us builtโin list syntax, ranges, comprehensions, library helpers.
- โ๏ธ Syntaxย &ย Equations involve function equations, patterns, guards,
- ๐ฒ Algebraic Data Types are userโdefined product, sum, recursive and polymorphic types that include tuples & lists.
- ๐ฆ Product Types include โandโ data (records/tuples), pattern matching, and field labels.
- ๐ Sum Types cover โeither/orโ data, tagged unions, exhaustive case analysis.
- ๐ณ Recursive Types cover lists, trees, and structural induction.
- ๐ Polymorphic Data covers type constructors & parametric data (e.g.
Listย a,Treeย a).
- ๐ง HigherโOrder Functions bottles common iteration patterns.
- ๐ฟ Map applies a transformation to every element.
- ๐ Filter selects elements that satisfy a predicate.
- ๐ Foldr & Foldl reduce a list rightโ or leftโassociatively (sums, cats, reversals).
- โก๏ธ Function Combinators such as
flip,(.)provide etaโconversion & pointโfree style.
- ๐ Closures are the key mechanism that enforces static scoping.
- ๐๏ธ Type Classes enable ad-hoc polymorphism.
- ๐ Parsers convert raw input into a structured value like an AST.
- ๐ Monads let you chain actions while preserving context.