cabal-dev установить Happstack-сервер как

Вот что я сделал:

  1. макдир happstack_01

  2. cabal-dev установить happstack-сервер

  3. написать типичный helloworld.hs с помощью "import Happstack.Server (nullConf, simpleHTTP, toResponse, ok)"

  4. ghc -поточный HelloWorld.hs -o helloworld

и я получил: Не удалось найти модуль `Happstack.Server'

Это так очевидно неправильно. Но что меня больше удивляет, так это то, что в Google нет учебника для такой простой вещи, как эта.

Любая интуиция была бы потрясающей!

3 ответа

Решение

Это набор инструкций для очень простой, кабализованной и изолированной сборки.

$ 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 и начните строить сервер из этого.

Так как вы хотели небольшой учебник, я пишу, как я только что получил его на работу. Я использовал 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!

Хорошо, я понял это. GHC не будет регонизировать местных sanboxed библиотек. по крайней мере мой GHC - версия 7.6.3 этого не делает. Так что мне придется кабализовать свой проект, чтобы заставить песочниц работать.

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