GHCi видит Happstack.Server, но GHC нет. В чем дело?

Я хочу установить и использовать Happstack, и то, что должно занять 10 минут, доставляет мне проблемы весь день. Во-первых, мне пришлось бороться с Cabal, и в конце концов выпотрошили его, установили свежую копию и обновили ее:

# I use Fedora 16... 
yum remove cabal-install
...
yum install cabal-install
...
cabal update
...
# I was told that a new version was available.
cabal install cabal-install
...
cabal install happstack-server

Ни одна из этих команд не сработала (или, по крайней мере, они не создавали впечатления).

Теперь, когда он установлен, я решил попробовать создать первый простой пример из руководства Crashcourse.

У меня это написано как:

-- server.hs
module Main where

import Happstack.Server (nullConf, simpleHTTp, toResponse, ok)

main :: IO()
main = simpleHTTP nullConf $ ok "Hello World!"

Когда я пытаюсь скомпилировать его с GHC, используя командную строку:

ghc --make -threaded server.hs -o server 

Я получаю следующую ошибку:

server.hs:3:8:
    Could not find module `Happstack.Server':
      Use -v to see a list of the files searched for.

и используя предложенный -v Опция дает:

Glasgow Haskell Compiler, Version 7.0.4, for Haskell 98, stage 2 booted by GHC version 7.0.4
Using binary package database: /usr/lib/ghc-7.0.4/package.conf.d/package.cache
wired-in package ghc-prim mapped to ghc-prim-0.2.0.0-6bf7b03ebc9c668817e4379b6796c0c2
wired-in package integer-gmp mapped to integer-gmp-0.2.0.3-4c5ab8b517f0b5d4ecf2153d5dfb7f41
wired-in package base mapped to base-4.3.1.0-4582a5bc64f22f03f6d960b4f15c981f
wired-in package rts mapped to builtin_rts
wired-in package template-haskell mapped to template-haskell-2.5.0.0-958de6d18727479331372229849ac6b8
wired-in package dph-seq not found.
wired-in package dph-par not found.
Hsc static flags: -static
*** Deleting temp files:
Deleting: 
*** Deleting temp dirs:
Deleting: 
ghc: no input files

Честно говоря, мне трудно это интерпретировать. В любом случае, я решил, что пришло время Google (снова!), Что привело меня к такому же вопросу (который, кстати, беспорядочный и не очень полезный), и предложил попробовать загрузить модуль в GHCi.

Я дал ему шанс, и, к моему удивлению, это работает:

> :m Happstack.Server
> simpleHTTP nullConf $ ok "Hello World!"
> 
> ...MODULE LOADING INFORMATION HERE...

так же как и это:

> :l server
> main

И беги, и веди себя как надо.

Короче говоря, это странно, Cabal доставляет много хлопот, и у меня пока нет особого опыта работы с базовым набором инструментов Haskell (пока).

У кого-нибудь есть идеи, как это исправить? Заранее спасибо!:)

1 ответ

Обычно лучше написать свой .cabal файл и использовать Cabal, чтобы построить свой проект. Пытаться cabal init чтобы начать быстро, и не забудьте добавить happstack-server к build-depends вашего исполняемого файла или библиотеки.

Если вы действительно хотите использовать ghc --make, возможно попробуйте передать что-то вроде -package happstack-server к этому.

Другие вопросы по тегам