Hi again,

I want to use haskell code blocks in order to evaluate them.  The
problem is that, depending on what haskell interpreters are installed
on the computer, Babel will call a different interpreter to evaluate
the code with.  Also, the haskell interpreter interface appears to be
highly stateful and unreliable.

Here's an example -- ghc6 is installed, but not hugs:

#+begin_src haskell :results output
  import System.IO
  openFile "doesNotExist.ppt" ReadMode
#+end_src

#+results:
: Loading package ghc-prim ... linking ... done.
: Loading package integer-gmp ... linking ... done.
: Loading package base ... linking ... done.

The interesting thing is that this output only occurs on the first run
of the code -- if I hit C-cC-c again, the #+results: section will be
empty.

Now the same source, with hugs installed in addition to ghc6 -- the
source block is the same, but the output is very different:

#+results:
: Type :? for help
: ERROR - Syntax error in expression (unexpected keyword "import")

Again, if I press C-cC-c again, the first line of output ("Type :? for
help") is no longer present.

This is what I suggest:

- Do away with "haskell" as the keyword for haskell code blocks, just
  like graphviz blocks use "dot" instead of simply "graphviz".

- Introduce new keywords -- I propose at least "runghc", "ghci", and
  "hugs".  This is important since there are significant source-level
  differences (see above) between hugs and ghc and even between the
  compiler and interpreter from the same project (ghc and ghci).
  Without these, the progammer will never be able to predict how the
  code is evaluated and which compiler or interpreter they must code
  for.

- Make sure the incorporation of the output or the value is done
  correctly (also see my previous bug report for this).

Enough for today,

  András



Emacs  : GNU Emacs 23.3.1 (i486-pc-linux-gnu, GTK+ Version 2.24.3)
 of 2011-04-10 on raven, modified by Debian
Package: Org-mode version 7.7 (release_7.7.160.g3e33)

current state:
==============
(setq
 org-export-latex-after-initial-vars-hook '(org-beamer-after-initial-vars)
 org-speed-command-hook '(org-speed-command-default-hook 
org-babel-speed-command-hook)
 org-babel-load-languages '((asymptote . t) (ditaa . t) (dot . t) (gnuplot . t) 
(haskell . t) (latex . t) (octave . t)
                                           (R . t) (ruby . t) (scheme . t) (sh 
. t))
 org-metaup-hook '(org-babel-load-in-session-maybe)
 org-after-todo-state-change-hook '(org-clock-out-if-current)
 org-babel-tangle-lang-exts '(("ruby" . "rb") ("latex" . "tex") ("haskell" . 
"hs") ("asymptote" . "asy")
                                            ("emacs-lisp" . "el"))
 org-export-blocks-postblock-hook '(org-exp-res/src-name-cleanup)
 org-export-latex-format-toc-function 'org-export-latex-format-toc-default
 org-tab-first-hook '(org-hide-block-toggle-maybe 
org-src-native-tab-command-maybe org-babel-hide-result-toggle-maybe)
 org-src-mode-hook '(org-src-babel-configure-edit-buffer 
org-src-mode-configure-edit-buffer)
 org-confirm-shell-link-function 'yes-or-no-p
 org-export-first-hook '(org-beamer-initialize-open-trackers)
 org-agenda-before-write-hook '(org-agenda-add-entry-text)
 org-blank-before-new-entry nil
 org-babel-pre-tangle-hook '(save-buffer)
 org-cycle-hook '(org-cycle-hide-archived-subtrees org-cycle-hide-drawers 
org-cycle-show-empty-lines
                  org-optimize-window-after-visibility-change)
 org-export-preprocess-before-normalizing-links-hook 
'(org-remove-file-link-modifiers)
 org-mode-hook '(#[nil "\300\301\302\303\304$\207" [org-add-hook 
change-major-mode-hook org-show-block-all append local]
                  5]
                         #[nil "\300\301\302\303\304$\207"
                                  [org-add-hook change-major-mode-hook 
org-babel-show-result-all append local] 5]
                                                 org-babel-result-hide-spec 
org-babel-hide-all-hashes)
 org-ctrl-c-ctrl-c-hook '(org-babel-hash-at-point 
org-babel-execute-safely-maybe)
 org-confirm-elisp-link-function 'yes-or-no-p
 org-export-interblocks '((lob org-babel-exp-lob-one-liners) (src 
org-babel-exp-inline-src-blocks))
 org-clock-out-hook '(org-clock-remove-empty-clock-drawer)
 org-occur-hook '(org-first-headline-recenter)
 org-from-is-user-regexp nil
 org-export-preprocess-before-selecting-backend-code-hook 
'(org-beamer-select-beamer-code)
 org-confirm-babel-evaluate nil
 org-export-latex-final-hook '(org-beamer-amend-header org-beamer-fix-toc 
org-beamer-auto-fragile-frames
                                                              
org-beamer-place-default-actions-for-lists)
 org-metadown-hook '(org-babel-pop-to-session-maybe)
 org-export-blocks '((src org-babel-exp-src-block nil) (comment 
org-export-blocks-format-comment t)
                        (ditaa org-export-blocks-format-ditaa nil) (dot 
org-export-blocks-format-dot nil))
 )
 

Reply via email to