An experiment in porting my preferred ClojureScript architecture to Haskell