id,summary,reporter,owner,description,type,status,priority,milestone,component,version,resolution,keywords,cc
18,unification monad,kowey,somebody,"OK, it doesn't have to be a monad.  But I want to have some sort of abstraction that guarantees that when I do unification on something, the results from previous unification will be automatically propagated to that thing.  Seems like it should be fairly straightforward.  You could just model this as a state monad for example, and have the unification function get/put the substitutions state.

What may be annoying is having to write a monad transformer and slip it into our current MT stack.

The goal is to have something that makes our code easier to write, and less error-prone, while also staying cheap (we shouldn't be doing any needless traversals).",task,new,major,,core,,,,
