Below, I have posted a case statement which is obviously full of repeated logic and nested matching. It needs to be refactored a bit, but before I do that I would like to get some opinions from some people with more Scala experience from me (an easy qualification I might add). Here's the mess:
def eval(env: Env, e: Expr): Expr = {
e match {