what's the best environment for haskell work?

Do most people who work with haskell use emacs/vi/eclipse or something else?? Personal Note: I used gofer some 15 years ago. At that time I hacked up a emacs mode (I did not know of any then) along with some changes to gofer to have gofer inside emacs rather than vi inside gofer. Things have got more exciting now -- just trying to catch up!! [Note: My preferrred/default OS is debian-squeeze]

Rustom Mody
Do most people who work with haskell use emacs/vi/eclipse or something else??
Most people seem to use either Emacs, a vi-like editor or some other specialised editor (TextMate, etc.). Some people do use the Haskell editor yi (available on Hackage); there's also active development of the Haskell IDE "Leksah" as well as some Haskell interfaces for traditional IDEs like Eclipse and Visual Studio. -- Ivan Lazar Miljenovic Ivan.Miljenovic@gmail.com IvanMiljenovic.wordpress.com

leksah
2010/7/31 Johan Tibell
On Sat, Jul 31, 2010 at 12:07 PM, Rustom Mody
wrote: Do most people who work with haskell use emacs/vi/eclipse or something else??
I use Emacs and haskell-mode.
Johan
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe

On Windows, I've used cedit for various projects for years and was
delighted to discover that it comes with a Haskell syntax colouring
file.
See:
http://cedit.sourceforge.net/
It supports collections of project files and compiling directly from
the editor.
I also use Eclipse for (sigh) PHP projects but at least under Windows
the Eclipse support available for Haskell appears to be limited. For
example the older versions do not appear to have a way to jump
immediately to a function definition and I could not get the more
recent versions to work at all (Eclipse users, feel free to correct me
if I missed something.) Cedit does not have a jump-to-function feature
either but it is much smaller and in my experience more stable than
Eclipse under Windows.
Kevin
On Jul 31, 12:07 pm, Rustom Mody
Do most people who work with haskell use emacs/vi/eclipse or something else??
Personal Note: I used gofer some 15 years ago. At that time I hacked up a emacs mode (I did not know of any then) along with some changes to gofer to have gofer inside emacs rather than vi inside gofer.
Things have got more exciting now -- just trying to catch up!!
[Note: My preferrred/default OS is debian-squeeze] _______________________________________________ Haskell-Cafe mailing list Haskell-C...@haskell.orghttp://www.haskell.org/mailman/listinfo/haskell-cafe

Hi, Am Samstag, den 31.07.2010, 15:37 +0530 schrieb Rustom Mody:
Do most people who work with haskell use emacs/vi/eclipse or something else??
Personal Note: I used gofer some 15 years ago. At that time I hacked up a emacs mode (I did not know of any then) along with some changes to gofer to have gofer inside emacs rather than vi inside gofer.
Things have got more exciting now -- just trying to catch up!!
[Note: My preferrred/default OS is debian-squeeze]
I’m using vim myself, but the Debian Haskell Team has packaged leksah and it is available in squeeze. If you have any problems with the packaging, we would like to hear about them. (So far, we had zero feedback from leksah users on Debian, so I don’t know if there exist any) Greetings, Joachim -- Joachim "nomeata" Breitner mail: mail@joachim-breitner.de | ICQ# 74513189 | GPG-Key: 4743206C JID: nomeata@joachim-breitner.de | http://www.joachim-breitner.de/ Debian Developer: nomeata@debian.org

