lambda-ccc
lambda-ccc copied to clipboard
Convert lambda expressions to CCC combinators
The following optimization in `LambdaCCC.CCC` occasionally leads to non-terminating construction: ``` haskell Apply . (decompL -> g :. f) = (Apply :. g) . f ``` A triggering example in...
There's a good start already, as the expression `E` (in `LambdaCCC.Lambda`) and the conversion to biCCCs (`LambdaCCC.ToCCC`) are parametrized over a type constructor of primitives.
- Handle them in the representation and translation. - Check handling of `newtype`s, which are represented via a coercion.
By default, type variables in GHC are given kind `*`, i.e., the kind of types of _lifted_ values. Consequently, the polymorphic constructors and definitions in this project are restricted to...
I've been inlining the method into a selector function and the dictionary and its methods into a large structure, then converting to nested pairs, and then reifying, resulting in enormous...
The final `unshadow` in test/Auto.hss comes too late, after conversion of lambda-bound variables into reified form. At that time, variables aren't variables, so unshadowing doesn't help.
For casts (e.g., from `newtype`), how can I recognize which is the `encode` and which the `decode`, or is there a way I don't have to? Is there something about...
Inter-module access to reified definitions is a bit tricky. So far module interfaces are kept intact, including type signatures. Since reification produces a different type (`reifyE :: a -> E...