Re: [O] Bug: Babel Haskell mode [8.0.3 (8.0.3-30-g56b864-elpa @ /Users/ix/.emacs.d/elpa/org-20130610/)]
Hi Eric, Thanks for investigating this. You got it! The blooming prompt! As you say the comint parser expects Prelude and I have customised my prompt in .ghci (also this wouldn't work with module loads like :m +Mymodule.Foo as this changes the ghci prompt). BTW if I use a unicode sequence for the prompt (like a greek lambda as a few knights of the lambda calculus do) then accept-process-output hangs! Well at least that's me fixed! Would it be possible for comint to learn the prompt by sending an empty line and then adapting? -- It would need to do this every time it sees a :command and at startup. Of course this is ghci specific. Or is the answer to write an evaluation server for ghc with a well defined client API? Then Haskell integration gets a lot easier -- this would be like slime (common-lisp) for Haskell. Might be worth an enquiry on the Haskell list as there is a Haskell API that might cover the requirement. Simon Beaumont --- On 13 Jun 2013, at 06:18, Eric Schulte schulte.e...@gmail.com wrote: Simon Beaumont si...@datalligator.com writes: Well that's really odd: I modded the paths in init.el and did the following: emacs -Q -l init.el foo.org When I eval'ed the code block in foo.org (twice) I still get message: Code block returned no value I've attached the inferior haskell buffer and all relevant files. (add-to-list 'load-path ~/.emacs.d/elpa/haskell-mode-20130610.152) I thought maybe it could be a difference between our haskell modes, so I switched to the latest available through my elpa (haskell-mode-13.6), and I still see the correct behavior. GHClet fac n = product [1..n] [(x,fac x) | x - [0..11]] org-babel-haskell-eoe i, version 7.6.3: http://www.haskell.org/ghc/ :? for help Loading package ghc-prim ... linking ... done. Loading package integer-gmp ... linking ... done. Loading package base ... linking ... done. [(0,1),(1,1),(2,2),(3,6),(4,24),(5,120),(6,720),(7,5040),(8,40320),(9,362880),(10,3628800),(11,39916800)] org-babel-haskell-eoe let fac n = product [1..n] [(x,fac x) | x - [0..11]] org-babel-haskell-eoe [(0,1),(1,1),(2,2),(3,6),(4,24),(5,120),(6,720),(7,5040),(8,40320),(9,362880),(10,3628800),(11,39916800)] org-babel-haskell-eoe My *haskell* buffer looks different then yours. Namely I have Prelude where as you just have . I don't know if this is significant. Maybe you've customized your ghci prompts in such a way that the comint functions can no longer recognize where output begins? , | GHCi, version 7.6.3: http://www.haskell.org/ghc/ :? for help | Loading package ghc-prim ... let fac n = product [1..n] | [(x,fac x) | x - [0..11]] | org-babel-haskell-eoe | linking ... done. | Loading package integer-gmp ... linking ... done. | Loading package base ... linking ... done. | Prelude Prelude [(0,1),(1,1),(2,2),(3,6),(4,24),(5,120),(6,720),(7,5040),(8,40320),(9,362880),(10,3628800),(11,39916800)] | Prelude org-babel-haskell-eoe | Prelude let fac n = product [1..n] | [(x,fac x) | x - [0..11]] | org-babel-haskell-eoe | Prelude [(0,1),(1,1),(2,2),(3,6),(4,24),(5,120),(6,720),(7,5040),(8,40320),(9,362880),(10,3628800),(11,39916800)] | Prelude org-babel-haskell-eoe | Prelude ` I'm not sure what else this could be. One option would be to instrument `org-babel-execute:haskell' or `org-babel-comint-with-output' with edebug, and then step through evaluation to see if you can pinpoint where the problem lies. Hope this helps, -- Eric Schulte http://cs.unm.edu/~eschulte
Re: [O] Bug: Babel Haskell mode [8.0.3 (8.0.3-30-g56b864-elpa @ /Users/ix/.emacs.d/elpa/org-20130610/)]
Well that's really odd: I modded the paths in init.el and did the following: emacs -Q -l init.el foo.org When I eval'ed the code block in foo.org (twice) I still get message: Code block returned no value I've attached the inferior haskell buffer and all relevant files. init.el Description: Binary data foo.org Description: Binary data GHClet fac n = product [1..n] [(x,fac x) | x - [0..11]] org-babel-haskell-eoe i, version 7.6.3: http://www.haskell.org/ghc/ :? for help Loading package ghc-prim ... linking ... done. Loading package integer-gmp ... linking ... done. Loading package base ... linking ... done. [(0,1),(1,1),(2,2),(3,6),(4,24),(5,120),(6,720),(7,5040),(8,40320),(9,362880),(10,3628800),(11,39916800)] org-babel-haskell-eoe let fac n = product [1..n] [(x,fac x) | x - [0..11]] org-babel-haskell-eoe [(0,1),(1,1),(2,2),(3,6),(4,24),(5,120),(6,720),(7,5040),(8,40320),(9,362880),(10,3628800),(11,39916800)] org-babel-haskell-eoe -- Looks like we are on the same versions of emacs and ghc: ix@psi(0) [re](4843) emacs --version GNU Emacs 24.3.1 Copyright (C) 2013 Free Software Foundation, Inc. GNU Emacs comes with ABSOLUTELY NO WARRANTY. You may redistribute copies of Emacs under the terms of the GNU General Public License. For more information about these matters, see the file named COPYING. ix@psi(0) [re](4844) ghc --version The Glorious Glasgow Haskell Compilation System, version 7.6.3 Org-mode version 8.0.3 (8.0.3-30-g56b864-elpa @ /Users/ix/.emacs.d/elpa/org-20130610/) As far as I can tell the raw data from inferior-haskell mode is returned but the parsing returns null… the raw value from: (raw (org-babel-comint-with-output (session org-babel-haskell-eoe t full-body) (insert (org-babel-trim full-body)) (comint-send-input nil t) (insert org-babel-haskell-eoe) (comint-send-input nil t))) ___ ( [(0,1),(1,1),(2,2),(3,6),(4,24),(5,120),(6,720),(7,5040),(8,40320),(9,362880),(10,3628800),(11,39916800)] \org-babel-haskell-eoe\ ) - (results (mapcar #'org-babel-haskell-read-string (cdr (member org-babel-haskell-eoe (reverse (mapcar #'org-babel-trim raw))) but results is nil __ I might be worth noting I am running on OS X not Linux but the raw data looks reasonable to me… Simon Beaumont On 10 Jun 2013, at 23:53, Eric Schulte schulte.e...@gmail.com wrote: Simon Beaumont si...@datalligator.com writes: Whenever I try and evaluate the Haskell code block I get: Code block returned no value. #+begin_src haskell :results value let fac n = product [1..n] [(x,fac x) | x - [0..11]] #+end_src #+results: I can't reproduce this problem. With a minimal emacs config started with -Q, and loading the attached init.el file (you'll have to update the paths to work with your system). init.el I'm able to execute the following Org-mode file returning a table of results as expected (although I have to execute it twice, presumably to clear out some cruft at the beginning of the haskell session). #+begin_src haskell let fac n = product [1..n] [(x,fac x) | x - [0..11]] #+end_src I'm using $ emacs --version GNU Emacs 24.3.1 Copyright (C) 2013 Free Software Foundation, Inc. GNU Emacs comes with ABSOLUTELY NO WARRANTY. You may redistribute copies of Emacs under the terms of the GNU General Public License. For more information about these matters, see the file named COPYING. $ ghc --version The Glorious Glasgow Haskell Compilation System, version 7.6.3 Org-mode version 8.0.3 (release_8.0.3-215-g8e1e6f @ /home/eschulte/src/org-mode/lisp/) -- Eric Schulte http://cs.unm.edu/~eschulte
[O] Bug: Babel Haskell mode [8.0.3 (8.0.3-30-g56b864-elpa @ /Users/ix/.emacs.d/elpa/org-20130610/)]
Whenever I try and evaluate the Haskell code block I get: Code block returned no value. #+begin_src haskell :results value let fac n = product [1..n] [(x,fac x) | x - [0..11]] #+end_src #+results: I am using ghci as my haskell-program The Haskell source is correctly executed in the *haskell* inferior mode. let fac n = product [1..n] [(x,fac x) | x - [0..11]] org-babel-haskell-eoe [(0,1),(1,1),(2,2),(3,6),(4,24),(5,120),(6,720),(7,5040),(8,40320),(9,362880),(10,3628800),(11,39916800)] org-babel-haskell-eoe The raw binding receives appropriate data below but the parse is always null ... (defun org-babel-execute:haskell (body params) Execute a block of Haskell code. (let* ((session (cdr (assoc :session params))) (vars (mapcar #'cdr (org-babel-get-header params :var))) (result-type (cdr (assoc :result-type params))) (full-body (org-babel-expand-body:generic body params (org-babel-variable-assignments:haskell params))) (session (org-babel-haskell-initiate-session session params)) ;; ++ we get something like the above here (raw (org-babel-comint-with-output (session org-babel-haskell-eoe t full-body) (insert (org-babel-trim full-body)) (comint-send-input nil t) (insert org-babel-haskell-eoe) (comint-send-input nil t))) ;; ++ this is null (results (mapcar #'org-babel-haskell-read-string (cdr (member org-babel-haskell-eoe (reverse (mapcar #'org-babel-trim raw))) ... What am I doing wrong? Thanks for any assistance to fix this - what should we be getting in results? _ Emacs : GNU Emacs 24.3.1 (x86_64-apple-darwin12.3.0) of 2013-05-04 on psi Package: Org-mode version 8.0.3 (8.0.3-30-g56b864-elpa @ /Users/ix/.emacs.d/elpa/org-20130610/) current state: == (setq org-tab-first-hook '(org-hide-block-toggle-maybe org-src-native-tab-command-maybe org-babel-hide-result-toggle-maybe org-babel-header-arg-expand) org-speed-command-hook '(org-speed-command-default-hook org-babel-speed-command-hook) org-occur-hook '(org-first-headline-recenter) org-metaup-hook '(org-babel-load-in-session-maybe) org-confirm-shell-link-function 'yes-or-no-p org-after-todo-state-change-hook '(org-clock-out-if-current) org-src-mode-hook '(org-src-babel-configure-edit-buffer org-src-mode-configure-edit-buffer) org-agenda-before-write-hook '(org-agenda-add-entry-text) org-babel-pre-tangle-hook '(save-buffer) 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-cycle-hook '(org-cycle-hide-archived-subtrees org-cycle-hide-drawers org-cycle-hide-inline-tasks org-cycle-show-empty-lines org-optimize-window-after-visibility-change) org-babel-tangle-lang-exts '((haskell . hs) (python . py) (emacs-lisp . el)) org-confirm-elisp-link-function 'yes-or-no-p org-metadown-hook '(org-babel-pop-to-session-maybe) org-babel-load-languages '((python . t) (R . t) (haskell . t) (emacs-lisp . t)) org-clock-out-hook '(org-clock-remove-empty-clock-drawer) )