categorifier
categorifier copied to clipboard
Interpret Haskell programs into any cartesian closed category.
I don't think we have a test case for this part of the code ```haskell Plugins.Cast from0 Plugins.AxiomInstCo {} | Plugins.isPredTy (Plugins.exprType from0) -> do inlined do ( \case Plugins.Cast...
There's a GHC function, [GhcPlugins.thNameToGhcName](https://hackage.haskell.org/package/ghc-8.10.7/docs/GhcPlugins.html#v:thNameToGhcName). This should be used instead of `Categorifier.Hierarchy.findName`.
In the `Plugins.Let (Plugins.NonRec v rhs) expr` case, currently the v's `OccInfo` is always `ManyOccs`, probably because we forget to `zapIdOccInfo` somewhere. If the `OccInfo` is accurate, we can obtain...
Currently `categorify` runs in `CategoryStack`, which doesn't include `CoreM`. This is because `categorify` is used as a rewrite rule, and the type of `ru_try` doesn't permit using `CoreM`. This means...
Handle unboxed tuples caused by `-funbox-strict-fields` (Extricated from https://kitty-hawk.atlassian.net/browse/SW-3652)
In Categorifier, we may try to interpret `/ @(Native Double)` to a category that doesn't support the `Native` newtype. This will fail, but if we catch that, we can specalize...
The plugin supports only a handful of coercions in `categorizeFun`. One in particular that crops up is `AxiomInstCo`. So far, `AxiomInstCo` has always been the result of a type class...
We use `coerceC` to model Core's casts. However, it introduces some problems. For one, it basically duplicates the functionality of `RepCat`, but for different types (`Coercible` ones). The other problem...
There is a change up with a crude version of this, but it needs to be more comprehensive and more controllable a number of improvements we should make: - control...
Once we inline a variable and categorify its unfolding, we should cache it so that the next time we see it, we don't need to re-do the categorification work. A/C:...