On Jul 31, 7:21 pm, Joachim Breitner
Hi,
Am Samstag, den 31.07.2010, 15:37 +0530 schrieb Rustom Mody:
Do most people who work with haskell use emacs/vi/eclipse or something else??
Personal Note: I used gofer some 15 years ago. At that time I hacked up a emacs mode (I did not know of any then) along with some changes to gofer to have gofer inside emacs rather than vi inside gofer.
Things have got more exciting now -- just trying to catch up!!
[Note: My preferrred/default OS is debian-squeeze]
I’m using vim myself, but the Debian Haskell Team has packaged leksah and it is available in squeeze. If you have any problems with the packaging, we would like to hear about them.
(So far, we had zero feedback from leksah users on Debian, so I don’t know if there exist any)
Greetings, Joachim
I guess I am going to start with emacs -- since that seems to work (re Johan Tibell above). However I do have an issue regarding debian packaging. At first I installed ghc This brought in ghc6 ghc6-doc libbsd-dev libgmp3-dev libgmpxx4ldbl I also added haskell98-report haskell98-tutorial darcs Then I discovered haskell-platform. I was pleased to discover that the link took me directly to the squeeze repos so there is no version mismatch between haskell-platorm and squeeze. apt-getting haskell-platform gave me alex cabal-install happy haskell-platform libghc6-cgi-dev libghc6-deepseq-dev libghc6-glut-dev libghc6-haskell-src-dev libghc6-html-dev libghc6-http-dev libghc6-hunit-dev libghc6-network-dev libghc6-opengl-dev libghc6-parallel-dev libghc6-parsec2-dev libghc6-quickcheck2-dev libghc6-stm-dev libghc6-xhtml-dev However when trying to compile ghc from source I got an error that wanted ghc6-prof So I got that Looking around in synaptic (gui for apt) I find that there are a large number of libghc-somethings that I still have not got. So then the question: Whats the real point of the haskell-platform package -- if specific libraries have to be got separately?

