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
к этому.