开发者

Install Haskell module on Windows 7

开发者 https://www.devze.com 2023-02-15 10:31 出处:网络
Yesterday I tried to install a Haskell-module via cabal, in order to get aquainted with the installation of modules in Haskell. I had to install cabal first.

Yesterday I tried to install a Haskell-module via cabal, in order to get aquainted with the installation of modules in Haskell. I had to install cabal first.

My System: Windows 7

Haskell-Compiler Version: GHC 7.0.2 (Link http://www.haskell.org/ghc/download)

Cabal: http://haskell.org/cabal/download.html

I will describe the process step by step, hoping that you may specify my wrong doings during both cabal and the package installation with cabal.

The procedure:

  1. Installed Haskell Compiler GHC 7.0.2

    Starting GHCi it from the Windows 7 start menu, gives following output in a DOS-window:

    GHCi, version 7.0.2: Website  :? for help .
    Loading package ghc-prim ... linking ... done.
    Loading package integer-gmp ... linking ... done.
    Loading package base ... linking ... done.
    Loading package ffi-1.0 ... linking ... done.
    Prelude>                                                 
    

    So far so good: Every function inside the base packages is accessible and functions just the way its supposed to.

    Conclusion: The GHCi installation contains no erroneous steps.

  2. Downloaded cabal.exe from source (see introduction), copied it into C:\ghc\ghc-7.0.2\bin (which is added into %Path%-variables)

  3. Downloaded cabal-install-0.8.2.tar.gz as the site advises users that the packeage is needed for a clean install.
  4. Opened new dos prompt window
  5. Typed cabal update (as advised by site), it did update the list and returned to user prompt mode
  6. Typed cd C:\pathwhere\cabal-install-0.8.2.tar.gz (switched into the directory where the cabal-install file is located)
  7. Typed cabal install cabal-install-0.8.2, thereafter the installation started creating following output in the dos-box:

    Resolving dependencies...
    Downloading containers-0.3.0.0...
    Configuring containers-0.3.0.0...
    Preprocessing library containers-0.3.0.0...
    Building containers-0.3.0.0...
    [1 of 7] Compiling Data.Sequence    ( Data\Sequence.hs, dist\build\Data\Sequence.o )
    [2 of 7] Compiling Data.Set         ( Data\Set.hs, dist\build\Data\Set.o )
    [3 of 7] Compiling Data.Map         ( Data\Map.hs, dist\build\Data\Map.o )
    [4 of 7] Compiling Data.IntSet      ( Data\IntSet.hs, dist\build\Data\IntSet.o )
    [5 of 7] Compiling Data.IntMap      ( Data\IntMap.hs, dist\build\Data\IntMap.o )
    [6 of 7] Compiling Data.Tree        ( Data\Tree.hs, dist\build\Data\Tree.o )
    [7 of 7] Compiling Data.Graph       ( Data\Graph.hs, dist\build\Data\Graph.o )
    cabal: ar is required but it could not be found.
    Downloading filepath-1.1.0.4...
    Configuring filepath-1.1.0.4...
    Preprocessing library filepath-1.1.0.4...
    Building filepath-1.1.0.4...
    [1 of 3] Compiling System.FilePath.Posix ( System\FilePath\Posix.hs, dist\build\System\FilePath\Posix.o )
    [2 of 3] Compiling System.FilePath.Windows ( System\FilePath\Windows.hs, dist\build\System\FilePath\Windows.o )
    [3 of 3] Compiling System.FilePath  ( System\FilePath.hs, dist\build\System\FilePath.o )
    cabal: ar is required but it could not be found.
    Downloading parsec-2.1.0.1...
    Configuring parsec-2.1.0.1...
    Preprocessing library parsec-2.1.0.1...
    Building parsec-2.1.0.1...
    [ 1 of 10] Compiling Text.ParserCombinators.Parsec.Pos ( Text\ParserCombinators\Parsec\Pos.hs, dist\build\Text\ParserCombinators\Parsec\Pos.o )
    [ 2 of 10] Compiling Text.ParserCombinators.Parsec.Error ( Text\ParserCombinators\Parsec\Error.hs, dist\build\Text\ParserCombinators\Parsec\Error.o )
    [ 3 of 10] Compiling Text.ParserCombinators.Parsec.Prim ( Text\ParserCombinators\Parsec\Prim.hs, dist\build\Text\ParserCombinators\Parsec\Prim.o )
    [ 4 of 10] Compiling Text.ParserCombinators.Parsec.Char ( Text\ParserCombinators\Parsec\Char.hs, dist\build\Text\ParserCombinators\Parsec\Char.o )
    [ 5 of 10] Compiling Text.ParserCombinators.Parsec.Combinator ( Text\ParserCombinators\Parsec\Combinator.hs, dist\build\Text\ParserCombinators\Parsec\Combinator.o )
    [ 6 of 10] Compiling Text.ParserCombinators.Parsec.Expr ( Text\ParserCombinators\Parsec\Expr.hs, dist\build\Text\ParserCombinators\Parsec\Expr.o )
    [ 7 of 10] Compiling Text.ParserCombinators.Parsec ( Text\ParserCombinators\Parsec.hs, dist\build\Text\ParserCombinators\Parsec.o )
    [ 8 of 10] Compiling Text.ParserCombinators.Parsec.Token ( Text\ParserCombinators\Parsec\Token.hs, dist\build\Text\ParserCombinators\Parsec\Token.o )
    [ 9 of 10] Compiling Text.ParserCombinators.Parsec.Perm ( Text\ParserCombinators\Parsec\Perm.hs, dist\build\Text\ParserCombinators\Parsec\Perm.o )
    [10 of 10] Compiling Text.ParserCombinators.Parsec.Language ( Text\ParserCombinators\Parsec\Language.hs, dist\build\Text\ParserCombinators\Parsec\Language.o )
    cabal: ar is required but it could not be found.
    Downloading time-1.1.4...
    [1 of 1] Compiling Main             ( C:\Users\altug\AppData\Local\Temp\time-1.1.43528time-1.1.4\Setup.hs, C:\Users\altug\AppData\Local\Temp\time-1.1.43528\time-1.1.4\dist\setup\Main.o )
    C:\Users\altug\AppData\Local\Temp\time-1.1.43528\time-1.1.4\Setup.hs:5:1:
        Warning: In the use of `runTests'
                 (imported from Distribution.Simple, but defined in Distribution.Simple.UserHooks):
                 Deprecated: "Please use the new testing interface instead!"
    Linking C:\Users\altug\AppData\Local\Temp\time-1.1.43528\time-1.1.4\dist\setup\setup.exe ...
    Configuring time-1.1.4...
    Preprocessing library time-1.1.4...
    Building time-1.1.4...
    [ 1 of 24] Compiling Data.Time.Clock.CTimeval ( Data\Time\Clock\CTimeval.hs, dist\build\Data\Time\Clock\CTimeval.o )
    [ 2 of 24] Compiling Data.Time.Clock.Scale ( Data\Time\Clock\Scale.hs, dist\build\Data\Time\Clock\Scale.o )
    [ 3 of 24] Compiling Data.Time.Calendar.Private ( Data\Time\Calendar\Private.hs, dist\build\Data\Time\Calendar\Private.o )
    [ 4 of 24] Compiling Data.Time.Calendar.MonthDay ( Data\Time\Calendar\MonthDay.hs, dist\build\Data\Time\Calendar\MonthDay.o )
    [ 5 of 24] Compiling Data.Time.Calendar.Days ( Data\Time\Calendar\Days.hs, dist\build\Data\Time\Calendar\Days.o )
    [ 6 of 24] Compiling Data.Time.Calendar.OrdinalDate ( Data\Time\Calendar\OrdinalDate.hs, dist\build\Data\Time\Calendar\OrdinalDate.o )
    [ 7 of 24] Compiling Data.Time.Calendar.Gregorian ( Data\Time\Calendar\Gregorian.hs, dist\build\Data\Time\Calendar\Gregorian.o )
    [ 8 of 24] Compiling Data.Time.Calendar.WeekDate ( Data\Time\Calendar\WeekDate.hs, dist\build\Data\Time\Calendar\WeekDate.o )
    [ 9 of 24] Compiling Data.Time.Calendar.JulianYearDay ( Data\Time\Calendar\JulianYearDay.hs, dist\build\Data\Time\Calendar\JulianYearDay.o )
    [10 of 24] Compiling Data.Time.Calendar.Julian ( Data\Time\Calendar\Julian.hs, dist\build\Data\Time\Calendar\Julian.o )
    [11 of 24] Compiling Data.Time.Clock.UTC ( Data\Time\Clock\UTC.hs, dist\build\Data\Time\Clock\UTC.o )
    [12 of 24] Compiling Data.Time.Clock.POSIX ( Data\Time\Clock\POSIX.hs, dist\build\Data\Time\Clock\POSIX.o )
    [13 of 24] Compiling Data.Time.Clock.UTCDiff ( Data\Time\Clock\UTCDiff.hs, dist\build\Data\Time\Clock\UTCDiff.o )
    [14 of 24] Compiling Data.Time.Clock  ( Data\Time\Clock.hs, dist\build\Data\Time\Clock.o )
    [15 of 24] Compiling Data.Time.LocalTime.TimeZone ( Data\Time\LocalTime\TimeZone.hs, dist\build\Data\Time\LocalTime\TimeZone.o )
    [16 of 24] Compiling Data.Time.LocalTime.TimeOfDay ( Data\Time\LocalTime\TimeOfDay.hs, dist\build\Data\Time\LocalTime\TimeOfDay.o )
    [17 of 24] Compiling Data.Time.Calendar ( Data\Time\Calendar.hs, dist\build\Data\Time\Calendar.o )
    [18 of 24] Compiling Data.Time.Calendar.Easter ( Data\Time\Calendar\Easter.hs, dist\build\Data\Time\Calendar\Easter.o )
    [19 of 24] Compiling Data.Time.LocalTime.LocalTime ( Data\Time\LocalTime\LocalTime.hs, dist\build\Data\Time\LocalTime\LocalTime.o )
    [20 of 24] Compiling Data.Time.LocalTime ( Data\Time\LocalTime.hs, dist\build\Data\Time\LocalTime.o )
    [21 of 24] Compiling Data.Time.Clock.TAI ( Data\Time\Clock\TAI.hs, dist\build\Data\Time\Clock\TAI.o )
    [22 of 24] Compiling Data.Time.Format.Parse ( Data\Time\Format\Parse.hs, dist\build\Data\Time\Format\Parse.o )
    [23 of 24] Compiling Data.Time.Format ( Data\Time\Format.hs, dist\build\Data\Time\Format.o )
    [24 of 24] Compiling Data.Time        ( Data\Time.hs, dist\build\Data\Time.o )
    Registering time-1.1.4...
    Installing library in
    C:\Users\altug\AppData\Roaming\cabal\time-1.1.4\ghc-7.0.2
    Registering time-1.1.4...
    Downloading random-1.0.0.3...
    Configuring random-1.0.0.3...
    Preprocessing library random-1.0.0.3...
    Building random-1.0.0.3...
    [1 of 1] Compiling System.Random    ( System\Random.hs, dist\build\System\Random.o )
    cabal: ar is required but it could not be found.
    Downloading transformers-0.2.2.0...
    Configuring transformers-0.2.2.0...
    Preprocessing library transformers-0.2.2.0...
    Building transformers-0.2.2.0...
    [ 1 of 21] Compiling Data.Functor.Product ( Data\Functor\Product.hs, dist\buildData\Functor\Product.o )
    [ 2 of 21] Compiling Data.Functor.Constant ( Data\Functor\Constant.hs, dist\build\Data\Functor\Constant.o )
    [ 3 of 21] Compiling Data.Functor.Compose ( Data\Functor\Compose.hs, dist\build\Data\Functor\Compose.o )
    [ 4 of 21] Compi开发者_如何转开发ling Data.Functor.Identity ( Data\Functor\Identity.hs, dist\build\Data\Functor\Identity.o )
    [ 5 of 21] Compiling Control.Monad.Trans.Class ( Control\Monad\Trans\Class.hs, dist\build\Control\Monad\Trans\Class.o )
    [ 6 of 21] Compiling Control.Monad.IO.Class ( Control\Monad\IO\Class.hs, dist\build\Control\Monad\IO\Class.o )
    [ 7 of 21] Compiling Control.Monad.Trans.Cont ( Control\Monad\Trans\Cont.hs, dist\build\Control\Monad\Trans\Cont.o )
    [ 8 of 21] Compiling Control.Monad.Trans.Error ( Control\Monad\Trans\Error.hs, dist\build\Control\Monad\Trans\Error.o )
    [ 9 of 21] Compiling Control.Monad.Trans.Identity ( Control\Monad\Trans\Identity.hs, dist\build\Control\Monad\Trans\Identity.o )
    [10 of 21] Compiling Control.Monad.Trans.List ( Control\Monad\Trans\List.hs, dist\build\Control\Monad\Trans\List.o )
    [11 of 21] Compiling Control.Monad.Trans.Maybe ( Control\Monad\Trans\Maybe.hs, dist\build\Control\Monad\Trans\Maybe.o )
    [12 of 21] Compiling Control.Monad.Trans.Reader ( Control\Monad\Trans\Reader.hs, dist\build\Control\Monad\Trans\Reader.o )
    [13 of 21] Compiling Control.Monad.Trans.RWS.Lazy ( Control\Monad\Trans\RWS\Lazy.hs, dist\build\Control\Monad\Trans\RWS\Lazy.o )
    [14 of 21] Compiling Control.Monad.Trans.RWS ( Control\Monad\Trans\RWS.hs, dist\build\Control\Monad\Trans\RWS.o )
    [15 of 21] Compiling Control.Monad.Trans.RWS.Strict ( Control\Monad\Trans\RWS\Strict.hs, dist\build\Control\Monad\Trans\RWS\Strict.o )
    [16 of 21] Compiling Control.Monad.Trans.State.Lazy ( Control\Monad\Trans\State\Lazy.hs, dist\build\Control\Monad\Trans\State\Lazy.o )
    [17 of 21] Compiling Control.Monad.Trans.State ( Control\Monad\Trans\State.hs, dist\build\Control\Monad\Trans\State.o )
    [18 of 21] Compiling Control.Monad.Trans.State.Strict ( Control\Monad\Trans\State\Strict.hs, dist\build\Control\Monad\Trans\State\Strict.o )
    [19 of 21] Compiling Control.Monad.Trans.Writer.Lazy ( Control\Monad\Trans\Writer\Lazy.hs, dist\build\Control\Monad\Trans\Writer\Lazy.o )
    [20 of 21] Compiling Control.Monad.Trans.Writer ( Control\Monad\Trans\Writer.hs, dist\build\Control\Monad\Trans\Writer.o )
    [21 of 21] Compiling Control.Monad.Trans.Writer.Strict ( Control\Monad\Trans\Writer\Strict.hs, dist\build\Control\Monad\Trans\Writer\Strict.o )
    cabal: ar is required but it could not be found.
    Downloading zlib-0.5.3.1...
    Configuring zlib-0.5.3.1...
    Preprocessing library zlib-0.5.3.1...
    Building zlib-0.5.3.1...
    [1 of 5] Compiling Codec.Compression.Zlib.Stream ( dist\build\Codec\Compression\Zlib\Stream.hs, dist\build\Codec\Compression\Zlib\Stream.o )
    [2 of 5] Compiling Codec.Compression.Zlib.Internal ( Codec\Compression\Zlib\Internal.hs, dist\build\Codec\Compression\Zlib\Internal.o )
    [3 of 5] Compiling Codec.Compression.Zlib.Raw ( Codec\Compression\Zlib\Raw.hs, dist\build\Codec\Compression\Zlib\Raw.o )
    [4 of 5] Compiling Codec.Compression.Zlib ( Codec\Compression\Zlib.hs, dist\build\Codec\Compression\Zlib.o )
    [5 of 5] Compiling Codec.Compression.GZip ( Codec\Compression\GZip.hs, dist\build\Codec\Compression\GZip.o )
    cabal: ar is required but it could not be found.
    cabal: Error: some packages failed to install:
    Cabal-1.8.0.6 depends on filepath-1.1.0.4 which failed to install.
    HTTP-4000.1.1 depends on transformers-0.2.2.0 which failed to install.
    cabal-install-0.8.2 depends on zlib-0.5.3.1 which failed to install.
    containers-0.3.0.0 failed during the building phase. The exception was:
    ExitFailure 1
    directory-1.0.1.2 depends on filepath-1.1.0.4 which failed to install.
    filepath-1.1.0.4 failed during the building phase. The exception was:
    ExitFailure 1
    mtl-2.0.1.0 depends on transformers-0.2.2.0 which failed to install.
    network-2.3.0.2 depends on parsec-2.1.0.1 which failed to install.
    parsec-2.1.0.1 failed during the building phase. The exception was:
    ExitFailure 1
    process-1.0.1.5 depends on filepath-1.1.0.4 which failed to install.
    random-1.0.0.3 failed during the building phase. The exception was:
    ExitFailure 1
    transformers-0.2.2.0 failed during the building phase. The exception was:
    ExitFailure 1
    zlib-0.5.3.1 failed during the building phase. The exception was:
    ExitFailure 1
    

    My Conclusion:

    As one can easily see, the output indicates some errors, but I got no idea what they mean. I continued trying to install my algebra package focusing on making it availible to the Dos-Interpeter from step 1.

  8. Again in dos-box input prompt, I typed cabal install constructive-algebra, that created this output:

    Resolving dependencies...
    cabal: cannot configure algebra-0.0.0.1. It requires base >=3.0 && <4.1
    For the dependency on base >=3.0 && <4.1 there are these packages:
    base-3.0.3.1, base-3.0.3.2 and base-4.0.0.0. However none of them are available.
    base-3.0.3.1 was excluded because of the top level dependency base -any
    base-3.0.3.2 was excluded because of the top level dependency base -any
    base-4.0.0.0 was excluded because of the top level dependency base -any
    

I suppose that the package is not installed. I need someone who can explain, what exact steps I need to do in order to get modules working.

Thanks for reading this post and answering in way that makes me understand it AND the Interpreter and Compiler working.


The easiest way is to get the Haskell Platform like DasBoot recommended, but I'll try and answer your questions anyway:

1) For the first part of your question, your installs are failing because something's wrong with your path. the tool "ar" couldn't be found. ar is used when creating libraries. If you type just "ar" in a command window it should return something like

Usage: ar [emulation options] [-]{dmpqrstx}[abcfilNoPsSuvV] [member-name] [count ] archive-file file... ar -M [

If it doesn't then you need to add the folder containing ar (probably C:\ghc\ghc-7.0.2\mingw\bin) to your path env variable in windows.

2) Your algebra library won't install under 7.0.2, atleast not out of the box. Algebra has a dependency listed as "Dependencies: base >=3.0 && <4.1"

but ghc 7.0 comes with base 4.3. Which is why you received:

cabal: cannot configure algebra-0.0.0.1. It requires base >=3.0 && <4.1

For the dependency on base >=3.0 && <4.1 there are these packages:

base-3.0.3.1, base-3.0.3.2 and base-4.0.0.0. However none of them are available

Luckily, this can easily be fixed for this particulair package. just do

cabal unpack algebra

cd algebra-0.0.0.1

notepad algebra.cabal

change the 4.1 to a 4.4

cabal install

and that should do it


I installed the full package from Download Haskell This package includes cabal. I'm running it on win7, and haven't had any problems so far.

And FWIW, if you click on the download link in your post and then try to download the latest version there is a big message which suggests downloading the haskell platform from the link I gave.


the package name is constructive-algebra but what is it's module name? That module name is what you should use in ghci.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号