Ideas are the soft currency of academia. On this page we maintain a list of the theory and practice of our ideas, and other practices.
Constrained Type-Class Instances
In Haskell, there are many data types that could be made instances of standard type
classes such as
Monad, were it not for the presence of type-class
constraints on the operations on that data type.
This is a frustrating problem in practice, because there is a considerable amount of support and infrastructure for standard type classes that these data types cannot use.
We call this the Constrained-Type-Class Problem.
We are a research lab, working on funded research, and discovering things that were not previous known.
Observable Sharing is where the sharing implicit in a set of data-structures can be observed.
The Remote Monad Design Pattern
The remote monad design pattern is a way of making Remote Procedure Calls (RPCs), and other calls that leave the Haskell eco-system, considerably less expensive. The idea is that, rather than directly call a remote procedure, we instead give the remote procedure call a service-specific monadic type, and invoke the remote procedure call using a monadic “send” function. Specifically, A remote monad is a monad that has its evaluation function in a remote location, outside the local runtime system.
The worker/wrapper transformation is a technique for transforming a computation of one type into a worker of a different type, together with a wrapper that acts as an impedance matcher between the original and new computations. The technique can be used to improve the performance of functional programs by improving the choice of data structures used.