Search papers, labs, and topics across Lattice.
This paper explores the concept of cofunctors as a model for partial implementations in system assembly, allowing for deferred backend choices such as data representations and algorithms. By framing cofunctors in this way, the authors highlight their utility in scenarios where immediate implementation is not feasible or desirable. The key finding is that cofunctors facilitate a flexible approach to system design, enabling developers to make state-dependent choices at a later stage without compromising on the integrity of the implementation.
Cofunctors enable a new paradigm of system design where backend choices can be deferred, enhancing flexibility in implementation.
A functor is a familiar model of an implementation, where every operation in a specification is assigned a concrete instantiation at the outset. But some tasks are less eager: we often want to assemble systems while leaving backend choices such as data representations and algorithms for later. We observe that cofunctors admit a direct reading as such partial implementations, which are implementations whose extra argument is a state-dependent family of deferred choices. While cofunctors (also called retrofunctors) are not novel, their conceptual and purposive reading in this manner appears to be