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				