rustom
However I do have an issue regarding debian packaging.
At first I installed ghc This brought in
ghc6 ghc6-doc libbsd-dev libgmp3-dev libgmpxx4ldbl
I also added haskell98-report haskell98-tutorial darcs
Then I discovered haskell-platform. I was pleased to discover that the link took me directly to the squeeze repos so there is no version mismatch between haskell-platorm and squeeze.
apt-getting haskell-platform gave me
alex cabal-install happy haskell-platform libghc6-cgi-dev libghc6-deepseq-dev libghc6-glut-dev libghc6-haskell-src-dev libghc6-html-dev libghc6-http-dev libghc6-hunit-dev libghc6-network-dev libghc6-opengl-dev libghc6-parallel-dev libghc6-parsec2-dev libghc6-quickcheck2-dev libghc6-stm-dev libghc6-xhtml-dev
However when trying to compile ghc from source I got an error that wanted ghc6-prof So I got that
Why are you trying to compile GHC from source if you have a distribution package and are using that?
Looking around in synaptic (gui for apt) I find that there are a large number of libghc-somethings that I still have not got.
So then the question: Whats the real point of the haskell-platform package -- if specific libraries have to be got separately?
That Platform is a "starter kit"; there are way too many Haskell packages available for every distribution to ship all of them! (Well, it's possible, but infeasible due to the number of packages that are distro/OS specific, are no longer maintained, etc.). -- Ivan Lazar Miljenovic Ivan.Miljenovic@gmail.com IvanMiljenovic.wordpress.com

On Aug 1, 12:40 pm, Ivan Lazar Miljenovic
rustom
writes: However I do have an issue regarding debian packaging.
At first I installed ghc This brought in
ghc6 ghc6-doc libbsd-dev libgmp3-dev libgmpxx4ldbl
I also added haskell98-report haskell98-tutorial darcs
Then I discovered haskell-platform. I was pleased to discover that the link took me directly to the squeeze repos so there is no version mismatch between haskell-platorm and squeeze.
apt-getting haskell-platform gave me
alex cabal-install happy haskell-platform libghc6-cgi-dev libghc6-deepseq-dev libghc6-glut-dev libghc6-haskell-src-dev libghc6-html-dev libghc6-http-dev libghc6-hunit-dev libghc6-network-dev libghc6-opengl-dev libghc6-parallel-dev libghc6-parsec2-dev libghc6-quickcheck2-dev libghc6-stm-dev libghc6-xhtml-dev
However when trying to compile ghc from source I got an error that wanted ghc6-prof So I got that
Why are you trying to compile GHC from source if you have a distribution package and are using that?
Well... just stress testing my install but also I am interested in haskell and unicode (squiggol anyone?) so thought I'd muck around a bit in the sources. Maybe premature I guess :-) Actually I started with hugs (because I am a bit familiar with gofer sources) but now that it looks that the most action is on the ghc front I thought I'd look there. As of now I am getting comfortable with ghci inside emacs
Looking around in synaptic (gui for apt) I find that there are a large number of libghc-somethings that I still have not got.
So then the question: Whats the real point of the haskell-platform package -- if specific libraries have to be got separately?
That Platform is a "starter kit"; there are way too many Haskell packages available for every distribution to ship all of them!
(Well, it's possible, but infeasible due to the number of packages that are distro/OS specific, are no longer maintained, etc.).

On Sat, Jul 31, 2010 at 12:07 PM, Rustom Mody
Do most people who work with haskell use emacs/vi/eclipse or something else??
I mostly use kate, with a separate terminal window running ghci. I've tried to use leksah but some minor annoying things make it unusable for me. David.

I'm curious, what are those minor annoying things?
-----Original Message-----
From: haskell-cafe-bounces@haskell.org [mailto:haskell-cafe-bounces@haskell.org] On Behalf Of David Virebayre
Sent: Monday, August 02, 2010 13:11
To: Rustom Mody
Cc: haskell-cafe@haskell.org
Subject: Re: [Haskell-cafe] what's the best environment for haskell work?
On Sat, Jul 31, 2010 at 12:07 PM, Rustom Mody
Do most people who work with haskell use emacs/vi/eclipse or something else??
I mostly use kate, with a separate terminal window running ghci. I've tried to use leksah but some minor annoying things make it unusable for me. David. _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe

On Mon, Aug 2, 2010 at 4:12 PM, Phyx
I've tried to use leksah but some minor annoying things make it unusable for me. I'm curious, what are those minor annoying things?
Trying code completion in comments on string constants, for example. Code completion makes the text jump if you're editing near the bottom of the editor area. I like the "tocandy" feature but then it breaks alignment if you open the file in another editor. Something probably fixable by editing the candy file. I'am a bit lost between Workspace and Package, especially when all I want is write a quick single-source haskell program. That's all I can think of right now, I've exagerated a bit when I said "unusable". Leksah is going to be an awesome editor, it's just not ready yet for me. David

I use Leksah and have done since I started contributing to it. The best way to make it work for you is to use Leksah to fix what you don't like about Leksah ;-) Failing that giving good feedback about bugs and missing features is the next best thing. On 3 Aug 2010, at 18:48, David Virebayre wrote:
Trying code completion in comments on string constants, for example. Code completion makes the text jump if you're editing near the bottom of the editor area.
You could turn on Edit Prefs -> GUI Options -> Complete only on Hotkey Default hotkey is Ctrl+Space
I like the "tocandy" feature but then it breaks alignment if you open the file in another editor. Something probably fixable by editing the candy file.
Just out of interest which of the candy replacements caused problems. Some of them (such as ->) already are set to include spaces to pad out differences. You can turn candy off by unchecking Configuration -> To Candy Does your existing editor handle candy better? If so how?
I'am a bit lost between Workspace and Package, especially when all I want is write a quick single-source haskell program.
We are planning to improve this by adding a default workspace and/or adding messages to prompt users if they have not got a workspace or package open. Basically to get started on a app Workspace -> New Workspace (this file contains a list of packages to open) I think most users probably only ever need one workspace file. Next if you have a .cabal file already... Panes -> Workspace (to show the workspace pane) Right click in the workspace Pane and select Add Package Or if you want to create a new package... Package -> New Package Select a folder whose name matches the desired project name If you just click Save down the bottom you will get a very basic executable package with a Main module (but no main function) To switch between packages in your workspace just double click on it in the Workspace pane.
That's all I can think of right now, I've exagerated a bit when I said "unusable". Leksah is going to be an awesome editor, it's just not ready yet for me.
Thanks for the feedback, please let us know if you think of anything else. As well as the google forum we now also have #leksah on IRC. Hamish

This is slightly OT, but is there a way of getting some Emacs keybindings in Leksah? -deech On Wed, Aug 4, 2010 at 1:01 PM, Hamish Mackenzie < hamish.k.mackenzie@googlemail.com> wrote:
I use Leksah and have done since I started contributing to it. The best way to make it work for you is to use Leksah to fix what you don't like about Leksah ;-) Failing that giving good feedback about bugs and missing features is the next best thing.
On 3 Aug 2010, at 18:48, David Virebayre wrote:
Trying code completion in comments on string constants, for example. Code completion makes the text jump if you're editing near the bottom of the editor area.
You could turn on Edit Prefs -> GUI Options -> Complete only on Hotkey
Default hotkey is Ctrl+Space
I like the "tocandy" feature but then it breaks alignment if you open the file in another editor. Something probably fixable by editing the candy file.
Just out of interest which of the candy replacements caused problems. Some of them (such as ->) already are set to include spaces to pad out differences.
You can turn candy off by unchecking Configuration -> To Candy
Does your existing editor handle candy better? If so how?
I'am a bit lost between Workspace and Package, especially when all I want is write a quick single-source haskell program.
We are planning to improve this by adding a default workspace and/or adding messages to prompt users if they have not got a workspace or package open.
Basically to get started on a app Workspace -> New Workspace (this file contains a list of packages to open)
I think most users probably only ever need one workspace file.
Next if you have a .cabal file already... Panes -> Workspace (to show the workspace pane) Right click in the workspace Pane and select Add Package
Or if you want to create a new package... Package -> New Package Select a folder whose name matches the desired project name If you just click Save down the bottom you will get a very basic executable package with a Main module (but no main function)
To switch between packages in your workspace just double click on it in the Workspace pane.
That's all I can think of right now, I've exagerated a bit when I said "unusable". Leksah is going to be an awesome editor, it's just not ready yet for me.
Thanks for the feedback, please let us know if you think of anything else.
As well as the google forum we now also have #leksah on IRC.
Hamish_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe

On 5 Aug 2010, at 06:10, aditya siram wrote:
This is slightly OT, but is there a way of getting some Emacs keybindings in Leksah?
You can add them to the keymap.lkshk, but you will be limited to adding things leksah has commands for. If you do make some bindings please share them. We are working on integrating Yi as our editor instead of GtkSourceView and it has emacs keybindings. This integration is still in the early stages and I would not recommend trying to use it yet (unless you happen to have time to help out). Hamish

On Wed, Aug 4, 2010 at 8:01 PM, Hamish Mackenzie
I use Leksah and have done since I started contributing to it. The best way to make it work for you is to use Leksah to fix what you don't like about Leksah ;-) Failing that giving good feedback about bugs and missing features is the next best thing.
I did check the bug/feature tracker, and most issues I have are already there, but with a low priority. I could try to contribute, but I'm both lazy and unsure I can be of help
On 3 Aug 2010, at 18:48, David Virebayre wrote:
Trying code completion in comments on string constants, for example. Code completion makes the text jump if you're editing near the bottom of the editor area.
I like the "tocandy" feature but then it breaks alignment if you open the file in another editor. Something probably fixable by editing the candy file.
Just out of interest which of the candy replacements caused problems. Some of them (such as ->) already are set to include spaces to pad out differences.
For example, . Here's an example without, and with candy : listeEtageres = flip zip [1..] -- on les numérote . nub -- on élimine les doublons . sort -- on les trie . map simple -- on ne garde que le type et la position $ listeEtagTot -- on part de la liste totale des étagères where simple (_arm,tpe,pos) = (tpe,pos) f n (t,p) = (n,t,p) -------------------------------- listeEtageres = flip zip [1..] -- on les numérote ∘nub -- on élimine les doublons ∘sort -- on les trie ∘map simple -- on ne garde que le type et la position $ listeEtagTot -- on part de la liste totale des étagères where simple (_arm,tpe,pos) = (tpe,pos) f n (t,p) = (n,t,p) -------------------------------------------
Does your existing editor handle candy better? If so how? It doesn't handle them at all :)
Thanks for the feedback, please let us know if you think of anything else.
This is an example of how i'm confused. In this example, I'm trying to load a single file. It's for test purposes only, I only need it made by ghc --make, I don't need a cabal package. $ cd code/euler $ leksah Euler.hs leksah loads with my previous package loaded. Here, I hoped it'd open the file I mentionned on the command line. Now, I need to close the package or workspace I'm working on, but I'm not sure which. as there's no such option in the Package menu, I suppose I have to close the workspace. I close it, but my source file remains open. I close it. Since I want to see if 'leksah file' works, I close leksah and I'm back at the shell. $ leksah Euler.hs I back again in leksah, this time with no package/workspace opened, but my Euler.hs file did not open either. back to the shell again $ leksah -v Leksah the Haskell IDE, version 0.8.0.6 $ leksah --help Leksah the Haskell IDE Usage: leksah [OPTION...] files... -v --version Show the version number of ide -l NAME --loadSession=NAME Load session -h --help Display command line options -e Verbosity --verbosity=Verbosity One of DEBUG, INFO, NOTICE, WARNING, ERROR, CRITICAL, ALERT, EMERGENCY According to this help, I should be able to give it a file on the commande line, but it seems it does nothing. No message to tell me what's wrong. Also, there's an option to load a session. What's a session ? the IDE tells of workspace and package, how is that related to sessions ? anyway, back to leksah. I open my file Euler.hs. I can't seem to use the browser if I don't define a package. I click several times the menu Package->New package, but nothing happens I click also Package->Edit package. After a few clicks, I try Package->Edit flags and leksah exits without warning. On the shell, I see ------ Needs an open workspace Needs an open workspace No active package to edit Needs an open workspace Needs an open workspace No active package to edit leksah: Can't get pane ***lost connection ***lost last connection - exiting leksah-server: ExitSuccess ***lost last connection - waiting ExitSuccess ---- So I understand why the package menus didn't work, but there was no alert while I was in leksah. And it did crash when I clicked on Package->Edit flags (reproductible) Now I create a workspace since I have to. On the browser I still don't have access to my file. Make workspace does nothing, and tells me nothing. I suspect I need a package. So I'm creating a package. When I click save, it creates a Main.hs file for me. Right now I'm kind of annoyed, I just wanted to edit Euler.hs, add another problem to it, compile, run, and get on with something else. That's usually where I close leksah, and lauch kate. For another programs (that compile fine with ghc --make), I didn't bother making the package. But I had to find out the package dependencies by building, checking where it fails, and trying to add a package to the dependency list. Maybe there's a better way, didn't find it.
As well as the google forum we now also have #leksah on IRC.
I'm subscribed on the mailing list, it seems inactive. I'll find and have a look at the forum. David.

On 5 Aug 2010, at 21:12, David Virebayre wrote:
For example, .
Here's an example without, and with candy :
listeEtageres = flip zip [1..] -- on les numérote . nub -- on élimine les doublons . sort -- on les trie . map simple -- on ne garde que le type et la position $ listeEtagTot -- on part de la liste totale des étagères where simple (_arm,tpe,pos) = (tpe,pos) f n (t,p) = (n,t,p) -------------------------------- listeEtageres = flip zip [1..] -- on les numérote ∘nub -- on élimine les doublons ∘sort -- on les trie ∘map simple -- on ne garde que le type et la position $ listeEtagTot -- on part de la liste totale des étagères where simple (_arm,tpe,pos) = (tpe,pos) f n (t,p) = (n,t,p) -------------------------------------------
I can't think of a solution to this that will work for people who don't care about non candy alignment and want " . " to appear as a single character. I am afraid for the foreseeable you only have two options 1) Turn of candy 2) Edit your candy configuration file
Does your existing editor handle candy better? If so how? It doesn't handle them at all :)
Switch it off then. You won't miss it :-)
Thanks for the feedback, please let us know if you think of anything else.
This is an example of how i'm confused. In this example, I'm trying to load a single file. It's for test purposes only, I only need it made by ghc --make, I don't need a cabal package.
$ cd code/euler $ leksah Euler.hs
Ok so the problem here is that for leksah to work properly we really want a .cabal file. The other issue is that you can only have one cabal file per directory. This came up recently on the Leksah group and I have been pondering what to do. Can you try out this... ~/haskell/test$ cat ~/bin/cabal_quick_init #!/bin/sh SOURCE_FILE=$1 CABAL_NAME=`basename -s .lhs $SOURCE_FILE` CABAL_NAME=`basename -s .hs $CABAL_NAME` echo Creating Cabal Package $CABAL_NAME echo For file $SOURCE_FILE mkdir $CABAL_NAME.package || exit cd $CABAL_NAME.package || exit cabal init -n -p $CABAL_NAME --is-executable --source-dir=.. || exit sed -e "s/-- *[mM]ain-[iI]s *\:/Main-is:$SOURCE_FILE/" -i "" $CABAL_NAME.cabal || exit ~/haskell/test$ cabal_quick_init Euler.hs Creating Cabal Package Euler For file Euler.hs Generating LICENSE... Warning: unknown license type, you must put a copy in LICENSE yourself. Generating Setup.hs... Generating Euler.cabal... Warning: no synopsis given. You should edit the .cabal file and add one. You may want to edit the .cabal file and add a Description field. This will make a Euler/Euler.cabal file. You can then simply add that .cabal file to your workspace (right click in the Workspace pane). If this works I will add something like it in Leksah as Package -> Cabalize Existing Code. You will then be asked to choose a Main source file and if you need the package to be in a subdirectory. I'll try to fix "leksah Euler.hs" so it does the following * if the file belongs to an package in the workspace open the file and activate the package * if not ask the user if they want to simply open it or cabalize it
So I understand why the package menus didn't work, but there was no alert while I was in leksah. And it did crash when I clicked on Package->Edit flags (reproductible)
Now I create a workspace since I have to. On the browser I still don't have access to my file. Make workspace does nothing, and tells me nothing. I suspect I need a package.
This is a bit crap. We have been thinking of adding a default workspace. But perhaps a better/simple solution is to prompt the user whenever this happens and ask if they would like to create a workspace or open an existing one.
So I'm creating a package. When I click save, it creates a Main.hs file for me. Right now I'm kind of annoyed, I just wanted to edit Euler.hs, add another problem to it, compile, run, and get on with something else. That's usually where I close leksah, and lauch kate.
For another programs (that compile fine with ghc --make), I didn't bother making the package. But I had to find out the package dependencies by building, checking where it fails, and trying to add a package to the dependency list. Maybe there's a better way, didn't find it.
We do plan to fix this in the same way we resolve missing imports. I had a look to see if I could do it when a user cabalizes the source, but "ghc --make -v" does not include the packages automatically loaded in its output. Instead we will need to wait for the error then resolve it when the user presses Ctrl+R. Hamish

