Attempting to use Haskell to express operational semantics