Contents
TypeQuux
Two Quick Examples
Constraints help you abstract over structure
Arbitrary Arity Zips
Pre Requisites
Usage
Church Encoding of Booleans
Conjunction
Disjunction
Negation
Exclusive Or
Material Implication
Equivalence
Value Conversion
Peano Numbers
Addition
Multiplication
Exponentiation
Factorial
Comparators
Subtraction
Value Conversion
Dense Numbers
Increment
Decrement
Left Shift
Right Shift
Addition
Multiplication
Exponentiation
Comparators
Subtraction
Value Representation
Type Sets
Include
Contains
Remove
Union
Size
Equivalence
Type Maps
Add
Contains
Get
Remove
Union
Keyset
Size.
Natural Transformations
Construction
Composition
Conversion to monomorphic function values
Type-Unions and Exclusions
Type Unions
Type Exclusions
Type Hierarchy Unions
Type Hierarchy Exclusions
Singleton Types for Literals
Covariant Heterogenous Lists
Covariance
You can concatenate them
You can reverse them
They support value level length
You can select an element using an integer index
You can drop elements.
You can take elements.
You can update individual elements
You can remove an element
You can map an element
You can flatmap an element
You can insert an element.
You can insert a hlist.
You can split at an index
You can index an hlist with a type.
You can zip two hlists together.
If each element of a hlist is a tuple2, you can unzip it
You can apply natural transformations on hlists
You can down convert an hlist
You can apply an hlist of functions to a hlist of arguments.
You can perform arbitrary arity zips and zipwiths with hlists
Common View Operations
They can be converted to regular lists
Tuple Ops
You can cons an element onto a tuple.
You can append two tuples.
You can reverse tuples.
You can get an integer representation of its arity.
You can select an element using an integer index.
You can drop elements.
You can take elements.
You can update individual elements
You can remove an element
You can map an element
You can flatmap an element
You can insert an element.
You can insert a tuple.
You can split at an index
You can zip two tuples together.
If each element of a tuple is a Tuple2 , you can unzip it
You can apply natural transformations on tuples
You can down convert tuples
You can apply a tuple of functions to a tuple of arguments
You can perform arbitrary arity zips and zipwiths
Common View
They can be converted to regular lists
Sized Vectors
Construction
Value at an index
Update
Length
Reverse
Drop
Take
Slice
Map
Sorting
Split
Flattening
Zip and Unzip
Access to the backing vector
String Indexed Collections
Construction
Value corresponding to an index
Updates
Size
Conversion to maps
Records
Construction
Value corresponding to an index
Updates
Size
Conversion to maps
Conversion from classes
Understanding Constraints
Contents in Depth
Combined Pages
TypeQuux
— Contents in Depth