My original plan was to use 'Data.Maybe' instead of lists as the return type but I thought using lists instead of Maybes might be more interesting. I thought it might be nice to have the possibility non-deterministic return values, so I made the object evaluator return a list of possible results (possibly null, which was evaluated when a VoidExpr was given). However, this created all kinds of complexity in the code for a feature I am not even sure will be useful. I have gone through everything and replaced lists with Maybes in every situation where an expression might be a VoidExpr. It hasn't solved my the current bug I am working on yet, but it should be much easier to track down the source of the problem now.