summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Davison <davison@stats.ox.ac.uk>2010-10-21 12:03:28 +0100
committerDan Davison <davison@stats.ox.ac.uk>2010-10-21 13:06:02 +0100
commit1ab30746dc09fe7f4f8df14445fe3483bc66f12e (patch)
treea6b418550e5fccbf4ecdc0fc14909a9801375f2d
parent02a10a2bdbd6b6225625585728ad4a610045208b (diff)
downloadorg-mode-1ab30746dc09fe7f4f8df14445fe3483bc66f12e.tar.gz
babel: haskell: New variable assignment scheme
* ob-haskell.el (org-babel-execute:haskell): Use generic expansion function (org-babel-expand-body:haskell): Delete function (org-babel-prep-session:haskell): Use variable assignment function (org-babel-variable-assignments:haskell): New function
-rw-r--r--lisp/ob-haskell.el36
1 files changed, 16 insertions, 20 deletions
diff --git a/lisp/ob-haskell.el b/lisp/ob-haskell.el
index 29ce2c0..8552b4d 100644
--- a/lisp/ob-haskell.el
+++ b/lisp/ob-haskell.el
@@ -59,23 +59,15 @@
(defvar org-babel-haskell-eoe "\"org-babel-haskell-eoe\"")
-(defun org-babel-expand-body:haskell (body params)
- "Expand BODY according to PARAMS, return the expanded body."
- (let ((vars (mapcar #'cdr (org-babel-get-header params :var))))
- (concat
- (mapconcat
- (lambda (pair) (format "let %s = %s"
- (car pair)
- (org-babel-haskell-var-to-haskell (cdr pair))))
- vars "\n") "\n" body "\n")))
-
(defun org-babel-execute:haskell (body params)
"Execute a block of Haskell code."
(let* ((processed-params (org-babel-process-params params))
(session (nth 0 processed-params))
(vars (nth 1 processed-params))
(result-type (nth 3 processed-params))
- (full-body (org-babel-expand-body:haskell body params))
+ (full-body (org-babel-expand-body:generic
+ body params
+ (org-babel-variable-assignments:haskell params)))
(session (org-babel-haskell-initiate-session session params))
(raw (org-babel-comint-with-output
(session org-babel-haskell-eoe t full-body)
@@ -125,18 +117,22 @@ then create one. Return the initialized session."
(defun org-babel-prep-session:haskell (session params)
"Prepare SESSION according to the header arguments in PARAMS."
(save-window-excursion
- (let ((pp (org-babel-process-params params))
- (buffer (org-babel-haskell-initiate-session session)))
+ (let ((buffer (org-babel-haskell-initiate-session session)))
(org-babel-comint-in-buffer buffer
- (mapc
- (lambda (pair)
- (insert (format "let %s = %s"
- (car pair)
- (org-babel-haskell-var-to-haskell (cdr pair))))
- (comint-send-input nil t))
- (nth 1 pp)))
+ (mapc (lambda (line)
+ (insert line)
+ (comint-send-input nil t))
+ (org-babel-variable-assignments:haskell params)))
(current-buffer))))
+(defun org-babel-variable-assignments:haskell (params)
+ "Return list of haskell statements assigning the block's variables"
+ (mapcar (lambda (pair)
+ (format "let %s = %s"
+ (car pair)
+ (org-babel-haskell-var-to-haskell (cdr pair))))
+ (mapcar #'cdr (org-babel-get-header params :var)) "\n"))
+
(defun org-babel-haskell-table-or-string (results)
"Convert RESULTS to an Emacs-lisp table or string.
If RESULTS look like a table, then convert them into an