diff options
author | Dan Davison <davison@stats.ox.ac.uk> | 2010-10-21 12:03:28 +0100 |
---|---|---|
committer | Dan Davison <davison@stats.ox.ac.uk> | 2010-10-21 13:06:02 +0100 |
commit | 1ab30746dc09fe7f4f8df14445fe3483bc66f12e (patch) | |
tree | a6b418550e5fccbf4ecdc0fc14909a9801375f2d | |
parent | 02a10a2bdbd6b6225625585728ad4a610045208b (diff) | |
download | org-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.el | 36 |
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 |