   (save-buffer)
   (let ((file (intero-path-for-ghci (intero-buffer-file-name))))
     (intero-with-repl-buffer prompt-options
-      (comint-simple-send
-       (get-buffer-process (current-buffer))
-       (concat ":load " file)))))
+      (if (or (not intero-repl-last-loaded)
+	      (not (equal file intero-repl-last-loaded)))
+	  (progn
+	    (comint-simple-send
+	     (get-buffer-process (current-buffer))
+	     (concat ":load " file))
+	    (setq intero-repl-last-loaded file))
+	(comint-simple-send
+	 (get-buffer-process (current-buffer))
+	 ":reload")))))
 
 (defun intero-repl-eval-region (begin end &optional prompt-options)
   "Evaluate the code in region from BEGIN to END in the REPL.

use project-wide intero-stack-yaml when nil, otherwise uses
stack's default)."
  (setq intero-targets targets)
  (when stack-yaml
    (setq intero-stack-yaml stack-yaml))
  (when prompt-options


(defvar-local intero-targets (list)
  "Targets used for the stack process.")

(defvar-local intero-repl-last-loaded nil
  "Last loaded module in the REPL.")

(defvar-local intero-start-time nil
  "Start time of the stack process.")
