Function: org-babel-haskell-execute

org-babel-haskell-execute is a byte-compiled function defined in ob-haskell.el.gz.

Signature

(org-babel-haskell-execute BODY PARAMS)

Documentation

Execute Haskell BODY according to PARAMS.

This function should only be called by org-babel-execute:haskell.

Source Code

;; Defined in /usr/src/emacs/lisp/org/ob-haskell.el.gz
(defun org-babel-haskell-execute (body params)
  "Execute Haskell BODY according to PARAMS.
This function should only be called by `org-babel-execute:haskell'."
  (let* ((tmp-src-file (org-babel-temp-file "Haskell-src-" ".hs"))
         (tmp-bin-file
          (org-babel-process-file-name
           (org-babel-temp-file "Haskell-bin-" org-babel-exeext)))
         (cmdline (cdr (assq :cmdline params)))
         (cmdline (if cmdline (concat " " cmdline) ""))
         (flags (cdr (assq :flags params)))
         (flags (mapconcat #'identity
                           (if (listp flags)
                               flags
                             (list flags))
			   " "))
         (libs (org-babel-read
                (or (cdr (assq :libs params))
                    (org-entry-get nil "libs" t))
                nil))
         (libs (mapconcat #'identity
                          (if (listp libs) libs (list libs))
                          " ")))
    (with-temp-file tmp-src-file (insert body))
    (org-babel-eval
     (format "%s -o %s %s %s %s"
             org-babel-haskell-compiler
	     tmp-bin-file
	     flags
	     (org-babel-process-file-name tmp-src-file)
	     libs)
     "")
    (let ((results (org-babel-eval (concat tmp-bin-file cmdline) "")))
      (when results
        (setq results (org-trim (org-remove-indentation results)))
        (org-babel-reassemble-table
         (org-babel-result-cond (cdr (assq :result-params params))
	   (org-babel-read results t)
	   (let ((tmp-file (org-babel-temp-file "Haskell-")))
	     (with-temp-file tmp-file (insert results))
	     (org-babel-import-elisp-from-file tmp-file)))
         (org-babel-pick-name
	  (cdr (assq :colname-names params)) (cdr (assq :colnames params)))
         (org-babel-pick-name
	  (cdr (assq :rowname-names params)) (cdr (assq :rownames params))))))))