On Fri, Aug 6, 2010 at 6:11 AM, Hamish Mackenzie
On 5 Aug 2010, at 21:12, David Virebayre wrote:
Can you try out this...
~/haskell/test$ cat ~/bin/cabal_quick_init #!/bin/sh
SOURCE_FILE=$1 CABAL_NAME=`basename -s .lhs $SOURCE_FILE` CABAL_NAME=`basename -s .hs $CABAL_NAME` echo Creating Cabal Package $CABAL_NAME echo For file $SOURCE_FILE mkdir $CABAL_NAME.package || exit cd $CABAL_NAME.package || exit cabal init -n -p $CABAL_NAME --is-executable --source-dir=.. || exit sed -e "s/-- *[mM]ain-[iI]s *\:/Main-is:$SOURCE_FILE/" -i "" $CABAL_NAME.cabal || exit
This script doesn't word as-is for me. basename doesn't have a -s option, but that's easily corrected. Then, I couldn't get the sed command to work, so I edited manually the cabal file to modify and uncomment the Main-is line.
This will make a Euler/Euler.cabal file. You can then simply add that .cabal file to your workspace (right click in the Workspace pane).
Actually it makes a Euler.package/Euler.cabal file. Minor detail :)
I'll try to fix "leksah Euler.hs" so it does the following * if the file belongs to an package in the workspace open the file and activate the package * if not ask the user if they want to simply open it or cabalize it
That would be great.
We do plan to fix this in the same way we resolve missing imports. I had a look to see if I could do it when a user cabalizes the source, but "ghc --make -v" does not include the packages automatically loaded in its output. Instead we will need to wait for the error then resolve it when the user presses Ctrl+R.
Continuing on my Euler.hs example, I then created the cabal package with your script. Added the package, then tried to build. ../Euler.hs:1:0: Failed to load interface for `Prelude': It is a member of the hidden package `base'. Perhaps you need to add `base' to the build-depends in your .cabal file. It is a member of the hidden package `base-3.0.3.2'. Perhaps you need to add `base' to the build-depends in your .cabal file. Use -v to see a list of the files searched for. I didn't find a way to automatically fill the dependencies, Ctrl-R doesn't seem to do something. I added base >= 4 using the package editor, then it build. By the way, did I mention you guys are doing an awesome job with leksah ? David.

