Haskell Web Framework - PullRequest
       46

Haskell Web Framework

2 голосов
/ 21 апреля 2011

Я создаю простое веб-приложение, используя haskell.Сначала я использовал Snap впереди, и я смог запустить приложение, но я хочу добавить пользовательский ввод в приложение.
Я не смог найти способ получить пользовательские входные параметры для функции.Как я могу это сделать?

Другое дело, я также использовал фреймворк Happstack, я не могу импортировать "Happstack.Server".Я использую кабалу, настраиваю Happstack.Он был успешно установлен, но когда я пытаюсь импортировать его в «Happstack.Server», он выдает ошибку:

<no location info>:
Could not find module `Happstack.Server':
  it is not a module in the current program, or in any known package.

Если я запускаю свою программу, используя ghc --make HelloWorld.hs -v, я получаю:

Glasgow Haskell Compiler, Version 6.12.1, for Haskell 98, stage 2 booted by GHC version 6.12.1
Using binary package database: /usr/lib/ghc-6.12.1/package.conf.d/package.cache
Using binary package database: /home/udeshika/.ghc/i386-linux-6.12.1/package.conf.d/package.cache
package happstack-6.0.0-0f0c2507d590ebd01e8601c8667ec809 is unusable due to missing or recursive dependencies:
  happstack-ixset-6.0.0-4e1b5476a551c4501c5734b22e0b280d happstack-server-6.0.3-6d71e7bb09489130538fb851a694b927 happstack-state-6.0.0-0e753e61d7092b6a5139e473113877a1 happstack-util-6.0.0-4156bd1331b7a0d62e0087101c9eba1c
package happstack-ixset-6.0.0-4e1b5476a551c4501c5734b22e0b280d is unusable due to missing or recursive dependencies:
  happstack-util-6.0.0-4156bd1331b7a0d62e0087101c9eba1c
package happstack-server-6.0.3-6d71e7bb09489130538fb851a694b927 is unusable due to missing or recursive dependencies:
  happstack-util-6.0.0-4156bd1331b7a0d62e0087101c9eba1c hslogger-1.1.4-90c801c802eec92e4e6a6f83d24d58d9 network-2.2.1.7-72dad7eb07ee7a683982f7475b8a449f network-bytestring-0.1.3.4-937fd511949a2d5ef21e86ec5306c791 sendfile-0.7.3-137cf51cc81a277d724637a7cd1e6b09
package happstack-state-6.0.0-0e753e61d7092b6a5139e473113877a1 is unusable due to missing or recursive dependencies:
  happstack-util-6.0.0-4156bd1331b7a0d62e0087101c9eba1c hslogger-1.1.4-90c801c802eec92e4e6a6f83d24d58d9
package happstack-util-6.0.0-4156bd1331b7a0d62e0087101c9eba1c is unusable due to missing or recursive dependencies:
  hslogger-1.1.4-90c801c802eec92e4e6a6f83d24d58d9 network-2.2.1.7-72dad7eb07ee7a683982f7475b8a449f
package hslogger-1.1.4-90c801c802eec92e4e6a6f83d24d58d9 is unusable due to missing or recursive dependencies:
...................

Ответы [ 3 ]

4 голосов
/ 21 апреля 2011
Функция

Snap's getParam позволяет получить параметры HTTP-запроса, указанные пользователем. Они могут быть в теле сообщения отправки формы или из строки запроса. Например, рассмотрим следующий код:

site = dir "mypage" pageHandler
pageHandler = do
    val <- getParam "foo"
    writeBS $ maybe "no value" id val

Если я запрашиваю URL «myapp.com/mypage?foo=bar», то в качестве ответа я буду видеть «bar». Если я пропущу часть «? Foo = bar», она вернет «no value».

3 голосов
/ 21 апреля 2011

Ваша установка испорчена. К сожалению, клика иногда так делает.

Лучше всего использовать ghc-pkg unregister для удаления всех пакетов happstack, hslogger и sendfile. Убедитесь, что они удалены из пользовательских и глобальных баз данных пакетов. (список ghc-pkg покажет вам, что установлено). После того, как вы удалите старые версии, сделайте, обновите cabal и установите cabsta happstack. Тогда все должно работать.

Что вы подразумеваете под «пользовательским вводом»? Вы имеете в виду HTML формы? Или что-то еще?

Этот раздел ускоренного курса может удовлетворить ваши потребности:

http://www.happstack.com/docs/crashcourse/RqData.html

Также возможно использовать пищеварительные функторы с Happstack, чтобы получить безопасную обработку типов. К сожалению, это еще не очень хорошо задокументировано. Хотя я считаю, что исходный код disgestive-функторов включает рабочий пример Happstack.

3 голосов
/ 21 апреля 2011

1) Убедитесь, что Happstack действительно установлен и доступен:

ghc-pkg list | grep Happstack

2) Что если вы попытаетесь импортировать Happstack.Server в ghci?

3) Лучше использовать cabal-dev или capri для установки таких вещей и создания песочницы

4) Snap и Yesod довольно новые, и они находятся в стадии разработки, Happstack довольно стабильный и прочный.

5) Какую ОС вы используете? Как вы установили haskell? Ubuntu + haskell 6.12 + Happstack работают из коробки

Что касается журнала, кажется, что кабальные пакеты как-то запутались. Я рекомендую вам удалить все пакеты из .cabal и .ghc, переустановить cabal, затем установить cabal-dev, как описано здесь:

http://www.reddit.com/r/haskell/comments/f3ykj/psa_use_cabaldev_to_solve_dependency_problems/

а потом повеселись с Хэппстаком. Некоторые парни на самом деле используют капри, это тоже работает.

...