   (setq intero-targets targets)
   (let ((arguments (intero-make-options-list intero-targets)))
     (insert (propertize
-             (format "Starting:\n  stack ghci %s\n" (mapconcat #'identity arguments " "))
+             (format "Starting:\n  stack ghci %s\n" (combine-and-quote-strings arguments))
              'face 'font-lock-comment-face))
     (let ((script (with-current-buffer (find-file-noselect (make-temp-file "intero-script"))
                     (insert ":set prompt \"\"


"
     (format "  stack ghci %s"
             (mapconcat #'identity
                        intero-arguments
                        " "))
     "

After fixing this problem, you could switch back to your code and

         (arguments options)
         (process (with-current-buffer buffer
                    (when debug-on-error
                      (message "Intero arguments: %s" (combine-and-quote-strings arguments)))
                    (message "Booting up intero ...")
                    (apply #'start-process "stack" buffer "stack" "ghci"
                           arguments))))
