emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: tsd@tsdye.com (Thomas S. Dye)
To: Andras Major <andras.g.major@gmail.com>
Cc: emacs-orgmode@gnu.org
Subject: Re: Babel woes
Date: Wed, 17 Aug 2011 07:37:00 -1000	[thread overview]
Message-ID: <m1d3g4lz2b.fsf@tsdye.com> (raw)
In-Reply-To: <CALPHr6xUKd2kk69Rzus19-S5-w1Oxn0EX7VmWfgtcLgA4y5-gA@mail.gmail.com> (Andras Major's message of "Wed, 17 Aug 2011 14:59:49 +0200")

Aloha Andras,

Andras Major <andras.g.major@gmail.com> writes:

> Hi everyone,
>
> I've been trying to use org-mode for report generation lately, and
> haven't really succeeded. Here's a list of issues I encounter:
>
> - Babel offers a way of generating a code block from the output or
>   value of a code block.  That new block, however, is forced to the
>   same language as the original block -- that is doesn't allow me, for
>   example, to use a Haskell block to create an asymptote figure which
>   then generates an image in the HTML or PDF export version.  Is there
>   a way around this limitation?

Perhaps you could chain code blocks?  Set your Haskell code block to
:results output and then pass it into the graphing function like this
example dot code block:

#+source: pst-to-fig
#+headers: :file pascals-triangle.pdf :cmdline -Tpdf
#+begin_src dot :var pst-vals=pst-to-dot :exports results
  graph {
    $pst-vals
  }
#+end_src

This is an example Eric Schulte developed.  The Haskell code block in
this instance would be pst-to-dot.

hth,
Tom

>
> - Ruby: is inf-ruby really required? Why can't I execute a ruby block
>   without it?
>
> - Haskell: there are at least two interpreters that babel will invoke,
>   depending on what is available (ghci and hugs), and those two are
>   incompatible in some areas (such as loading modules, where the
>   commands are different -- :add vs. :load). I haven't found a way of
>   + forcing the use of a specific interpreter;
>   + specifying command-line arguments to the interpreter (which would
>     eliminate the need for :add or :load).
>   This really makes using Haskell rather hit-and-miss, see below.
>
> - Haskell code usage is rather cumbersome: since Babel invokes an
>   interpreter rather than runghc, a Haskell block doesn't nearly have
>   the flexibility of a real Haskell program.  In particular, one can
>   only make definitions (portably) in the Haskell code by creating a
>   separate block which is tangled but not executed.  Another block,
>   which is executed, can then load the tangled module and use its
>   definitions (if it weren't for the problems described above and
>   below).
>
> - The handling of interpreted Haskell appears to be rather dodgy: If I
>   want to load a module (in ghci) and then evaluate some function,
>   then I run into real trouble.  None of my tests run at all when
>   first loaded into emacs, but if I execute some tests in a certain
>   order, it all starts working.  I haven't been able to figure out yet
>   what goes wrong and what "playing around" makes things work, but it
>   appears that
> #+begin_src haskell
>   :add SomeModule
>   someFunction
> #+end_src
>   will not work because the :add statement is ignored. If I put the
>   two lines in separate Haskell blocks and execute each one
>   separately, then things start to work.
>
> - I also tried using sbe to invoke a Haskell function from within a
>   table formula.  Here I usually get an error "ERROR - Undefined
>   variable "x"", which sometimes goes away rather magically (I'm not
>   sure what makes it go away), after which things work just fine.
>   Emacs-lisp blocks written in the same manner work out of the box.
>
> - Haskell uses a static type system, and there is no such thing as
>   automatic casting if a variable has the wrong type for a given
>   function.  Thus, if I evaluate the numbers of a table using Haskell
>   and sbe, and some values have a decimal dot and other (integer) ones
>   omit it, then one of these versions will throw an error.  Is there a
>   way of converting the values beforehand to a given type (say,
>   Double), only to make Haskell happy?
>
> Can anyone give me a hint of why these things don't work and whether
> I'm doing something wrong?
>
> Oh, I'm using emacs from Debian testing (23.2+1-7) and org from git
> (cloned today).
>
> Thanks,
>
>   András
>
>

-- 
Thomas S. Dye
http://www.tsdye.com

  parent reply	other threads:[~2011-08-17 17:37 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-08-17 12:59 Babel woes Andras Major
2011-08-17 13:51 ` Sebastien Vauban
2011-08-17 17:37 ` Thomas S. Dye [this message]
2011-08-19 12:59 ` Eric Schulte

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.orgmode.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=m1d3g4lz2b.fsf@tsdye.com \
    --to=tsd@tsdye.com \
    --cc=andras.g.major@gmail.com \
    --cc=emacs-orgmode@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).