Index
A
- actions
- sequencing, with monad / Sequencing actions with Monad and Applicative
- sequencing, with applicative / Sequencing actions with Monad and Applicative
- Ad-hoc polymorphism
- about / Ad-hoc polymorphism
- class-based / Class-based ad-hoc polymorphism
- alternation-based versus. class-based / Alternation-based versus class-based
- dispatch / Polymorphic dispatch and the visitor pattern
- visitor pattern / Polymorphic dispatch and the visitor pattern
- parametric, unifying / Unifying parametric and ad-hoc polymorphism
- Ad-hoc polymorphism
- alternation-based / Alternation-based ad-hoc polymorphism
- algebraic types
- about / Types, pattern matching and polymorphism
- and pattern matching / Algebraic types and pattern matching
- recursive types / Recursive types
- applicative
- monad as / Monad as Applicative
- actions, sequencing with / Sequencing actions with Monad and Applicative
- applicative functor
- about / Applicative functor
- arrows
- about / Arrows
- implementing / Implementing an Arrow
- operators / Arrow operators
- monad arrows / Kleisli Arrows and Monad Arrows
- Kleisli arrows / Kleisli Arrows and Monad Arrows
- need for / Why Arrows?
- associated type synonyms
- about / Associated type synonyms, Associated type synonyms
- functional dependencies, using / Using functional dependencies
- versus functional dependencies / Associated types versus functional dependencies
- type (synonym) families / Type (synonym) families
- data families / Data families
B
- bind chain
- and monad / Monads and the bind chain
C
- currying functions
- about / Currying functions
- and composability / Currying and composability
- decoupling with / Decoupling with currying
D
- datatype-generic function
- writing / Writing a datatype-generic function
- data types abstraction
- about / Abstracting datatypes
- universal quantification / Universal quantification
- existential quantification / Existential quantification and abstract datatypes
- Phantom types / Phantom types
- Generalized algebraic data types (GADTs) / Generalized algebraic datatypes
- dependently-typed programming
- about / Dependently-typed programming
- and Haskell / Haskell and dependently-typed programming
- Dependently-typed programming languages / Pattern 6 – type laws
- d hoc datatype genericity / Pattern 4 – type-class polymorphism
- domain specific language (DSL) / Phantom types
- dynamic types / Dynamic types
E
- existential quantification / Existential quantification and abstract datatypes
- extensible-effects
- URL / Monad transformers
F
- foldable / Foldable
- Foldable Traversable in Prelude / Modernizing Haskell 98
- folding
- over lists / Folding over lists
- with monadic functions / Folding with monadic functions
- with monoids / Folding with Monoid
- foldr function
- URL / Folding over lists
- function
- behavior, decoupling / Decoupling behavior and modularizing code
- code, modularizing / Decoupling behavior and modularizing code
- functional dependencies
- versus associated type synonyms / Associated types versus functional dependencies
- Functional Reactive Programming
- URL / Why Arrows?
- functions
- about / Functions, types, and patterns
- function types abstraction
- RankNTypes / Abstracting function types: RankNTypes
- functor
- about / Functor
- applicative functor / Applicative functor
- monad as / Monad as Functor
- Functor-Applicative-Monad
- URL / Monad as Applicative
G
- Generalized algebraic data types
- Typecase pattern / The Typecase pattern
- Dynamic types / Dynamic types
- heterogeneous lists / Heterogeneous lists
- generic fold / Generic fold, Generic unfold and fold
- generic map / Generic map
- generic programming
- and type-level programming / Type-level and generic programming
- generic programming, patterns
- about / Patterns of generic programming
- functions / Patterns 1 and 2 – functions
- polymorphic types and functions / Pattern 3 – polymorphic types and functions
- meta-programming / Pattern 5 – meta-programming
- type laws / Pattern 6 – type laws
- datatype generic programming / Pattern 7 – datatype generic programming
- generic unfold / Generic unfold and fold
- GHC
- URL / Associated type synonyms
- GHC.Generics / GHC.Generics – a generic deriving mechanism
- Glasgow Haskell Compiler (GHC) / Derivable type-classes
H
- handle-based I/O
- URL / Imperative I/O
- about / Imperative I/O
- Haskell 98
- modernizing / Modernizing Haskell 98
- Haskell community
- URL / Type-level programming
- heterogeneous lists
- existentials used / Using existentials
- GADTs used / Using GADTs
- higher-kinded polymorphism
- about / Higher-kinded polymorphism
- higher-order functions (HOF)
- about / Higher-order functions, The Strategy pattern
- as first-class citizens / Functions as first-class citizens
- composing / Composing functions
- currying / Currying functions
- higher-order kinds
- about / Higher-order kinds
- Hinze
- URL / Dynamic types
I
- imperative I/O
- about / Imperative I/O
- IO
- as functor / I/O as a functor, applicative, and monad
- as applicative / I/O as a functor, applicative, and monad
- IO monad
- Iteratee I/O
- about / Resource management with bracket, Iteratee I/O
- URL / Iteratee I/O
- Iteratee / Iteratee, Enumerator
- enumerator / Enumerator
- iteratees, generated / Generalized iteratees, enumerators, and enumeratees
- enumerators, generated / Generalized iteratees, enumerators, and enumeratees
- enumeratees, generated / Generalized iteratees, enumerators, and enumeratees
- libraries / Iteratee I/O libraries
- libraries, URL / Iteratee I/O libraries
- I/O styles / Comparing the three styles of I/O
- Iterator pattern
- and Traversal / The traversal and the Iterator pattern
K
- kind polymorphism
- about / Kind polymorphism
- PolyKinds language extension / The PolyKinds language extension
- Kleisli arrows / Kleisli Arrows and Monad Arrows
L
- layers
- URL / Monad transformers
- lazy evaluation
- about / Lazy evaluation
- streams / Streams
- Lazy I/O
- about / Lazy I/O
- issues / The problems with lazy I/O
- Lens
- about / Lenses
- deriving / Deriving Lens
- tutorial, URL / Deriving Lens
- writing / Writing a Lens
- getters, composable / Composable getters and setters
- setters, composable / Composable getters and setters
- Traversal / Lens Traversal
- .Fold / Lens.Fold
- library / The Lens library
- Lens library
- URL / Phantom types
- Lightweight implementation of Generics and Dynamics (LIGD) / The sum of products style
M
- mapping
- over lists / Mapping over lists
- meta-programming
- about / Pattern 5 – meta-programming
- Derivable type classes / Derivable type-classes
- Generalized newtype deriving / Generalized newtype deriving
- monad
- about / Monad
- as functor / Monad as Functor
- as applicative / Monad as Applicative
- actions, sequencing with / Sequencing actions with Monad and Applicative
- and bind chain / Monads and the bind chain
- composing with / Composing with Monads
- transformers / Monad transformers
- monad arrows / Kleisli Arrows and Monad Arrows
- monadic function / Monad
- monadic functions
- folding with / Folding with monadic functions
- monads
- about / Monads
- composing / Composing monads and structuring programs
- monad transformers
- about / Monad transformers
- IO, in monad stacks / IO in Monad stacks
- stack composition, sequence / Sequence of stack composition
- monoids
- folding with / Folding with Monoid
N
- non-tail recursion / Non-tail recursion
O
- origami design patterns
- composite pattern / Origami design patterns
- iterator pattern / Origami design patterns
- visitor pattern / Origami design patterns
- builder pattern / Origami design patterns
- Origami programming
- about / Origami programming
- recursive knot, tying / Tying the recursive knot
- generic map / Generic map
- generic fold / Generic fold
- fold / Generic fold
- unfold / Generic fold
- generic unfold and fold / Generic unfold and fold
- origami design patterns / Origami design patterns
P
- parametric polymorphism
- about / Parametric polymorphism
- pattern matching
- and algebraic types / Algebraic types and pattern matching
- patterns
- strategy pattern / The Strategy pattern
- template pattern / The Template pattern
- iterator pattern / The Iterator pattern
- Phantom types
- URL / Phantom types
- PolyKinds language extension / The PolyKinds language extension
- polymorphism
- about / Polymorphism
- parametric polymorphism / Parametric polymorphism
- Ad-hoc polymorphism / Ad-hoc polymorphism
- ad-hoc polymorphism / Ad-hoc polymorphism
R
- RankNTypes / Abstracting function types: RankNTypes
- Reader Monad / Monads and the bind chain
- recursion
- about / Recursion
- non-tail recursion / Non-tail recursion
- tail recursion / Tail recursion
- abstracts recursion, folding / Folding abstracts recursion
- recursive knot
- tying / Tying the recursive knot
- recursive types
- about / Recursive types
- resource management
- with bracket / Resource management with bracket
S
- Scrap your boilerplate (SYB)
- about / Scrap your boilerplate, Scrap your boilerplate in context
- type-safe cast with typeable / Type-safe cast with Typeable
- type-safe function application / Type-safe function application
- shallow traversal, and data type-class / Shallow traversal and the Data type-class
- typeable, and data / Typeable and data
- streams
- about / Streams
- change, modeling with / Modeling change with streams
- lazy evil / Lazy evil
- sum of products style
- about / The sum of products style
- type representation / The sum of products type representation
- type and representation, translating between / Translating between the type and representation
- datatype-generic function, writing / Writing a datatype-generic function
- new datatype, adding / Adding a new datatype
- GHC.Generics / GHC.Generics – a generic deriving mechanism
T
- tacit programming / Composing functions
- tail recursion / Tail recursion
- Traversable
- about / Traversable
- and Iterator pattern / The traversal and the Iterator pattern
- Haskell 98, modernizing / Modernizing Haskell 98
- Traversable tree
- about / A Traversable Tree
- type-classes abstraction
- about / Abstracting type-classes
- multi-parameter type-classes / Multiparameter type-classes
- functional dependencies / Functional dependencies
- type-level programming
- about / Type-level programming
- term-level programs, promoting to / Promoting term-level programs to type-level
- closed type families / Closed type families
- history, in Haskell / The history of type-level programming in Haskell
- and generic programming / Type-level and generic programming
- type-safe cast
- with typeable / Type-safe cast with Typeable
- type-safe function application
- about / Type-safe function application
- Typecase pattern / The Typecase pattern
- type promotion
- about / Type promotion
- to kinds / Promoting types to kinds
U
- universal quantification / Universal quantification