Remove a bit of redundant code
diff --git a/include/vm.h b/include/vm.h
index 71362c1..09383fe 100644
--- a/include/vm.h
+++ b/include/vm.h
@@ -34,6 +34,8 @@
   BcProgram program;
   BcParse parse;
 
+  BcProgramExecFunc exec;
+
   int filec;
   char** filev;
 
diff --git a/src/bc/vm.c b/src/bc/vm.c
index ad889bd..b2b7e7e 100644
--- a/src/bc/vm.c
+++ b/src/bc/vm.c
@@ -82,9 +82,6 @@
   BcStatus status;
   const char *file;
   char *data;
-  BcProgramExecFunc exec;
-
-  exec = bcg.bc_code ? bc_program_print : bc_program_exec;
 
   file = vm->filev[idx];
   vm->program.file = file;
@@ -156,7 +153,7 @@
 
   if (BC_PARSE_CAN_EXEC(&vm->parse)) {
 
-    status = exec(&vm->program);
+    status = vm->exec(&vm->program);
 
     if (status) goto read_err;
 
@@ -374,46 +371,25 @@
 
     if (BC_PARSE_CAN_EXEC(&vm->parse)) {
 
-      if (!bcg.bc_code) {
+      status = vm->exec(&vm->program);
 
-        status = bc_program_exec(&vm->program);
+      if (status) {
+        bc_error(status);
+        goto exit_err;
+      }
 
-        if (status) {
-          bc_error(status);
-          goto exit_err;
-        }
+      if (bcg.bc_interactive) {
 
-        if (bcg.bc_interactive) {
+        fflush(stdout);
 
-          fflush(stdout);
-
-          if (bcg.bc_signal) {
-            status = bc_vm_signal(vm);
-            fprintf(stderr, "%s", bc_program_ready_prompt);
-          }
-        }
-        else if (bcg.bc_signal) {
+        if (bcg.bc_signal) {
           status = bc_vm_signal(vm);
-          goto exit_err;
+          fprintf(stderr, "%s", bc_program_ready_prompt);
         }
       }
-      else {
-
-        bc_program_print(&vm->program);
-
-        if (bcg.bc_interactive) {
-
-          fflush(stdout);
-
-          if (bcg.bc_signal) {
-            status = bc_vm_signal(vm);
-            fprintf(stderr, "%s", bc_program_ready_prompt);
-          }
-        }
-        else if (bcg.bc_signal) {
-          status = bc_vm_signal(vm);
-          goto exit_err;
-        }
+      else if (bcg.bc_signal) {
+        status = bc_vm_signal(vm);
+        goto exit_err;
       }
     }
 
@@ -458,6 +434,7 @@
     return status;
   }
 
+  vm->exec = bcg.bc_code ? bc_program_print : bc_program_exec;
   vm->filec = filec;
   vm->filev = filev;