2016-09-24 4 views
1

Ich versuche hier Haskell zu lernen (frag nicht warum), und ich beginne mit einem sehr einfachen Code, den ich sogar von Github kopiert habe.Stack schlägt fehl

So ist der Code folgendermaßen aus:

module Example() where 

import Network.HTTP 

-- Non HTTPS 

-- 1. Perform a basic HTTP get request and return the body 
get :: String -> IO String 
get url = simpleHTTP (getRequest url) >>= getResponseBody 

-- 2. Get the response code 
getCode :: String -> IO ResponseCode 
getCode url = simpleHTTP req >>= getResponseCode 
    where req = getRequest url 

Allerdings, wenn ich stack build betreibe ich diese:

slack-client-0.1.0.0: build 
Preprocessing library slack-client-0.1.0.0... 
[2 of 2] Compiling Example   (src\Example.hs, .stack-work\dist\b7fec021\ 
build\Example.o) 

D:\haskell\slack-client\src\Example.hs:3:1: error: 
    Failed to load interface for `Network.HTTP' 
    It is a member of the hidden package `HTTP-4000.3.3'. 
    Perhaps you need to add `HTTP' to the build-depends in your .cabal file. 
    Use -v to see a list of the files searched for. 

-- While building package slack-client-0.1.0.0 using: 
     C:\Users\Mihai\AppData\Roaming\stack\setup-exe-cache\x86_64-windows\setup- 
Simple-Cabal-1.24.0.0-ghc-8.0.1.exe --builddir=.stack-work\dist\b7fec021 build l 
ib:slack-client exe:slack-client-exe --ghc-options " -ddump-hi -ddump-to-file" 
    Process exited with code: ExitFailure 1 

Das ist mein .cabal Datei ist:

name:    slack-client 
version:    0.1.0.0 
synopsis:   Initial project template from stack 
description:   Please see README.md 
homepage:   https://github.com/githubuser/slack-client#readme 
license:    BSD3 
license-file:  LICENSE 
author:    Author name here 
maintainer:   [email protected] 
copyright:   2016 Author name here 
category:   Web 
build-type:   Simple 
-- extra-source-files: 
cabal-version:  >=1.10 

library 
    hs-source-dirs:  src 
    exposed-modules:  Lib 
    other-modules:  Example 
    build-depends:  base >= 4.7 && < 5 
    default-language: Haskell2010 

executable slack-client-exe 
    hs-source-dirs:  app 
    main-is:    Main.hs 
    other-modules:  Example 
    ghc-options:   -threaded -rtsopts -with-rtsopts=-N 
    build-depends:  base 
        , HTTP 
        , HTTP-Simple 
        , slack-client 
    default-language: Haskell2010 

test-suite slack-client-test 
    type:    exitcode-stdio-1.0 
    hs-source-dirs:  test 
    main-is:    Spec.hs 
    build-depends:  base 
        , HTTP-Simple 
        , slack-client 
    ghc-options:   -threaded -rtsopts -with-rtsopts=-N 
    default-language: Haskell2010 

source-repository head 
    type:  git 
    location: https://github.com/githubuser/slack-client 

Was bin ich falsch machen?

+0

'module Beispiel() where' sollte 'Modul Beispiel wo' oder' Modul Beispiel (get, getCode) wo 'lesen. So wie es ist, exportieren Sie nichts von 'Example' (Alle von Ihnen definierten Klassenexemplare werden trotzdem exportiert, weil die Klassen so funktionieren.) – Michael

+0

@Michael thanks! Das behebt das Problem jedoch nicht. – Comforse

Antwort

1

Wenn Sie Ihren `Beispiel Modul wollen ein Teil ausführbar zu sein, fügen Sie zu diesem Abschnitt

executable slack-client-exe 
    hs-source-dirs:  app 
    main-is:    Main.hs 

dieser Zeile: other-modules: Example.

Wenn Sie es wünschen, ein Teil der Bibliothek sein, ändern

library 
    hs-source-dirs:  src 
    exposed-modules:  Lib 

zu

library 
    hs-source-dirs:  src 
    exposed-modules:  Lib, Example 

Und einen Blick auf cabal documentation nehmen.

+0

Versucht jede Option, hat den gleichen Fehler. Muss ich etwas anderes als '' stack build'' ausführen? – Comforse

+0

Haben Sie 'Example.hs' in' src' verschoben und streichen Sie es aus der Zeilengruppe über 'slack-client-exe'? Sie müssen 'HTTP' zu' Build-depends' für die Bibliothek hinzufügen, da 'Example' es verwendet. Die Fehlermeldung sagt, dass es über ein Modul "Network.HTTP" bekannt ist, aber es ist nicht erlaubt, es zu betrachten, da die "HTTP" -Bibliothek nicht erwähnt wird. – Michael