categorifier
categorifier copied to clipboard
Interpret Haskell programs into any cartesian closed category.
Currently use of `show` may lead to primitive type errors, for instance (Extricated from https://kitty-hawk.atlassian.net/browse/SW-3366)
In some cases, we can have complex composition operator application like `((f . g) . (h . (i. j))` which is equivalent to `f . g . h . i...
as listed in https://github.com/conal/concat/blob/master/classes/src/ConCat/AltCat.hs#L558, there are many cat-theory law-based rules which should be used by our simplifier. When custom rule simplifier is implemented, we need to install those rules into...
We should have tests that ensure that incorrect use of the Categorifier plugin produce appropriate failures at build-time. E.g., - converting a type that is missing a necessary instance, -...
Right now `categorize` simply gets stuck in a loop when we try to categorize a mutually-recursive function. I think the problem is tied to inlining, so it would be great...
With GHC 8.10, there is a new `dynflagsPlugin`. We should use that to set the flags we require for categorification. We should also 1. warn when we had to enable...
We use presimplifier to support partial applications of `Categorify.expression` hidden inside a wrapper function, like this: ```haskell preApply :: (a -> b) -> a `c` b preApply = Categorify.expression {-#...
Currently, something like uncurry (+) requires a CCC, but, it actually expands to uncurry . curry . plusC, which should be simplifiable to plusC, which only requires a Cartesian category...
Currently Maker is just designed for generate CoreExpr for specified functions in target category, but does not contain meta-information (module name for example). So we cannot use such information for...
We introduce some category-theoretic rules like `f . id = f` when constructing expression in target category like `mkCompose'`. By nature, such expressions can be scattered here and there in...