From mboxrd@z Thu Jan 1 00:00:00 1970 From: Major A Subject: Bug: Babel: haskell code evaluation inconsistency [7.7 (release_7.7.160.g3e33)] Date: Sat, 20 Aug 2011 00:38:52 +0200 Message-ID: <20110819223851.GA3315@discus> Mime-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: quoted-printable Return-path: Received: from eggs.gnu.org ([140.186.70.92]:54428) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QuXiM-0005bV-Ie for emacs-orgmode@gnu.org; Fri, 19 Aug 2011 18:38:59 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1QuXiL-0007gB-B3 for emacs-orgmode@gnu.org; Fri, 19 Aug 2011 18:38:58 -0400 Received: from out2.smtp.messagingengine.com ([66.111.4.26]:39427) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QuXiL-0007g7-6s for emacs-orgmode@gnu.org; Fri, 19 Aug 2011 18:38:57 -0400 Received: from compute4.internal (compute4.nyi.mail.srv.osa [10.202.2.44]) by gateway1.messagingengine.com (Postfix) with ESMTP id 1277020F52 for ; Fri, 19 Aug 2011 18:38:57 -0400 (EDT) Received: from cirrus (dslb-092-074-177-167.pools.arcor-ip.net [92.74.177.167]) by mail.messagingengine.com (Postfix) with ESMTPSA id 873F79000EE for ; Fri, 19 Aug 2011 18:38:55 -0400 (EDT) Content-Disposition: inline List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: emacs-orgmode@gnu.org 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=E1s 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: =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D (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) (gnuplo= t . 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-defaul= t org-tab-first-hook '(org-hide-block-toggle-maybe org-src-native-tab-comm= and-maybe org-babel-hide-result-toggle-maybe) org-src-mode-hook '(org-src-babel-configure-edit-buffer org-src-mode-con= figure-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-li= nk-modifiers) org-mode-hook '(#[nil "\300\301\302\303\304$\207" [org-add-hook change-m= ajor-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-a= ll 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-safel= y-maybe) org-confirm-elisp-link-function 'yes-or-no-p org-export-interblocks '((lob org-babel-exp-lob-one-liners) (src org-bab= el-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-se= lect-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-expor= t-blocks-format-comment t) (ditaa org-export-blocks-format-ditaa nil) (dot org-export-blo= cks-format-dot nil)) ) =20