Elementary Lifting Operations for Realm-Like Structures
Florian's thoughts about lifting operations:
Many data structures admit a lifting operation that allows to map a function over the values "stored" in that data structure. Examples:
- Lists
- Tuples
- Functions (by applying another function to the values of the first function)
-> Any type in Haskell in the Functor
class (via fmap :: (a -> b) -> f a -> f b
) should admit such a data structure
Some non-Functor
-like examples:
- a\mapsto\{a\}
- \{a\}\mapsto a
- list \mapsto bag \mapsto set
- partial function f\mapsto total function over the domain of definition of f
- total function \mapsto partial functon over a larger domain
- algebraic structure A\mapsto carrier set of A
- list/vector/... \mapsto its i-th entry
- function defined on a generating set (e.g. basis of a vector space) \mapsto function on the whole structure (e.g. whole vector space)
- function defined on the constants of a theory \mapsto theory morphism
- a\mapsto[a] (modding out an equivalence relation on a set)
Edited by Marcel Schütz