How (if at all) does the exponential interpretation of (->) (a -> b as ba) generalize to categories other than Hask/Set? For example it would appear that the interpretation for the category of non-deterministic functions is roughly Kliesli [] a b as 2a * b (a -> b -> Bool).
Generalization of Exponential Type
447 views Asked by David Harrison At
1
There are 1 answers
Related Questions in HASKELL
- Typeclass projections as inheritance
- How to generate all possible matrices given a number n in Haskell
- Is there a way to get `cabal` to detect changes to non-Haskell source files?
- How to have fixed options using Option.Applicative in haskell?
- How can I create a thread in Haskell that will restart if it gets killed due to any reason?
- Automatic Jacobian matrix in Haskell
- Haskell writing to named pipe unexpectedly fails with `openFile: does not exist (No such device or address)`
- Why does Enum require to implement toEnum and fromEnum, if that's not enough for types larger than Int?
- Non-exhaustive patterns in function compress
- How to get terms names of GADT in Template Haskell?
- Implementing eval() function with Happy parser generator
- How to count the occurences of every element in a list in Haskell fast?
- In Haskell, what does `Con Int` mean?
- Extract a Maybe from a heterogeneous collection
- Haskell, Stack, importing module shows error "Module not found"
Related Questions in CATEGORY-THEORY
- How can I implement a Functor trait in Rust?
- Implementing the idea of category in C++ at compile time
- What is the name used in literature and libraries for the abstraction of "zero profunctors"
- Profunctor but with three contravariant parameters
- Bifunctors in Haskell vs in category theory
- What Category theory object makes Array in JavaScript chainable?
- initial and terminal object make the category unique?
- cats effect evaluates only the final for coprehension and ignores rest
- Monad and Functor law for Monad and Functor type class in Haskell
- Deriving a monad from a cofree comonad
- Is the type constructor `Maybe (BTree a)` a monad?
- How do I prove two applications of the absurd pattern result in the same in Cubical Agda?
- Is there a semigroup/monoid in the context of a monad?
- Can one simplify the Codensity monad on Maybe?
- In Scala cats-laws, why is the functor composition law different from canonical definition?
Related Questions in CATEGORY-ABSTRACTIONS
- typeorm inner join and where problem - BaseEntity model
- Haskell functor implementation dealing with "BOX"?
- Making mapped with category's Functor
- "Generalized arrows" and proc notation?
- How to define an instance of Data.Foldable.Constrained?
- Difference of constraints in Semigroup and Monoid instances
- Compatibility between contemporary Semigroupoid and Category.Constrained instances
- How to define an instance of Control.Functor.Constrained?
- Error trying to define type Relation [(a,b)] as an instance of Category class
- Why this structure-preserving "fmap" cannot be acepted in this Functor's class instance?
- Difficulty in defining the Relation type as an instance of the Category class
- Examples of Cartesian (Profunctor)?
- What is the difference between '.' and '<<<' when performing function composition?
- Is there a reason that `Functor` is not a superclass of `Category`?
- Common functionality for different types
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
The notion of exponential can be defined in general terms, beyond Hask/Set. A category with exponentials and products is called a cartesian closed category. This is a key notion in theoretical computer science since each c.c. category is essentially a model of the typed lambda calculus.
Roughly, in a cartesian closed category for any pair of objects
a,bthere exist:(a * b), and(b^ab)with morphisms
eval : (b^a)*a -> b(in Haskell:\(f,x) -> f x, AKA apply)f : (a*b)->c, there existsLf : a -> (c^b)(in Haskell:curry f)satisfying the equation "they enjoy in the lambda calculus", i.e., if
f : (a*b)->c, then:f = (Lf * id_a) ; evalIn Haskell, the last equation is:
f = \(x :: (a,b), y :: a) -> apply (curry f x, id y) where apply (g,z) = g zor, using arrows,
f = (curry f *** id) >>> apply where apply (g,z) = g z