[Haskell-cafe] what's the best environment for haskell work?
David Virebayre
dav.vire+haskell at gmail.com
Fri Aug 6 03:33:40 EDT 2010
On Fri, Aug 6, 2010 at 6:11 AM, Hamish Mackenzie
<hamish.k.mackenzie at googlemail.com> wrote:
> 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.
More information about the Haskell-Cafe
mailing list