[Haskell-cafe] Haskell in Org Mode Babel

Chris Warburton chriswarbo at googlemail.com
Thu May 29 08:45:59 UTC 2014


Apologies for the incomplete email, the Gnus "send mail" keybinding is
the same as Org mode's "evaluate code"!

I was wondering if anyone has had success with using Haskell in Org
mode. I'm writing a blog post, where I can include a code block like
the following and Org mode will print the result underneath:

#+begin_src haskell
[1..10]
#+end_src

#+RESULTS:
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |

By default, "haskell" code blocks will be sent to GHCi, which means I
can't do top-level definitions:

#+begin_src haskell :results value
true  x y = x
false x y = y
if_ c t e = c t e
#+end_src

#+RESULTS:
: <interactive>:187:11: parse error on input `='

This can be worked around, but it's a little ugly and the "inferior
Haskell" comint mode doesn't strip the intermediate prompts properly:

#+begin_src haskell :prologue ":set +m" :results value both
let {true  x y = x;
     false x y = y;
     if_ c t e = c t e} in if_ true "then" "else"
#+end_src

#+RESULTS:
: *Main| *Main| "then"

I've tried saving code to a separate file, which Org mode calls
"tangling":

#+begin_src haskell :tangle yes
true  x y = x
false x y = y
if_ c t e = c t e
#+end_src

Then loading the code from the GHCi prompt:

#+begin_src haskell :results value both
:load test.hs
if_ true "then" "else"
#+end_src

However it seems to be a bit hit-and-miss whether this will load the code.

How do others do this, if at all?

Cheers,
Chris


More information about the Haskell-Cafe mailing list