Commit Graph

4 Commits (master)

Author SHA1 Message Date
James T. Martin 8a1fad57df
Redefine bifunctors in terms of product categories. 2021-03-01 22:20:17 -08:00
James T. Martin d90d3ad679
Rewrite and generalize most of the library; partial LinearTypes support.
I had to move back to explicit arguments rather than associated types
as my representation of categories because a functor may be a functor
in multiple categories (e.g. ((,) a) is a functor in both the category
of linear and intuitionistic implication). This also allowed me to
get rid of some bad boilerplate involving `(:~:)` and some related issues.

I also finally managed to get Monads as monoids in the category of endofunctors again.
I don't recall what prevented me from doing it in the last iteration,
but I think it's probably working now. It could just be that I
understand the theory better and it's easier for me to get right now.

There's still some unimplemented stuff that I'd like,
pretty bad usability issues that I'd like to work around,
and a dire lack of documentation. I intend to work on all that soon.

The stack stuff has been removed because stackage doesn't have GHC 9 yet,
and the template-haskell stuff has been removed until I can rewrite it,
seeing as it was essentially useless as it was.

The LinearTypes support is very incomplete, but it's supported in some places
and I don't think I'd have much trouble expanding to support it in general;
I just haven't had much time to experiment with it yet.
2021-03-01 02:21:28 -08:00
James T. Martin 4566b6526f
Ambiguous types are no longer necessary. Proxies are used instead. 2020-08-15 13:20:33 -07:00
James T. Martin 7dde895ef2
Add GitHub CI build workflow. 2020-08-14 20:14:08 -07:00