whenDialect :: Dialect
            -> (Exp -> R r Exp)
            -> Exp
            -> R r Exp
whenDialect dialect f p = do
    flags <- getFlags
    if (fromLJust fDialect flags == dialect)
      then f p
      else return p
whenDialect :: Dialect
            -> (Exp -> R r Exp)
            -> Exp
            -> R r Exp
whenDialect dialect f p = do
    flags <- getFlags
    if (fromLJust fDialect flags == dialect)
      then f p
      else return p
whenDialect dialect f p = do
    flags <- getFlags
    if (fromLJust fDialect flags == dialect)
      then f p
      else return p