Simple task management application inspired by TodoMVC; written for the first part of my bachelor thesis Comonads for User Interfaces based on Phil Freeman's Comonads as spaces.
This simple application demonstrates three types of UIs modelled with three different comonads, namely:
- the
Store
comonad: models a general architecture where every component fully exposes its state for read and write operations; - the
Moore i
comonad: isomorphic toCofree ((->) i)
orTraced [i]
, this comonad models the Elm architecture where user component inputs are given by a typei
; - the
Cofree f
comonad: models an object-oriented architecture similar to that of Halogen.
We have implemented local storage in the browser for saving tasks for all UI examples. In the Moore
example, however, it is still unclear what could be the best method for applying effects when of a component action (as the component state is private). We have used an ad hoc approach by replicating a save
function when of every user action.
In order to build this application one must have the PureScript compiler (version 0.11.7) installed, as well as the npm and bower tools for package management.
After installing the prerequisites, simply run
make