1

这是我所做的:

  1. makdir happstack_01

  2. cabal-dev 安装 happstack-server

  3. 用“import Happstack.Server (nullConf, simpleHTTP, toResponse, ok)”编写典型的 helloworld.hs

  4. ghc -threading HelloWorld.hs -o helloworld

我得到了:找不到模块“Happstack.Server”

这是非常明显的错误。但更令我惊讶的是,谷歌上没有这样简单的教程。

任何直觉都会很棒!

4

3 回答 3

3

既然你想要一个小教程,我正在写下我是如何让它工作的。不过,我使用 cabal 而不是 cabal-dev(如果你在乎,请告诉我,我可以多玩一点)....

> cabal install happstack-server
> mkdir sample
> cd sample

然后我创建了文件sample.hs

import Happstack.Server

main = simpleHTTP nullConf $ return "hello, world!"

我编译了它

> ghc sample.hs

(这似乎是您在查找库时遇到问题的地方......您可能想检查 ~/.ghc//package.conf.d/happstack-server-7.3.1-.conf 和 ~/.cabal /packages/hackage.haskell.org/happstack-server/ 存在以验证下载)

然后运行服务器

./sample

并验证它是否可以使用curl

> curl http://127.0.0.1:8000

这应该回应

hello, world!
于 2013-12-29T03:03:39.233 回答
3

这是一组非常简单的、Cabalized 和沙盒构建的说明。

$ mkdir happstack01 && cd happstack01/
$ cabal init .
$ <CR><CR><CR><CR><CR><CR><CR><CR><CR>   1   <CR><CR><CR>
$ mkdir src
$ touch src/Main.hs
$ vi happstack-01.cabal

happstack01.cabal

...

library
  exposed-modules:
    Main
  build-depends:       base >=4.6 && <4.7
                     , happstack-server
  hs-source-dirs:      src
  default-language:    Haskell2010

然后

$ cabal sandbox init
$ cabal install --only-dependencies
$ vi src/Main.hs

src/Main.hs

import Happstack.Server

main :: IO ()
main = simpleHTTP nullConf $ return "Hello sandbox!"

在沙盒构建时喝杯咖啡。

$ cabal repl
> main

在此之后,我通常会executable在 Cabal 文件中添加一个条目,然后开始构建服务器。

于 2013-12-29T04:46:57.053 回答
0

好的,我想通了。GHC 不会重新识别本地 sanboxed 库。至少我的 GHC --version 7.6.3 没有。因此,我将不得不对我的项目进行 cabalize 以使沙盒库工作。

于 2013-12-29T03:06:15.337 回答