On 6 Aug 2010, at 19:33, David Virebayre wrote:
Continuing on my Euler.hs example, I then created the cabal package with your script. Added the package, then tried to build.
../Euler.hs:1:0: Failed to load interface for `Prelude': It is a member of the hidden package `base'. Perhaps you need to add `base' to the build-depends in your .cabal file. It is a member of the hidden package `base-3.0.3.2'. Perhaps you need to add `base' to the build-depends in your .cabal file. Use -v to see a list of the files searched for.
I didn't find a way to automatically fill the dependencies, Ctrl-R doesn't seem to do something. I added base >= 4 using the package editor, then it build.
Yes Ctrl+R currently only fixes missing "import" errors where you called a function in a package you are using. It does this by adding "import X ( f )" to your source. We have had plans for a while to extend this so it can handle these "hidden package" errors too by updating the .cabal file.
By the way, did I mention you guys are doing an awesome job with leksah ?
Thanks Hamish

For another programs (that compile fine with ghc --make), I didn't bother making the package. But I had to find out the package dependencies by building, checking where it fails, and trying to add a package to the dependency list. Maybe there's a better way, didn't find it.
We do plan to fix this in the same way we resolve missing imports. I had a look to see if I could do it when a user cabalizes the source, but "ghc --make -v" does not include the packages automatically loaded in its output. Instead we will need to wait for the error then resolve it when the user presses Ctrl+R.
I looked into this for Vim's haskellmode (would also be nice for cabal itself), never got the time to implement more than ':show packages', but perhaps this info helps you along: - 'ghc -v -e ..' instead of 'ghc -v --make ..' avoids the temporary files (assuming the file can be loaded by GHCi). - GHCi's ':show packages' was intended to provide package info, but seems to have bitrotted (you could try the undocumented internal ':show linker' and please file a ticket for ':show packages'). - to force loading without running the code, one might have to resort to ugly things like: ghc -v -e 'snd(main,1)' -e ':show linker' tst.hs - at which stage, we might as well use something like $ ghc -v -e 'snd(main,1)' tst.hs 2>&1 | grep Load Loading package ghc-prim ... linking ... done. Loading package integer-gmp ... linking ... done. Loading package base ... *** Parser: Loading package ffi-1.0 ... linking ... done. Loading package ghc-paths-0.1.0.6 ... linking ... done. Loading package array-0.3.0.1 ... linking ... done. Loading package containers-0.3.0.0 ... linking ... done. - for automatic package generation, one would also need the language extensions in use (among other things); unfortunately, the code for that in GHC stops at the first missing extension and is not yet written in a way that makes it easy to identify all such cases. - ideally, one would have ghc --show-languages and ghc --show-packages, or ghc --mk-cabal, or implement them via GHC API. Hth, Claus PS. if someone started a haskell-tools list (for cross-tool interests in haskellmodes, ides, ghc-api clients, etc., I would subscribe, though I can't afford the time to do much Haskell hacking at the moment)

I use kate as well, mostly out of habit. The autoindenter drives me
crazy though.
On Mon, Aug 2, 2010 at 1:10 PM, David Virebayre
On Sat, Jul 31, 2010 at 12:07 PM, Rustom Mody
wrote: Do most people who work with haskell use emacs/vi/eclipse or something else??
I mostly use kate, with a separate terminal window running ghci.
I've tried to use leksah but some minor annoying things make it unusable for me.
David. _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
-- Work is punishment for failing to procrastinate effectively.

On Jul 31, 2010, at 6:07 AM, Rustom Mody wrote:
Do most people who work with haskell use emacs/vi/eclipse or something else??
I work on Mac OS X. On one machine I have Haskell Platform installed. On the other I have ghc, cabal-install, and various packages installed by hand. To edit, I use SubEthaEdit with a Haskell mode for editing. To run, I use various command line (via standard OS X Terminal) tools. I use ghci for poking around, and debugging in the small. For most of my projects, even small ones, I create .cabal files and unit test/quick check suites, then use cabal to build and test. - Mark SubEthaEdit: http://www.codingmonkeys.de/subethaedit/ Hasekll mode for it: http://www.codingmonkeys.de/subethaedit/modes/Haskell.mode.zip
participants (14)
-
aditya siram
-
Alberto G. Corona
-
Claus Reinke
-
David Virebayre
-
Gábor Lehel
-
Hamish Mackenzie
-
Ivan Lazar Miljenovic
-
Joachim Breitner
-
Johan Tibell
-
Kevin Jardine
-
Mark Lentczner
-
Phyx
-
rustom
-
Rustom Mody